-->
ラベル tomoyolinux の投稿を表示しています。 すべての投稿を表示
ラベル tomoyolinux の投稿を表示しています。 すべての投稿を表示

2011-10-20

tomoyo-toolsのバージョンを下げた

2.4.0にしたらtomoyo-editpolicyのdomain policy editorで設定した名前の行でEnterを押したら空になったので下げた。
$ eix tomoyo-tools -cI
[I] sys-apps/tomoyo-tools (2.3.0_p20110929@2011年10月20日): TOMOYO Linux tools
2.4で保存する場所が変わったかもしれない、
2.3にしてからdomain_policy.confを短くした、
などの理由で直ったかもしれないので、
2.4に再度上げて保存した設定ファイルを手動で移動すれば大丈夫かもしれないが試してはいない。



以下はメモです。

カーネルのバージョン。
$ uname -a
Linux amdgentoo 3.0.4-hardened-r1 #1 SMP Mon Oct 17 01:47:30 JST 2011 x86_64 AMD Phenom(tm) 9350e Quad-Core Processor AuthenticAMD GNU/Linux

関連するコンフィグ。(make menuconfigで設定)
$ grep -i tomoyo /usr/src/linux/.config
CONFIG_SECURITY_TOMOYO=y
CONFIG_DEFAULT_SECURITY_TOMOYO=y
CONFIG_DEFAULT_SECURITY="tomoyo"

tomoyo-editpolicyが重いので有効なdomain_policy.confのuse_profile 0の辺りを手動で消した。
たぶんセーブの仕方が悪いかもしれない。
<kernel> /etc/init.d/ntpd /lib64/rc/sh/runscript.sh /sbin/start-stop-daemon /usr/sbin/ntpd
use_profile 3

allow_read/write /dev/null
allow_create /var/run/ntpd.pid 0644
allow_write /var/run/ntpd.pid
allow_read /etc/ntp.conf
allow_ioctl socket:[family=2:type=2:protocol=17] 0x8912
allow_read /proc/\$/net/if_inet6
allow_ioctl socket:[family=2:type=2:protocol=17] 0x8913
allow_ioctl socket:[family=2:type=2:protocol=17] 0x891B
allow_ioctl socket:[family=2:type=2:protocol=17] 0x8919
allow_read /etc/nsswitch.conf
allow_read /etc/services
allow_read /var/lib/ntp/ntp.drift
allow_read /etc/resolv.conf
allow_read /etc/host.conf
allow_read /etc/hosts
allow_ioctl socket:[family=2:type=2:protocol=17] 0x541B
allow_read /etc/gai.conf
allow_create /var/lib/ntp/ntp.drift.TEMP 0644
allow_write /var/lib/ntp/ntp.drift.TEMP
allow_truncate /var/lib/ntp/ntp.drift.TEMP
allow_rename /var/lib/ntp/ntp.drift.TEMP /var/lib/ntp/ntp.drift
allow_read /dev/urandom
allow_read /dev/random
allow_create /var/run/ntpd.pid 0666
allow_create /var/lib/ntp/ntp.drift.TEMP 0666

<kernel> /etc/init.d/nginx /lib64/rc/sh/runscript.sh /sbin/start-stop-daemon /usr/sbin/nginx
use_profile 3

allow_read/write /var/run/nginx.pid
allow_unlink /var/run/nginx.pid
allow_write /var/log/nginx/error_log
allow_read /etc/nginx/nginx.conf
allow_read /etc/nsswitch.conf
allow_read /etc/passwd
allow_read /etc/group
allow_read /etc/nginx/mime.types
allow_read /etc/resolv.conf
allow_read /etc/host.conf
allow_read /etc/hosts
allow_write /var/log/nginx/localhost.access_log
allow_write /var/log/nginx/localhost.error_log
allow_ioctl socket:[family=2:type=1:protocol=6] 0x5421
allow_read/write /dev/null
allow_create /var/run/nginx.pid 0644
allow_ioctl socket:[family=1:type=1:protocol=0] 0x5421
allow_ioctl socket:[family=1:type=1:protocol=0] 0x5452
allow_read /proc/sys/kernel/ngroups_max
allow_ioctl anon_inode:[eventfd] 0x5421
allow_read /etc/nginx/conf/htpasswd
allow_read /var/www/\*/htdocs/\*.htm
allow_read /var/www/\*/htdocs/\*.html
allow_read /var/www/\*/htdocs/\*.ico
allow_read /var/www/\*/htdocs/\*.txt
allow_read /var/www/\*/htdocs/\{\*\}/\*.bz2
allow_read /var/www/\*/htdocs/\{\*\}/\*.css
allow_read /var/www/\*/htdocs/\{\*\}/\*.flv
allow_read /var/www/\*/htdocs/\{\*\}/\*.gif
allow_read /var/www/\*/htdocs/\{\*\}/\*.gz
allow_read /var/www/\*/htdocs/\{\*\}/\*.htm
allow_read /var/www/\*/htdocs/\{\*\}/\*.html
allow_read /var/www/\*/htdocs/\{\*\}/\*.ico
allow_read /var/www/\*/htdocs/\{\*\}/\*.jpeg
allow_read /var/www/\*/htdocs/\{\*\}/\*.jpg
allow_read /var/www/\*/htdocs/\{\*\}/\*.js
allow_read /var/www/\*/htdocs/\{\*\}/\*.pdf
allow_read /var/www/\*/htdocs/\{\*\}/\*.png
allow_read /var/www/\*/htdocs/\{\*\}/\*.tgz
allow_read /var/www/\*/htdocs/\{\*\}/\*.txt
allow_read /var/www/\*/htdocs/\{\*\}/\*.xml
allow_read /var/www/\*/htdocs/\{\*\}/\*.xz
allow_read /var/www/\*/htdocs/\{\*\}/\*.zip
allow_read /var/www/\*/tmp/\{\*\}/\*.png

