[tomoyo-users 280] 1.4.2 のポリシーを 1.5.0 に変換する方法について

Back to archive index

Tetsuo Handa from-****@I-lov*****
2007年 9月 24日 (月) 21:27:49 JST


1.5.0 ではポリシーの構文やアクセス許可のチェック箇所に変更が生じていることから
1.4.2 のポリシーとの互換性は100%ではありませんが、
以下のプログラムを使うとポリシー修正の量を最小限にすることができます。

----- プログラム始まり -----
#! /bin/sh

cd /etc/ccs/
sed -e 's: /root/ccstools/: /usr/lib/ccs/:g' -- manager.txt > manager.conf
sed -e 's: /proc/ccs/info/: /proc/ccs/:g' \
    -e 's: /proc/ccs/policy/: /proc/ccs/:g' \
    -e 's: /proc/ccs/status: /proc/ccs/profile:g' \
    -e 's: /etc/ccs/status.txt: /etc/ccs/profile.conf:g' \
    -e 's: /etc/ccs/manager.txt: /etc/ccs/manager.conf:g' \
    -e 's: /etc/ccs/system_policy.txt: /etc/ccs/system_policy.conf:g' \
    -e 's: /etc/ccs/domain_policy.txt: /etc/ccs/domain_policy.conf:g' \
    -e 's: /etc/ccs/exception_policy.txt: /etc/ccs/exception_policy.conf:g' \
    -e 's@ /etc/ccs/system_policy.\\$-\\$-\\$.\\$:\\$:\\$.txt@ /etc/ccs/system_policy.\\$-\\$-\\$.\\$:\\$:\\$.conf @ g' \
    -e 's@ /etc/ccs/domain_policy.\\$-\\$-\\$.\\$:\\$:\\$.txt@ /etc/ccs/domain_policy.\\$-\\$-\\$.\\$:\\$:\\$.conf @ g' \
    -e 's@ /etc/ccs/exception_policy.\\$-\\$-\\$.\\$:\\$:\\$.txt@ /etc/ccs/exception_policy.\\$-\\$-\\$.\\$:\\$:\\$.conf @ g' \
    -e 's: /root/ccstools/: /usr/lib/ccs/:g' \
    -e 's:^initializer :initialize_domain :' \
    -- exception_policy.txt > exception_policy.conf
sed -e 's: /proc/ccs/info/: /proc/ccs/:g' \
    -e 's: /proc/ccs/policy/: /proc/ccs/:g' \
    -e 's: /proc/ccs/status: /proc/ccs/profile:g' \
    -e 's: /etc/ccs/status.txt: /etc/ccs/profile.conf:g' \
    -e 's: /etc/ccs/manager.txt: /etc/ccs/manager.conf:g' \
    -e 's: /etc/ccs/system_policy.txt: /etc/ccs/system_policy.conf:g' \
    -e 's: /etc/ccs/domain_policy.txt: /etc/ccs/domain_policy.conf:g' \
    -e 's: /etc/ccs/exception_policy.txt: /etc/ccs/exception_policy.conf:g' \
    -e 's@ /etc/ccs/system_policy.\\$-\\$-\\$.\\$:\\$:\\$.txt@ /etc/ccs/system_policy.\\$-\\$-\\$.\\$:\\$:\\$.conf @ g' \
    -e 's@ /etc/ccs/domain_policy.\\$-\\$-\\$.\\$:\\$:\\$.txt@ /etc/ccs/domain_policy.\\$-\\$-\\$.\\$:\\$:\\$.conf @ g' \
    -e 's@ /etc/ccs/exception_policy.\\$-\\$-\\$.\\$:\\$:\\$.txt@ /etc/ccs/exception_policy.\\$-\\$-\\$.\\$:\\$:\\$.conf @ g' \
    -e 's: /root/ccstools/: /usr/lib/ccs/:g' \
    -- domain_policy.txt > domain_policy.conf
grep -v '^allow_mount' -- system_policy.txt > system_policy.conf
cat status.txt > profile.conf
----- プログラム終わり -----


/etc/ccs/system_policy.txt に allow_mount で始まる行が含まれている場合は
マウントに関するアクセス許可のポリシーの構文が変更されたので
RESTRICT_MOUNT だけを学習モードに戻して再学習をお願いします。
例えばプロファイル 3 が

  3-MAC_FOR_FILE=3
  3-MAC_FOR_NETWORK=3
   ...(中略)...
  3-RESTRICT_MOUNT=3
   ...(中略)...
  3-MAC_FOR_CAPABILITY::〜〜=3

のようになっている場合、

  setlevel 3-RESTRICT_MOUNT=1

のように実行することで

  3-MAC_FOR_FILE=3
  3-MAC_FOR_NETWORK=3
   ...(中略)...
  3-RESTRICT_MOUNT=1
   ...(中略)...
  3-MAC_FOR_CAPABILITY::〜〜=3

のように RESTRICT_MOUNT だけを変更することができます。


/etc/ccs/domain_policy.txt に allow_network で始まる行が含まれている場合は
UDP および RAW に関してアクセス許可の追加が必要になるかもしれません。
これは、 1.4.2 までに存在していた
「 UDP および RAW ソケットに関して、 read() や recvmsg() で受信する場合には
 アクセス許可のチェックが行えない」という不具合を修正するために、
ネットワークのアクセス許可のチェックを行う箇所が変更されたためです。
ただし、「allow_network UDP connect 通信相手のIPアドレス 通信相手のポート番号」という
送信と受信を区別しない形式でアクセス許可を与えており、
ほとんどのプログラムでは送信と受信がセットで行われることから
受信する場合に必要なアクセス許可が送信操作によって既に学習されている可能性が高く、
read() や recvmsg() のためにアクセス許可の追加が必要になることは稀です。


その他、 ccs-auditd を起動している箇所( /etc/rc.local または /etc/init.d/ccs-auditd )の中の
/root/ccstools を /usr/lib/ccs に変更してください。


ご不明な点がありましたらこのmlで質問ください。(反応が無いのは寂しいです。)
よろしくお願いします。




tomoyo-users メーリングリストの案内
Back to archive index