This page is for TOMOYO 2.2 (for Linux 2.6.30 - 2.6.35 kernels). Please jump to this page for TOMOYO 2.3 (for Linux 2.6.36 and later kernels).

English Page

Last modified: $Date: 2024-03-30 11:25:00 +0000 (Sat, 30 Mar 2024) $

第4章:ポリシーのチューニング

このページでは、 TOMOYO のポリシーをチューニングする方法について説明します。


ステップ1:ファイルのパス名をパターン化する

WWW サーバがアクセスするコンテンツのように、学習モードでは必ずしもアクセスされないファイルに対するアクセス許可を /etc/tomoyo/domain_policy.conf に追加します。
以下の例では、 /usr/sbin/httpd に対して /var/www/html/ 以下の読み込みを許可しています。

<kernel> /usr/sbin/httpd
use_profile 3
allow_read /var/www/html/\*
allow_read /var/www/html/\*/\*
allow_read /var/www/html/\*/\*/\*
allow_read /var/www/html/\*/\*/\*/\*
allow_read /var/www/html/\*/\*/\*/\*/\*

同様に、パターンを使用して手作業でのグループ化を行います。
以下の例では、 /usr/sbin/smbd に対して全てのログファイルを同様に扱うように指示しています。

修正前修正後
<kernel> /usr/sbin/smbd
use_profile 3
allow_write /var/log/samba/host1.log
allow_write /var/log/samba/host2.log
allow_write /var/log/samba/host3.log
allow_write /var/log/samba/host4.log
allow_write /var/log/samba/host5.log
<kernel> /usr/sbin/smbd
use_profile 3
allow_write /var/log/samba/\*.log

与えられたパターンと一致するディスク上のパス名を一覧表示する tomoyo-pathmatch コマンドを用いて、パターン化することでアクセス可能になる範囲を確認できます。

[root@tomoyo ~]# /usr/sbin/tomoyo-pathmatch '/var/log/samba/\*.log'
/var/log/samba/host1.log /var/log/samba/host2.log /var/log/samba/host3.log /var/log/samba/host4.log /var/log/samba/host5.log

操作例

カーネルに存在するドメインポリシーをディスクに保存します。

[root@tomoyo ~]# /usr/sbin/tomoyo-savepolicy d

テンポラリファイルの可能性があるパス名を抽出します。

[root@tomoyo ~]# /usr/sbin/tomoyo-findtemp < /etc/tomoyo/domain_policy.conf
/etc/mtab.tmp
/etc/mtab~
/etc/mtab~2302
/etc/mtab~2328
/etc/mtab~2329
/etc/mtab~2330
/etc/mtab~2331
/etc/mtab~2332
/etc/mtab~2339
/etc/mtab~2383
/halt
/selinux/disable
/selinux/enforce
/selinux/policyvers
/tmp/sh-thd-1163110572
/tmp/sh-thd-1163113704
/var/cache/samba/browse.dat.
/var/lib/nfs/etab.tmp
/var/lib/nfs/xtab.tmp
/var/lock/mrtg/mrtg_l

テンポラリファイルにアクセスしているドメインを探します。

[root@tomoyo ~]# /usr/sbin/tomoyo-domainmatch /etc/mtab~2302
<kernel> /sbin/init /etc/rc.d/rc.sysinit /sbin/initlog /etc/rc.d/rc.sysinit /sbin/initlog /bin/mount
allow_create /etc/mtab~2302
allow_write /etc/mtab~2302
allow_link /etc/mtab~2302 /etc/mtab~
allow_unlink /etc/mtab~2302
[root@tomoyo ~]# /usr/sbin/tomoyo-domainmatch /tmp/sh-thd-1163113704
<kernel> /etc/rc.d/init.d/smartd /sbin/initlog /usr/sbin/smartd /bin/sh
allow_create /tmp/sh-thd-1163113704
allow_read/write /tmp/sh-thd-1163113704
allow_unlink /tmp/sh-thd-1163113704

カーネルに存在する例外ポリシーをディスクに保存します。

[root@tomoyo ~]# /usr/sbin/tomoyo-savepolicy e

必要に応じてディスク上の例外ポリシーにパターンを追加します。

[root@tomoyo ~]# echo 'file_pattern /etc/mtab~\$' >> /etc/tomoyo/exception_policy.conf
[root@tomoyo ~]# echo 'file_pattern /tmp/sh-thd-\$' >> /etc/tomoyo/exception_policy.conf

ディスク上の例外ポリシーをカーネルに読み込みます。

[root@tomoyo ~]# /usr/sbin/tomoyo-loadpolicy ef

/etc/mtab~\$ および /tmp/sh-thd-\$ に一致するパス名のパターン化を行います。

[root@tomoyo ~]# /usr/sbin/tomoyo-patternize '/etc/mtab~\$' '/tmp/sh-thd-\$' < /etc/tomoyo/domain_policy.conf > /etc/tomoyo/domain_policy.tmp

パターン化されたことを確認します。

[root@tomoyo ~]# /usr/sbin/tomoyo-findtemp < /etc/tomoyo/domain_policy.tmp
/etc/mtab.tmp
/etc/mtab~
/halt
/selinux/disable
/selinux/enforce
/selinux/policyvers
/var/cache/samba/browse.dat.
/var/lib/nfs/etab.tmp
/var/lib/nfs/xtab.tmp
/var/lock/mrtg/mrtg_l

