E    C2 レベル・セキュリティの構成

この付録では,『Trusted Computer System Evaluation Criteria』 (『Orange Book』とも呼ばれる) でも説明されているように,エンハンスト・セキュリティを使って,C2 レベル以上のセキュリティに見合うようにシステムを構成する方法について説明しています。『Orange Book』のオンライン版は,http://nsi.org/Library/Compsec/orangebo.txt で提供されています。

Tru64 UNIX は,Information Technology Security Evaluation Criteria(ITSEC) に定義されている,F-C2 機能クラスにも適合するように設計されています。

サイトのセキュリティ・ポリシに従い,C2 ネットワーク,および適切な物理的セキュリティを実施してシステムを使用すると,C2 レベルの環境を実現し,既存の Tru64 UNIX セキュリティ・メカニズムとの互換性を確保しながら,ユーザおよびシステムの情報の保護を強化できます。

Tru64 UNIX 製品の最新の評価および認定ステータスについては,当社の営業担当にお問い合わせください。

この付録には,次の情報があります。

E.1    セキュリティ・ポリシの確立

セキュリティ・ポリシは,組織内でコンピュータ環境を保守する方法や, 機密情報を管理,保護,および配布する方法を定めた,規則および実施に関する規定です。セキュリティ・ポリシには,次の情報が含まれる必要があります。

システムを構成した後は,構成ファイルの変更は少なくし,計画的に変更します。システムの定期的なセキュリティ見直し時に,元の構成ファイルと現在のファイルの内容と許可を比較してください。次のファイルのリストを取得してセキュリティ・ポリシに添付することで,基本システムとネットワーク構成を文書化してください。