<kernel> /usr/sbin/apache2
use_profile 3

allow_read /etc/apache2/httpd.conf
allow_read /etc/apache2/vhosts.d/default_vhost.include
allow_read /etc/nsswitch.conf
allow_read /etc/passwd
allow_read /etc/group
allow_read /etc/resolv.conf
allow_read /etc/host.conf
allow_read /etc/hosts
allow_read /etc/gai.conf
allow_read/write /var/run/apache2.pid
allow_unlink /var/run/apache2.pid
allow_truncate /var/run/apache2.pid
allow_read/write /tmp/session_mm_apache2handler0.sem
allow_unlink /tmp/session_mm_apache2handler0.sem
allow_write /var/log/apache2/error_log
allow_write /var/log/apache2/ssl_error_log
allow_write /var/log/apache2/access_log
allow_write /var/log/apache2/ssl_access_log
allow_write /var/log/apache2/ssl_request_log
allow_read /etc/apache2/magic
allow_read /etc/mime.types
allow_read /dev/urandom
allow_create /var/run/ssl_mutex 0644
allow_write /var/run/ssl_mutex
allow_unlink /var/run/ssl_mutex
allow_read/write /dev/null
allow_read /proc/sys/kernel/ngroups_max
allow_read /etc/php/apache2-php5.3/php.ini
allow_ioctl /etc/php/apache2-php5.3/php.ini 0x5401
allow_create /tmp/session_mm_apache2handler0.sem 0600
allow_read /etc/locales.conf
allow_read /etc/services
allow_read/write /usr/share/snmp/mibs/.index
allow_truncate /usr/share/snmp/mibs/.index
allow_read /etc/protocols
allow_read/write /dev/zero
allow_create /var/run/apache2.pid 0644
allow_read /etc/apache2/modules.d/\+\+_\*.conf
allow_read /etc/apache2/vhosts.d/\+\+_\*.conf
allow_read /etc/php/apache2-php5.3/ext/\*.ini
allow_ioctl /etc/php/apache2-php5.3/ext/\*.ini 0x5401
allow_read /etc/php/ext/\*.ini
allow_ioctl /etc/php/ext/\*.ini 0x5401
allow_read/write /tmp/.xcache.\*.lock
allow_unlink /tmp/.xcache.\*.lock
allow_create /tmp/.xcache.\*.lock 0666
allow_read /usr/share/snmp/mibs/\*.txt
allow_read /usr/lib\*/locale/locale-archive
allow_mksock /var/run/cgisock.\$ 0700
allow_chmod /var/run/cgisock.\$ 0700
allow_chown /var/run/cgisock.\$ 81
allow_unlink /var/run/cgisock.\$
allow_read /etc/ssl/apache2/\+\+\+\+-\+\+-\+\+/\*.pem
allow_read /var/www/\*/htdocs/.htaccess
allow_read /var/www/\*/htdocs/\*.php
allow_read /var/www/\*/htdocs/\{\*\}/.htaccess
allow_read /var/www/\*/htdocs/\{\*\}/\*.php
allow_read /var/www/\*/htdocs/\{\*\}/\*.php\+
allow_read /var/www/\*/htdocs/\*.php\+
allow_read /var/www/\*/htdocs/\{\*\}/\*.png
allow_read /var/www/\*/htdocs/\*.htm
allow_read /var/www/\*/htdocs/\*.html
allow_read /var/www/\*/htdocs/\*.ico
allow_read /var/www/\*/htdocs/\*.txt
allow_read /var/www/\*/htdocs/\{\*\}/\*.bz2
allow_read /var/www/\*/htdocs/\{\*\}/\*.css
allow_read /var/www/\*/htdocs/\{\*\}/\*.flv
allow_read /var/www/\*/htdocs/\{\*\}/\*.gif
allow_read /var/www/\*/htdocs/\{\*\}/\*.gz
allow_read /var/www/\*/htdocs/\{\*\}/\*.htm
allow_read /var/www/\*/htdocs/\{\*\}/\*.html
allow_read /var/www/\*/htdocs/\{\*\}/\*.ico
allow_read /var/www/\*/htdocs/\{\*\}/\*.jpeg
allow_read /var/www/\*/htdocs/\{\*\}/\*.jpg
allow_read /var/www/\*/htdocs/\{\*\}/\*.js
allow_read /var/www/\*/htdocs/\{\*\}/\*.pdf
allow_read /var/www/\*/htdocs/\{\*\}/\*.tgz
allow_read /var/www/\*/htdocs/\{\*\}/\*.txt
allow_read /var/www/\*/htdocs/\{\*\}/\*.xml
allow_read /var/www/\*/htdocs/\{\*\}/\*.xz
allow_read /var/www/\*/htdocs/\{\*\}/\*.zip
allow_read/write /mnt/share/svn/repos/\{\*\}/\*
allow_unlink /mnt/share/svn/repos/\{\*\}/\*
allow_truncate /mnt/share/svn/repos/\{\*\}/\*
allow_create /mnt/share/svn/repos/\{\*\}/\* 0600
allow_create /tmp/apr-tmp.\* 0600
allow_read/write /tmp/apr-tmp.\*
allow_unlink /tmp/apr-tmp.\*
allow_chmod /mnt/share/svn/repos/\{\*\}/\* 0644
allow_read/write /tmp/svn-tempfile.\*tmp
allow_unlink /tmp/svn-tempfile.\*tmp
allow_create /tmp/svn-tempfile.\*tmp 0666
allow_create /mnt/share/svn/repos/\{\*\}/\* 0664
allow_chmod /mnt/share/svn/repos/\{\*\}/\* 0664
allow_rename /mnt/share/svn/repos/\{\*\}/\* /mnt/share/svn/repos/\{\*\}/\*
allow_mkdir /mnt/share/svn/repos/\{\*\}/ 0777
allow_create /mnt/share/svn/repos/\{\*\}/\* 0666
allow_rmdir /mnt/share/svn/repos/\{\*\}/