パターン化前後の差分を表示して、パターン化が適切に行われているかどうかを確認します。

[root@tomoyo ~]# diff /etc/tomoyo/domain_policy.conf /etc/tomoyo/domain_policy.tmp
2326,2331c2326,2331
< allow_read/write /tmp/sh-thd-1163110572
< allow_read/write /tmp/sh-thd-1163113704
< allow_create /tmp/sh-thd-1163110572
< allow_create /tmp/sh-thd-1163113704
< allow_unlink /tmp/sh-thd-1163110572
< allow_unlink /tmp/sh-thd-1163113704
---
> allow_read/write /tmp/sh-thd-\$
> allow_read/write /tmp/sh-thd-\$
> allow_create /tmp/sh-thd-\$
> allow_create /tmp/sh-thd-\$
> allow_unlink /tmp/sh-thd-\$
> allow_unlink /tmp/sh-thd-\$
3331,3336c3331,3336
< allow_write /etc/mtab~2328
< allow_write /etc/mtab~2329
< allow_write /etc/mtab~2330
< allow_write /etc/mtab~2331
< allow_write /etc/mtab~2332
< allow_write /etc/mtab~2383
---
> allow_write /etc/mtab~\$
> allow_write /etc/mtab~\$
> allow_write /etc/mtab~\$
> allow_write /etc/mtab~\$
> allow_write /etc/mtab~\$
> allow_write /etc/mtab~\$
3338,3349c3338,3349
< allow_create /etc/mtab~2328
< allow_create /etc/mtab~2329
< allow_create /etc/mtab~2330
< allow_create /etc/mtab~2331
< allow_create /etc/mtab~2332
< allow_create /etc/mtab~2383
< allow_link /etc/mtab~2328 /etc/mtab~
< allow_link /etc/mtab~2329 /etc/mtab~
< allow_link /etc/mtab~2330 /etc/mtab~
< allow_link /etc/mtab~2331 /etc/mtab~
< allow_link /etc/mtab~2332 /etc/mtab~
< allow_link /etc/mtab~2383 /etc/mtab~
---
> allow_create /etc/mtab~\$
> allow_create /etc/mtab~\$
> allow_create /etc/mtab~\$
> allow_create /etc/mtab~\$
> allow_create /etc/mtab~\$
> allow_create /etc/mtab~\$
> allow_link /etc/mtab~\$ /etc/mtab~
> allow_link /etc/mtab~\$ /etc/mtab~
> allow_link /etc/mtab~\$ /etc/mtab~
> allow_link /etc/mtab~\$ /etc/mtab~
> allow_link /etc/mtab~\$ /etc/mtab~
> allow_link /etc/mtab~\$ /etc/mtab~
3351,3356c3351,3356
< allow_unlink /etc/mtab~2328
< allow_unlink /etc/mtab~2329
< allow_unlink /etc/mtab~2330
< allow_unlink /etc/mtab~2331
< allow_unlink /etc/mtab~2332
< allow_unlink /etc/mtab~2383
---
> allow_unlink /etc/mtab~\$
> allow_unlink /etc/mtab~\$
> allow_unlink /etc/mtab~\$
> allow_unlink /etc/mtab~\$
> allow_unlink /etc/mtab~\$
> allow_unlink /etc/mtab~\$
3439,3440c3439,3440
< allow_write /etc/mtab~2302
< allow_write /etc/mtab~2339
---
> allow_write /etc/mtab~\$
> allow_write /etc/mtab~\$
3443,3446c3443,3446
< allow_create /etc/mtab~2302
< allow_create /etc/mtab~2339
< allow_link /etc/mtab~2302 /etc/mtab~
< allow_link /etc/mtab~2339 /etc/mtab~
---
> allow_create /etc/mtab~\$
> allow_create /etc/mtab~\$
> allow_link /etc/mtab~\$ /etc/mtab~
> allow_link /etc/mtab~\$ /etc/mtab~
3449,3450c3449,3450
< allow_unlink /etc/mtab~2302
< allow_unlink /etc/mtab~2339
---
> allow_unlink /etc/mtab~\$
> allow_unlink /etc/mtab~\$

ディスク上のドメインポリシーを更新します

[root@tomoyo ~]# cat /etc/tomoyo/domain_policy.tmp > /etc/tomoyo/domain_policy.conf

ディスク上のドメインポリシーをカーネルに読み込みます。

[root@tomoyo ~]# /usr/sbin/tomoyo-loadpolicy df

カーネルに読み込まれているドメインポリシーが更新されていることを確認します。

[root@tomoyo ~]# /usr/sbin/tomoyo-savepolicy -d | /usr/sbin/tomoyo-findtemp
/etc/mtab.tmp
/etc/mtab~
/halt
/selinux/disable
/selinux/enforce
/selinux/policyvers
/var/cache/samba/browse.dat.
/var/lib/nfs/etab.tmp
/var/lib/nfs/xtab.tmp
/var/lock/mrtg/mrtg_l

目次へ戻る

sflogo.php