10.1.1 ログメッセージ
Compartment Guardでは、設定されているルールに対して、ルール違反を犯すよ
うなイベント操作を行った場合や、ルールに従ったイベント操作を行った場合に、
/var/log/hpcg/hpcg.logファイルにメッセージを残すことができます。以下では、ル ール違反を犯したイベント操作に対して残すログをDenialログ、ルールに従ったイベ ント操作に対して残すログをAllowログと呼びます。
記録されるDenial ログ及びAllowログのログメッセージのフォーマットは以下の通り です。
ここで各フィールドは、以下の意味を持ちます。
hpcg : Compartment Guardのセキュリティモジュールが発生したログであること を示します
OPCODE :プロセスが行おうとしたイベント操作
TYPE : AllowedまたはDenied(AllowログかDenied ログかを表す)
pid PID :ログメッセージを発生させたプロセスID(PID)を表示 PROCESS :ログメッセージを発生させたプロセス名
RULE :プロセスが行おうとした操作をルール表記で表示
ログ記録(Denialログ)の例を以下に示します。
v Denialログ(例)
hpcg: OPCODE TYPE pid PID (PROCESS) RULE
Jan 19 22:55:14 rhas‑2 kernel: hpcg: IP̲OUTPUT Denied pid 1904 (ping) inet { from.comp 10; from.host 127.0.0.1; to.host 172.16.155.1; type raw; protocol 1; interface eth0; }
10.1.2 ログ記録するイベントの種類
ログ記録されるイベントは以下の表の通りです。それぞれのイベントは 8種類のイベン トカテゴリに分類されており、イベントカテゴリ単位にログ記録を行うことが出来ます。
イベントカテゴリ イベント
socket SOCKET_CREATE
inet IP_INPUT,IP_OUTPUT,RAW_RCV,TCP_RCV,UDP_RCV,SKB_RCV unix UNIX_CONN,UNIX_SND,UNIX_RCV
packet PACKET_SND,PACKET_RCV
ipc IPC_MSG_GET,IPC_MSG_SND,IPC_MSG_RCV, IPC_SHM_GET,IPC_SHM_RCV,IPC_SHM_RCV file FS_PERMISSION,FS_CHDIR,FS_CHMOD,FS_CHOWN,
FS_FILEOPEN,FS_LINK_DST,FS_LINK_SRC,FS_MKDIR,FS_MKNOD, FS_MOUNT,FS_NAMEIOPEN,FS_RENAME_DST,FS_RENAME_SRC, FS_RENAME_SRC_FILE,FS_RMDIR,FS_STAT,FS_TRUNCATE, FS_UMOUNT,FS_UNLINK,FS_UTIME
ps PS
su SU
10.1.3 ログメッセージの記録方法
/var/log/hpcg/hpcg.logにAllowログ及びDenialログの記録を行うには、/proc ディレクトリ以下の擬似ファイルへの書込みを行うことによって行います。
Denialログについては、/proc/sys/csec/log_denialファイルに、Allowログについ ては、/proc/sys/csec/log_allow ファイルにそれぞれ記録を取りたいイベントカテゴ リを指定します。ただし、これらのファイルへの書込みにはCAP_MAC_ALARMケー パビリティが必要になります。
例えば、inetイベントカテゴリのDenialログを記録する場合は以下のコマンドを実行し ます。
# echo inet > /proc/sys/csec/log̲denial あるいは、
# sysctl ?w csec.log̲denial=inet
複数のイベントカテゴリを記録する場合は、イベントカテゴリをカンマ(,)で区切って指 定します。
また、全てのイベントカテゴリを記録したい場合は、”all”をイベントカテゴリ記述部分に 指定します。
Denialログの記録を終了するには、”none”をイベントカテゴリ記述部分に指定しま
す。
また、システム起動時にDenial ログ、Allowログの取得を開始する場合は、
/etc/hpcg/init/policy/boot-user.confファイルに以下のように取得するイベントカ テゴリを記述します。
v boot-user.confファイル記述(例)
10.1.4 syslog への記録方法
ログメッセージを/var/log/hpcg/hpcg.logファイルに記録するのではなく、syslog に記録することも可能です。syslogにログメッセージを記録するには、/procディレクト リ以下の擬似ファイルへの書込みを行うことによって行います。
以下のように、/proc/sys/csec/use_syslogファイルに1を書き込むことによって、
syslogにログメッセージを記録することが可能です。ただし、このファイルへの書込み
にはCAP_MAC_ALARMケーパビリティが必要になります。
syslogへのログメッセージの記録を解除し、/var/log/hpcg/hpcg.logファイルへ記
# echo socket,inet,file > /proc/sys/csec/log̲denial
LOG̲DENIAL=inet,file LOG̲ALLOW=none
# echo all > /proc/sys/csec/log̲denial
# echo none > /proc/sys/csec/log̲denial
# echo 1 > /proc/sys/csec/use̲syslog あるいは、
# sysctl ?w csec.use̲syslog=1
録を戻す場合は、/proc/sys/csec/use_syslog擬似ファイルに0を書き込みます。
10.1.5 ログメッセージ取りこぼしの可能性
ログメッセージは、瞬間的に非常に多数のログ記録が発生するような場合には、仕組 み上、ディスクへの書込みが間に合わなくなる為、ログメッセージの取りこぼしが発生 する可能性があります。取りこぼしが発生した場合には、記録されたログメッセージの 信憑性は低下します。
Compartment Guard は、取りこぼしが発生するような状況を予め知らせる機能を
備えています。記録用のバッファーが全体の80%を超えた場合には、以下のようなメッ セージがログファイルに(syslogにも)記録されます。
その後、バッファーの使用率が全体の50%までに回復した場合は、以下のメッセージ がログファイルに(syslogにも)記録されます。
ログメッセージをsyslogに記録している場合は、これらのメッセージはsyslogに記録さ れません。
# echo 0 > /proc/sys/csec/use̲syslog あるいは、
# sysctl ?w csec.use̲syslog=0
hpcg: Warn: log buffer use exceeds 80%.
hpcg: Info: log buffer use is less than 50%.