<kernel> /etc/init.d/named /lib64/rc/sh/runscript.sh /sbin/start-stop-daemon /usr/sbin/named
use_profile 3

allow_write /var/run/named/session.key
allow_unlink /var/run/named/session.key
allow_write /var/run/named/named.pid
allow_unlink /var/run/named/named.pid
allow_read /etc/nsswitch.conf
allow_read /etc/passwd
allow_read /proc/sys/kernel/ngroups_max
allow_read /etc/group
allow_read/write /dev/null
allow_read /etc/ssl/openssl.cnf
allow_read /etc/bind/named.conf
allow_read /etc/bind/rndc.key
allow_read /etc/bind/bind.keys
allow_read /proc/\$/net/if_inet6
allow_create /var/run/named/named.pid 0644
allow_create /var/run/named/session.key 0600
allow_read /dev/random
allow_write /var/log/named/named.log
allow_read /var/bind/managed-keys.bind
allow_read /var/bind/pri/\*.zone
allow_read /var/bind/sec/\*.zone
allow_read /dev/urandom

exception_policy.confの手動で追加したと思われる部分。
initialize_domain /etc/init.d/named
allow_read /proc/self/\*
allow_read /proc/self/\{\*\}/\*
allow_read /proc/meminfo
allow_read /lib\$/\*.so
allow_read /usr/lib\$/\*.so
allow_read /usr/lib\$/\{\*\}/\*.so
allow_read /lib\$/\{\*\}/\*.so
allow_read /lib\$/\*.so.\+\*
allow_read /lib\$/\{\*\}/\*.so.\+\*
allow_read /usr/lib\$/\{\*\}/\*.so.\+\*
allow_read /usr/lib\$/\*.so.\+\*
allow_read /usr/lib64/gconv/gconv-modules.cache

2011-06-24

tomoyolinuxのnamedの設定追加

