2004年08月20日

jail 内の Ports を親環境から portaudit する

ports/security/portaudit は make install すると /usr/local/etc/periodic/security/410.portaudit をインストールし、毎日 Ports Collection のセキュリティ監査ファイルを自動で最新に更新し、インストール済の全ての Ports/Packages のセキュリティ脆弱性を検査してくれるとてもありがたいツールです。
がしかし、私の環境は jail 内からは一切外にコネクションを張りに行けないようにフィルタリングしており、 jail 内の監査ファイルが最新に更新されず、 Ports/Packeages の検査も意味なしになってしまいます。(監査ファイルの取得は fetch(3) を使っているため FTP or HTTP 通信です)
そのため、親環境から jail の Ports/Packages の検査をするようにしました。というメモ。

当初 410.portaudit を直接いじろうかと考えましたが、 portupgrade のたびに上書きされるのは勘弁していただきたいので、 410.portaudit をコピーして 415.portaudit_jail として追加しました。同じ /usr/local/etc/periodic/security/ に置いておけば periodic daily で実行されます。

・ /usr/local/etc/periodic/security/415.portaudit_jail

#!/bin/sh -f
# rc.conf の jail 関連設定を読み込む必要あり。
if [ -r /etc/defaults/rc.conf ]; then
    . /etc/defaults/rc.conf
    source_rc_confs
fi
# なければ実行不要。
if [ -z ${jail_list} ]; then
    exit 0
fi

if [ -r /etc/defaults/periodic.conf ]; then
    . /etc/defaults/periodic.conf
    source_periodic_confs
fi

rc=0
case "${daily_status_security_portaudit_enable:-YES}" in
    [Nn][Oo])
        ;;
    *)
        /usr/local/sbin/portaudit -X "${daily_status_security_portaudit_expiry:-2}" || rc=$?
        if [ $rc -lt 2 ]; then
            echo
            echo "Checking for packages with security vulnerabilities in jail:"
            echo
        # jail の数だけ portaudit を繰り返し。
            for i in ${jail_list}
            do
                echo "-- ${i} --"
                eval j=\$jail_${i}_rootdir
                ls ${j}/var/db/pkg | sed 's|/$||' \
                    | xargs /usr/local/sbin/portaudit \
                    || rc=$?
            done
        fi
        ;;
esac

exit "$rc"

これで AM3:01 、親環境の periodic daily - security run output メールに結果が記述されます。多い日も安心。

Posted by mass at 2004年08月20日 03:15 [UNIX] | TrackBack
Comments
Post a comment









Remember personal info?