/usr/skel/.profile
/usr/skel/.cshrc
/usr/skel/.login
/var/yp/<domain>/auto.master
/var/yp/<domain>/auto.home
/var/yp/<domain>/auto.###
/etc/auto.*
/etc/auth/*
/etc/dumpdates
/etc/ethers
/etc/exports
/etc/fstab
/etc/ftpusers
/etc/group
/etc/hosts
/etc/hosts.equiv
/etc/inetd.conf
/etc/motd
/etc/netgroups
/etc/passwd
/etc/profile
/etc/csh.login
/etc/logout          使用している場合
/etc/remote
/etc/resolv.conf
/etc/rc.config
/etc/rc.site         省略可能,/etc/rc.config と組み合わせて使用
/etc/screend.config
/etc/services
/etc/sec/site_events
/etc/sec/audit_events
/etc/sec/auditd_clients
/etc/sec/event_aliases
/etc/sec/auditd_cons
/etc/sec/audit_loc
/etc/securettys
/etc/svc.conf
/tcb/*
/usr/adm/messages
/var/spool/uucp/Permissions       UUCP を使用している場合
/var/spool/uucp/Systems           UUCP を使用している場合
/var/spool/uucp/remote.unknown    UUCP を使用している場合
/var/adm/cron/at.allow
/var/adm/cron/at.deny
/var/adm/cron/cron.allow
/var/adm/cron/cron.deny
/var/adm/crontab/           これらのディレクトリの任意のファイル
/var/tcb/*
/var/yp/src/*

E.2    最小限の C2 構成

Orange Bookに示されている最小限の C2 システムの要件に従った場合の Tru64 UNIX の構成は次のとおりです。

E.3    初期構成

Tru64 UNIX ソフトウェア・サブセット (オプションのエンハンスト・セキュリティとドキュメンテーション拡張サブセットを含む) をシステムにインストールした後に,ソフトウェアの構成を開始します。構成中に選択する項目のいくつかは,システムのセキュリティに影響を及ぼします。最大限の実用的なセキュリティがシステムに必要であると仮定して説明します。以降の項では,セキュリティに関して考慮すべき事柄を推奨構成について説明します。

E.3.1    一般的な構成

一般的なシステム構成には次の事項が含まれます。

E.3.2    secconfig を使用した,エンハンスト・パスワードと認証

サイトのセキュリティ・ポリシに合うように,エンハンスト・パスワード属性を選択します。詳細については A.2.2 項 を参照してください。

次のパスワード属性を使用します (省略時の設定は,/etc/auth/system/default ファイルに定義されています)。

アカウント・マネージャ (dxaccounts) または edauth プログラムを使って,省略時の設定を変更します。

E.3.3    ライブラリ

システム上のライブラリが,攻撃に利用されることがあります。次の方法で,ライブラリを保護します。

E.3.4    アカウント・プロトタイプとアカウント・テンプレート

ユーザ・アカウントのスタートアップ・ファイルを作成するためのアカウント・テンプレートは,/usr/skel/.login/usr/skel/.cshrc,および /usr/skel/.profile です。

アカウント・プロトタイプ (「ローカル・テンプレート」と呼ばれる) は,アカウント・マネージャ (dxaccounts) が提供します。プロトタイプでは,個々のユーザ・アカウントのパスワード有効期間およびログイン試行回数などの属性を設定できます。属性値がローカル・テンプレートの中に指定されていない場合は,default ファイルの値が使用されます。システム単位の省略時の属性値は,/etc/auth/system/default ファイルに格納されています。システムの省略時設定値は,/usr/tcb/bin/edauth コマンドを使って設定されます。

ユーザ・アカウントは,次の手順で構成します。

E.3.5    監査サブシステムの構成

監査サブシステムのカーネル・オプションを構成するには,カーネルに監査サブシステムを取り込んで構築しておく必要があります。監査サブシステムを構成するには,カーネルの構築後に sysman auditconfig ユーティリティを使います。監査は,次のように構成し,実行してください。

監査デーモンをコマンド行から開始するには,次のコマンドを使います。

# /sbin/init.d/audit start

監査サブシステムについては,第 3 章 を参照してください。

E.3.6    システムの保全性の確認

システムをリブートしてエンハンスト・セキュリティ・オプションを有効にしたら,fverify および authck プログラムを実行して,システムの保全性を確認します。

E.3.7    ネットワーク・セキュリティの構成

コンピュータ環境を保護するためには,ネットワークを正しく構成することが大切です。ネットワーク構成の手助けとして,次のチェック・リストを利用してください。

E.3.8    インストール後のセキュリティの構成

システムをインストールして構成した後は,以降の項の作業を行います。

E.3.8.1    リモート・アクセスの umask

サイトのセキュリティ・ポリシに記述されているとおりに,ファイル /etc/csh.login/etc/profile,および /etc/init.d/inetumask エントリを追加します (/etc/init.d/inet ファイルは,アップデート・インストレーションの際に上書きされるので注意してください)。

E.3.8.2    デバイス

/usr/tcb/bin/dxdevices を使って,サイトのセキュリティ・ポリシを反映したセキュリティ属性を持つデバイスを作成します。

リモート・ログインのシェル・ファイルを次のように変更して,所有者だけが端末ポートを読み取れるようにします。

/etc/profile ファイルには,次の内容を追加します。

	case "$TERM" in
	none)	;;
	*)	/usr/bin/setacl -b `/usr/bin/tty` ;;
	esac

/etc/csh.login ファイルには,次の内容を追加します。

	if ($?TERM) then
	    if ("$TERM" != "none") then
		/usr/bin/setacl -b `/usr/bin/tty`
	    endif
	endif

E.3.8.3    アカウント

ユーザ・アカウントを次のように作成し,チェックします。

E.3.8.4    root アクセス

root アクセスは慎重に制御し,監視する必要があるため,次の条件が満たされていることを確認します。

E.3.9    ネットワークの構成

/etc/svc.conf ファイルを参照して,NIS 用に適切な構成が設定されていることを確認します。また,NIS を使う場合は,クライアント・マシンおよびサーバのファイル /etc/rc.config または /etc/rc.site の NIS_DOMAIN 変数に,正しいドメイン名が定義されていることも確認します。

次の表のネットワーク・ファイルが保護されていることを確認します。

ファイル コメント
/etc/exports エントリの有効性を確認します。できる限り,-root= オプションを使うのは避けます。指定しているすべてのファイル・システムに対して,-access=<hostname> および -ro オプションを使います。
/etc/hosts  
/etc/services  
/etc/protocols  
/etc/inetd.conf  
/etc/hosts.equiv エントリがローカル・ホストであることを確認します。
/etc/ethers  
~username/.rhosts および ~username/.shosts これらのファイルを削除するか,-l フラグを設定してrlogindrshd を実行します。

E.4    物理的セキュリティ

サイトのセキュリティで重要なのが,環境内のすべての構成要素に関する物理的セキュリティです。以下のようにして物理的セキュリティをチェックします。

E.5    アプリケーション

システムで実行しているアプリケーション・ソフトウェアのセキュリティを確保するには,以下の条件を満たしている必要があります。

E.6    定期的に実行するセキュリティ管理手順

クラスごとの見直し作業の頻度は,サイトのセキュリティ・ポリシによって決まります。定期的に,以下の作業を行います。

E.7    参照ドキュメントとチェック・ツール

次のドキュメントは,セキュアなコンピューティング環境を構築し,保守するのに役立ちます。

次のドキュメントは,セキュリティの概念および手順について理解するのに役立ちます。

次のツールは,セキュア環境の維持に役立ちます。

次のスクリプトは,ユーザが作成できるツールの例です。このツールは,ログインおよびログアウトの情報を監査ログから抽出します。

#!/usr/bin/ksh -ph
 
# Script to return summary of login/logout activities on the
# system since the last time it was run.
 
export PATH=/usr/sbin:/usr/bin:/usr/ccs/bin:/sbin
 
# where this script should run
Bdir=/var/adm/local
# where to find audit log files
Adir=/var/audit
 
Ofile="${Bdir}/lasttime"
Nfile="${Bdir}/newtime"
Afile="${Bdir}/lastdata"
Tfile="${Bdir}/lastmsg"
 
Events="-e trusted_event"
 
umask 077
 
# ensure the output format we need from date.
export LANG=C LC_ALL=C
export TZ=:UTC
 
if [ ! -f "${Ofile}" ]
then
	print 700101000001 > "${Ofile}"
	touch -t 197001010000.01 "${Ofile}"
fi
 
date +%y%m%d%H%M%S > "${Nfile}"
 
curfile=$(auditd -q)
auditd -dx
sleep 20       # give time for compression of the old log
while [ -f "$curfile" -a -f "$curfile".Z ] || [ -f "$curfile" \
                                   -a -f "$curfile".gz ]
do
    sleep 2	# wait some more
done
 
: > "${Afile}"
 
for af in $(find "$Adir" -name "auditlog.*" -newer "${Ofile}" \
                           -print | sort)
do
	audit_tool -b -t $(<"${Ofile}") -T $(<"${Nfile}") >> \
                    "${Afile}" -o -Q $Events "${af}" 2>/dev/null
 
	# the suppressed errors are for the {un,}compressed messages
done
 
TZ=:localtime
 
if [ -s "${Afile}" ]
then
	audit_tool -B -Q "${Afile}" > "${Tfile}"
	if [ -s "${Tfile}" ]
	then
		Mail -s 'login/out audit summary' root < "${Tfile}"
	fi
fi
 
mv -f "${Nfile}" "${Ofile}"
rm -f "${Afile}"

以下は上に示したロギング・スクリプトのための crontab エントリです。

0 9 * * * /var/adm/local/lreport