2.3系、1.8系は基本的なことをやる場合、違いはそんなに無いらしいです。
1.8系の場合でkuroboxHGでも動くことを確認しました。apacheのみ。
2.3系(2.6.38-hardened-r6, tomoyo-tools-2.3.0_p20100820)の場合の例です。

exception_policy.confに
initialize_domain /etc/init.d/named
を追加します。(初期化時にnamedが無い場合に必要)
tomoyo-editpolicy => ?でヘルプ。?で戻る。
tomoyo-editpolicy => w => e => a => initialize_domain xxx

学習後、domain_policy.confに
allow_read /var/bind/pri/\*.zone
allow_read /var/bind/sec/\*.zone
を追加します。
学習モード => 再起動 => 強制モード
tomoyo-editpolicy => @ => f => named => s => 1 => named再起動 => s => 3
それから修正。
tomoyo-editpolicy => namedの行で[Enter] => 設定一覧になる。
  => a => allow_read xxx => 要らない行に移動 => d => Yes など。

セーブ
tomoyo-savepolicy

ロード
/usr/sbin/tomoyo-loadpolicy -df < /etc/tomoyo/domain_policy.conf など。
/usr/sbin/tomoyo-loadpolicy -ef < /etc/tomoyo/exception_policy.conf など。

profile.conf, manager.conf は変更しないものとします。
tomoyo-editpolicy => w => p
tomoyo-editpolicy => w => m

いきなり強制モードだと後でallow_truncate xxxなどを手動で追加しないと再起動などで起動できないこともあります。
自動で追加したい場合はs => 1番で、エラーログだけ出してアクセス可能にする場合はs => 2番です。

1番の場合セーブは手動なのでセーブしないでOSを再起動すれば追加分は消えます。
/etc/tomoyo/以下に過去の設定が残るので、とりあえずセーブして差分を見れば良さそうです。

2番は設定終わったけど1週間ほど試運転するよ、と言う場合に使ったら良さそうです。

ソフトウェアを信用しない場合は、いきなり3番でいいです。
(勝手にメールを送る、たまにシステムファイルを消す、などの怪しいソフトを使う場合など)

マニュアル。
http://tomoyo.sourceforge.jp/2.3/








以下はメモです。

## exception_policy.conf
### /proc/self/ の参照OK。
+allow_read /proc/self/\*
+allow_read /proc/self/\{\*\}/\*

### /lib32/, /lib64/, の xxx.so の参照OK。
+allow_read /lib\$/\*.so
+allow_read /lib\$/\*.so.\+\*
+allow_read /lib\$/\{\*\}/\*.so
+allow_read /lib\$/\{\*\}/\*.so.\+\*

### /usr/lib32/, /usr/lib64/, の xxx.so の参照OK。
+allow_read /usr/lib\$/\*.so
+allow_read /usr/lib\$/\*.so.\+\*
+allow_read /usr/lib\$/\{\*\}/\*.so
+allow_read /usr/lib\$/\{\*\}/\*.so.\+\*

### 初期化時にnamedが無かった。
+initialize_domain /etc/init.d/named

## domain_policy.conf
### named 学習後に設定ファイルをまとめた。secの方も追加。
+allow_read /var/bind/pri/\*.zone
+allow_read /var/bind/sec/\*.zone

### ntpd。学習 => 再起動 => 強制
/var/log/tomoyo.logにエラーはないが同期できないのでntp自体の設定がおかしい。


/lib32/, /lib64/, /usr/lib32/, /usr/lib64/, 以下のxxx.soの読み込み許可を大雑把にした。
xxx.soはxxx.so.数字.数字.数字.数字が実体の場合あり。最大4つだった。
/usr/lib\*/\*.so\* だと設定が2=>1になるし、/usr/lib/の場合も入る。

xxx.soで終わる、xxx.so.数字1文字と/ではない文字0回以上、の2つにする。
/usr/libexec/が気になるので lib数字1回以上 にする。

$ ll -d /lib* /usr/lib*
lrwxrwxrwx   1 root root     5 2011-05-20 20:33:07 /lib -> lib64/
drwxr-xr-x   3 root root  4096 2011-06-23 11:58:09 /lib32/
drwxr-xr-x  15 root root  4096 2011-06-23 11:58:09 /lib64/
lrwxrwxrwx   1 root root     5 2009-08-11 14:57:24 /usr/lib -> lib64/
drwxr-xr-x  38 root root 40960 2011-06-16 02:48:59 /usr/lib32/
drwxr-xr-x 148 root root 90112 2011-06-23 12:10:33 /usr/lib64/
drwxr-xr-x  19 root root 12288 2011-06-23 12:10:33 /usr/libexec/

$ find /lib* /usr/lib* -name "*.so*" | wc -l
6772
$ find /lib* /usr/lib* -name "*.so.[0-9]*" | wc -l
2263
$ find /lib* /usr/lib* | grep -P ".*\.so(\.\d+){1,}" | wc -l
2263
$ find /lib* /usr/lib* -name "*.so" | wc -l
4479
$ expr 2263 \+ 4479
6742
$ find /lib* /usr/lib* -name "*.so[^.]*" | wc -l
30
$ expr 6742 \+ 30
6772

\*.so\* だと少し期待しないマッチがある。別にいいか?
$ find /lib* /usr/lib* -name "*.so[^.]*" -exec dirname {} \; | sort | uniq -c
      1 /lib64/modules/2.6.36-hardened-r9
      1 /lib64/modules/2.6.38-hardened-r6
      1 /lib64/systemd/system
      1 /lib64/systemd/system/dbus.target.wants
      1 /lib64/systemd/system/sockets.target.wants
     25 /usr/lib64/libreoffice/basis3.3/presets/config
$ find /lib* /usr/lib* -name "*.so[^.]*" | awk -F'.' '{print $NF}' | sort | uniq -c
      1 sob
     10 soc
      3 socket
      3 sod
      3 soe
      2 softdep
      5 sog
      3 soh

### 対話シリアル
cu, taylor-uucp, minicomは?

### cd/dvdチェック
qpxtool

### xwindow入れ子起動。
Xnest, xorg-server

### アーカイブツール
atool

2011-06-12

PORTDIR_OVERLAYの追加

http://en.gentoo-wiki.com/wiki/Overlay

パッケージのディレクトリを追加します。
$ grep ^PORTDIR_OVERLAY /etc/make.conf
PORTDIR_OVERLAY="${PORTDIR_OVERLAY} /usr/local/portage/test"

ebuildファイルを追加します。
$ diff /usr/portage/sys-apps/ccs-tools/ccs-tools-1.8.0_p20110214.ebuild ccs-tools-1.8.1_p20110511.ebuild
28c28
<       epatch "${FILESDIR}/${P}-parallel.patch"
---
>       #epatch "${FILESDIR}/${P}-parallel.patch"

Manifestを作成します。
$ sudo ebuild ccs-tools-1.8.1_p20110511.ebuild manifest

ファイルの一覧。
$ find /usr/local/portage/test/sys-apps/ccs-tools
/usr/local/portage/test/sys-apps/ccs-tools
/usr/local/portage/test/sys-apps/ccs-tools/ccs-tools-1.8.1_p20110511.ebuild
/usr/local/portage/test/sys-apps/ccs-tools/Manifest
/usr/local/portage/test/sys-apps/ccs-tools/files

インストールします。
$ sudo ACCEPT_KEYWORDS="**" emerge -avt ccs-tools

成功しました。
$ eix -c ccs-tools
[D] sys-apps/ccs-tools (1.8.1_p20110511[?]@2011年06月11日 -> ??): TOMOYO Linux tools
[1] /usr/local/portage/test

正常に動くかどうかは不明です。
同じソフトか似ているソフトのebuildファイルをベースに使えばインストールだけは大丈夫そうです。








以下はメモです。

kernelをインストールする。
$ cd linux-2.6.38-gentoo-r6
$ wget -O ccs-tools-1.8.1-20110511.tar.gz 'http://sourceforge.jp/frs/redir.php?f=/tomoyo/49693/ccs-tools-1.8.1-20110511.tar.gz'
$ tar -zxf ccs-patch-1.8.1-20110511.tar.gz
$ patch --dry-run -Np1 < patches/ccs-patch-2.6.38.diff
$ patch -Np1 < patches/ccs-patch-2.6.38.diff
...

初期化する。
$ sudo /usr/lib/ccs/init_policy
$ sudo ls -Al /etc/ccs/
合計 16
-rwx------ 1 root root   65  6月 11 21:06 ccs-load-module
lrwxrwxrwx 1 root root   33  6月 11 21:06 domain_policy.conf -> policy/current/domain_policy.conf
lrwxrwxrwx 1 root root   36  6月 11 21:06 exception_policy.conf -> policy/current/exception_policy.conf
lrwxrwxrwx 1 root root   27  6月 11 21:06 manager.conf -> policy/current/manager.conf
drwx------ 3 root root 4096  6月 11 21:06 policy
lrwxrwxrwx 1 root root   27  6月 11 21:06 profile.conf -> policy/current/profile.conf
-rw-r--r-- 1 root root  158  6月 11 21:06 stat.conf
drwx------ 2 root root 4096  6月 11 21:06 tools

OSを再起動する。

ログ取得。
$ sudo ccs-auditd
$ sudo ls -al /var/log/tomoyo/

学習(0) => 強制(3)にしてログを見る。
$ sudo tail -f /var/log/tomoyo/reject_003.log
...

apacheを起動する。
$ sudo /etc/init.d/apache2 restart

apacheの設定の変更する。
$ sudo ccs-editpolicy
...

セーブする。
$ sudo ccs-savepolicy

OSを再起動する。

ブート時の内容が増えた?
...
linkstation: disarming the AVR watchdog:
Calling /sbin/ccs-init to load policy. Please wait.
CCSecurity: 1.8.1+   2011/05/11
Mandatory Access Control activated.

保存場所。
$ sudo ls -al /etc/ccs/policy

表示の切り替え後に /usr/sbin/apache2 の表示が消える。
$ sudo ccs-editpolicy
...
検索(f)で /usr/sbin/apache2 に移動してから表示の切り替え(@)を押すと画面の一番下に移動する。
もう一度検索する。

修正内容。
cgi系いらないかもしれないがそのまま。
ipアドレスはiptablesでいいかもしれないので全部許可。
拡張子をまとめる方法がわからない。ないかも。kernelのソフトは高機能な正規表現は禁止かも。
例。
file chown /var/run/cgisock.\$ 81
file mksock/chmod /var/run/cgisock.\$ 0700
file read /etc/apache2/modules.d/\+\+_\*.conf
file read /etc/apache2/vhosts.d/\+\+_\*.conf
file read /usr/lib/apache2/modules/mod_\*.so
file read /usr/share/apache2/icons/\*.gif
file read /usr/share/apache2/icons/\*.png
file read /usr/share/apache2/icons/\{\*\}/\*.gif
file read /usr/share/apache2/icons/\{\*\}/\*.png
file read /var/www/\{\*\}/htdocs/.htaccess
file read /var/www/\{\*\}/htdocs/\*.html
file read /var/www/\{\*\}/htdocs/\*.ico
file read /var/www/\{\*\}/htdocs/\*.php
file read /var/www/\{\*\}/htdocs/\*.txt
file read /var/www/\{\*\}/htdocs/\{\*\}/.htaccess
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.bz2
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.css
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.flv
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.gif
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.gz
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.html
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.ico
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.jpeg
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.jpg
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.js
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.pdf
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.php
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.png
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.tgz
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.txt
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.xml
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.xz
file read /var/www/\{\*\}/htdocs/\{\*\}/\*.zip
file unlink /var/run/cgisock.\$
network inet stream accept 0.0.0.0-255.255.255.255 1024-65000
network unix stream bind/listen /var/run/cgisock.\$

ログの閲覧。
最後の方の文字列が追加したい場合の内容っぽい。
$ sudo ls -al /var/log/tomoyo/
動かない => ログから設定追加。
or 動かない 3 => 2 => 動いたらログから設定追加。
or 動かない 3 => 1 => 動かない動作を再実行してから3に戻す。
or ログから対話式で設定を追加するコマンドがあると書いてあった。

用途。
未知のプログラムを動作させるときに、なにやっているか見る。
プログラムの使用しないファイルを削除する。
例えば利便性のために書き込みを許可して意味がなくなる。
web上からphpファイルを作成するphpプログラムなど。
file write /var/www/\{\*\}/htdocs/\*
file write /var/www/\{\*\}/htdocs/\{\*\}/\*
こんな感じであればまだ良い?すぐに消すのでなければ変わらない?
file write /var/www/\{\*\}/tmp/\*
file write /var/www/\{\*\}/tmp/\{\*\}/\*
file write /var/www/\{\*\}/htdocs/webtmp/\*
file write /var/www/\{\*\}/htdocs/webtmp/\{\*\}/\*
たぶんselinuxより設定するのが楽。しかしグラフィカルに設定するツールがあるが使ったことはない。

http://tomoyo.sourceforge.jp/1.8/index.html.ja
http://tomoyo.sourceforge.jp/1.8/policy-specification/expression-rules.html.ja#wildcard

2011-05-06

TOMOYO Linuxのインストール

インストールする。
--menuconfig(make menuconfigと同じ)でtomoyoで検索(/)してマッチした値をonにする。
$ sudo emerge --oneshot -avt =sys-kernel/hardened-sources-2.6.36-r9
$ ll /usr/src/linux
lrwxrwxrwx 1 root root 24 2011-05-06 06:26:16 /usr/src/linux -> linux-2.6.36-hardened-r9/
$ sudo genkernel --kernel-config=/etc/kernels/kernel-config-x86_64-2.6.36-gentoo-r8 --menuconfig all
...
$ grep -i tomoyo /etc/kernels/kernel-config-x86_64-2.6.36-hardened-r9
CONFIG_SECURITY_TOMOYO=y
CONFIG_DEFAULT_SECURITY_TOMOYO=y
CONFIG_DEFAULT_SECURITY="tomoyo"

grubを修正して作成したカーネルで再起動する。

インストールの確認。
$ grep tomoyo_supervisor /proc/kallsyms
ffffffff8124d6b2 T tomoyo_supervisor

ツールをインストールする。
2.6.36なのでtomoyo-tools-2.3.0_p20100820にする。
$ sudo ACCEPT_KEYWORDS="~*" emerge --oneshot -avt =sys-apps/ccs-tools-1.8.0_p20110214
$ sudo emerge -Cav sys-apps/ccs-tools
$ sudo ACCEPT_KEYWORDS="~*" emerge --oneshot -avt =sys-apps/tomoyo-tools-2.3.0_p20100820

sys-apps/ccs-tools-1.8.0_p20110214のインストール後のコメントの一部。
ccs-toolsの方が_pYYYYMMDDの部分の日付が新しいので間違っているかもしれない。
* For >=kernel-2.6.36:
 * http://tomoyo.sourceforge.jp/2.3/
 *
 * For >=kernel-2.6.30:
 * http://tomoyo.sourceforge.jp/2.2/
 *
 * For <kernel-2.6.30 + ccs-patch:
 * http://tomoyo.sourceforge.jp/1.8/

sys-kernel/ccs-sourcesというのがあるが、こっちの方がいいのかもしれない。
$ eix -S tomoyo -c
[N] sys-apps/ccs-tools (~1.8.0_p20110214): TOMOYO Linux tools
[D] sys-apps/tomoyo-tools (2.3.0_p20100820@2011年05月06日 -> ~2.3.0_p20100820): TOMOYO Linux tools
[N] sys-kernel/ccs-sources [1] (~2.6.36(2.6.36)): TOMOYO Linux sources for the 2.6 kernel tree
[1] "sunrise" /var/lib/layman/sunrise

Found 3 matches.

バージョンを確認する。
$ grep -nriP -A6 "static.*tomoyo_read_version" /usr/src/linux/security/tomoyo/
/usr/src/linux/security/tomoyo/common.c:1751:static void tomoyo_read_version(struct tomoyo_io_buffer *head)
/usr/src/linux/security/tomoyo/common.c-1752-{
/usr/src/linux/security/tomoyo/common.c-1753-   if (!head->r.eof) {
/usr/src/linux/security/tomoyo/common.c-1754-           tomoyo_io_printf(head, "2.3.0");
/usr/src/linux/security/tomoyo/common.c-1755-           head->r.eof = true;
/usr/src/linux/security/tomoyo/common.c-1756-   }
/usr/src/linux/security/tomoyo/common.c-1757-}

バージョン2.3.0をインストールしました。
フル機能を使用する場合は1.8系らしいので、その場合はインストールに失敗しています。
ここから先はhttp://tomoyo.sourceforge.jp/2.3/をご参照ください。

機能があるかどうか。
$ grep tomoyo_supervisor /proc/kallsyms
ffffffff8124d6b2 T tomoyo_supervisor

grubの設定の有無。yなので無し。
$ grep CONFIG_DEFAULT_SECURITY_TOMOYO /etc/kernels/kernel-config-x86_64-2.6.36-hardened-r9
CONFIG_DEFAULT_SECURITY_TOMOYO=y

初期化する。
$ sudo emerge --config =sys-apps/tomoyo-tools-2.3.0_p20100820


Configuring pkg...

Creating policy directory... OK
Creating exception policy... OK
Creating domain policy... OK
Creating manager policy... OK
Creating default profile... OK
Creating memory quota policy... OK

$ sudo ls -al /etc/tomoyo/
合計 120
drwx------   2 root root  4096  5月  6 08:29 .
drwxr-xr-x 100 root root 12288  5月  6 08:29 ..
-rw-r--r--   1 root root    23  5月  6 08:29 domain_policy.conf
-rw-r--r--   1 root root 89355  5月  6 08:29 exception_policy.conf
-rw-r--r--   1 root root   160  5月  6 08:29 manager.conf
-rw-r--r--   1 root root    83  5月  6 08:29 meminfo.conf
-rw-r--r--   1 root root   403  5月  6 08:29 profile.conf
$ grep -A3 pkg_config /usr/portage/sys-apps/tomoyo-tools/tomoyo-tools-2.3.0_p20100820.ebuild
pkg_config() {
        /usr/$(get_libdir)/tomoyo/init_policy
}

動作チェック。
$ sudo tomoyo-editpolicy /etc/tomoyo/
q

設定ファイルを読まない。
$ sudo tomoyo-editpolicy
<<< Domain Transition Editor >>>      12 domains    '?' for help

<kernel>
    0:  0     <kernel>
    1:  0  *      /sbin/modprobe
    2:  0             /bin/cat
    3:  0             /bin/echo
    4:  0             /bin/grep
    5:  0             /bin/rm
    6:  0             /bin/touch
    7:  0             /bin/uname
    8:  0             /sbin/insmod
    9:  0             /usr/bin/basename
   10:  0             /usr/bin/cut
   11:  0             /usr/bin/find

初期化してから一回再起動しないとダメっぽい。
再起動後、表示が増えた。
$ sudo tomoyo-editpolicy
...

マニュアルの内容を試す。
$ sudo /etc/init.d/apache2 restart
$ sudo tomoyo-editpolicy
...

ログを分ける。
$ diff syslog-ng.conf.2011-05-06 syslog-ng.conf
26a27
> destination tomoyo { file("/var/log/tomoyo.log"); };
92a94
> filter f_tomoyo { match("^(ERROR|WARNING): Access (.*) denied for " value("MESSAGE")); };
93a96
> log { source(kernsrc); filter(f_tomoyo); destination(tomoyo); };

ccs-toolsだと別の方法で取れるようだが取れない。カーネルが対応していない。
たぶんccs-toolsはsys-kernel/ccs-sourcesを入れないと使えない。
$ sudo ACCEPT_KEYWORDS="~*" emerge --oneshot -avt =sys-apps/ccs-tools-1.8.0_p20110214
$ which ccs-auditd
/usr/sbin/ccs-auditd
$ sudo emerge --config =sys-apps/ccs-tools-1.8.0_p20110214


Configuring pkg...

/var/tmp/portage/sys-apps/ccs-tools-1.8.0_p20110214/temp/environment: line 2047: /usr/lib64/ccs/init_policy.sh: No such file or directory

$ grep -A3 pkg_config /usr/portage/sys-apps/ccs-tools/ccs-tools-1.8.0_p20110214.ebuild
pkg_config() {
        /usr/$(get_libdir)/ccs/init_policy.sh
}
$ sudo /usr/lib64/ccs/init_policy
$ sudo ls -al /etc/ccs/
...
$ sudo ccs-editpolicy
You can't use this editor for this kernel.
$ sudo ACCEPT_KEYWORDS="~*" emerge --oneshot -avt =sys-apps/tomoyo-tools-2.3.0_p20100820

学習モードで.htaccessを許可してから強制モードにすると.htaccessではなくindex.htmlのエラーになった。
動作確認はできた。
$ sudo tail -f /var/log/tomoyo.log
May  6 12:46:11 amdgentoo kernel: ERROR: Access read /var/www/localhost/htdocs/.htaccess denied for /usr/sbin/apache2
May  6 12:46:27 amdgentoo kernel: ERROR: Access read /var/www/localhost/htdocs/.htaccess denied for /usr/sbin/apache2
May  6 12:46:32 amdgentoo kernel: ERROR: Access read /var/www/localhost/htdocs/.htaccess denied for /usr/sbin/apache2
May  6 12:46:33 amdgentoo kernel: ERROR: Access read /var/www/localhost/htdocs/.htaccess denied for /usr/sbin/apache2
May  6 12:47:02 amdgentoo kernel: ERROR: Access read /var/www/localhost/htdocs/.htaccess denied for /usr/sbin/apache2
May  6 12:47:03 amdgentoo kernel: ERROR: Access read /var/www/localhost/htdocs/.htaccess denied for /usr/sbin/apache2
May  6 12:47:11 amdgentoo kernel: ERROR: Access read /var/www/localhost/htdocs/.htaccess denied for /usr/sbin/apache2
May  6 12:48:26 amdgentoo kernel: ERROR: Access read /var/www/localhost/htdocs/index.html denied for /usr/sbin/apache2
May  6 13:32:55 amdgentoo kernel: ERROR: Access read /var/www/localhost/htdocs/index.html denied for /usr/sbin/apache2
May  6 13:32:59 amdgentoo kernel: ERROR: Access read /var/www/localhost/htdocs/index.html denied for /usr/sbin/apache2

インストールしたのはTOMOYO Linux 2系だった。
http://tomoyo.sourceforge.jp/documentation.html.ja

参考。
http://tomoyo.sourceforge.jp/1.8/
http://tomoyo.sourceforge.jp/2.3/
http://sourceforge.jp/projects/tomoyo/lists/archive/dev/2009-July/thread.html#1180