今年も,中秋の名月(9月30日)は見えませんでした。台風17号の余波か厚い雲に隠れていまして。明夜(10月1日)は晴れそうなので,今年も十六夜の月見をしようかなと思っているところです。七夕は,昔の暦通りに行なえば,結構2人の逢瀬を叶えてやれそうな風習ですが,八月十五夜は厳しいですね。なかなか,晴れ上がってくれません。もっとも,晴れると本当に素晴らしい月夜になりますが……
さて,本題の中間報告です。
CentOS6の練習-#8を書く前の時点で,実は手を焼いていたことがあった。その件について「clamdscan,User rootでもPermission deniedが出る。」という表題で,「はじめての自宅サーバ構築」さんのところに質問を書いたが,どなたからも,お返事がなかった。しばらく思案投げ首ののち,SELinuxが足を引っ張っているという可能性に思い至り,
$ sudo setenforce 0
をやって,Permissive かつ User root でclamdscanを走らせてみた。走らせる前に
$ sudo /etc/rc.d/init.d/clamd restart
もやった。ところがこれでも,lstat() failed: Permission denied. ERROR がでる。いい加減お手上げで,あきらめて,Apacheのrpmのビルドに走った。しかし,サーバを走らせるとなれば,ClamAVを避けては通れない。それに,clamscanだけでなくclamdscanも使ってみたい。しかし,ググってみても,Permissive かつ User root でもエラーが出るなどという情報はどうしても探し出せなかった。もう少し分かっているシステムならいざ知らず,これだけ分からないことばかりでは,自力解決を望む方が無理である。
さて,どうするか。
ビルド環境もやっとできたところなのに癪だが,CentOS6.3 Mimimalを再インストールしてみる道を選んだ。何故って,Windowsだって,95を初めて自分用に手に入れたとき,どんだけソフト的に壊して,リカバリを繰り返したもんか。それを思い出して,今回も同じじゃないかと思ったわけ。
で,結果,これがよかった。といっても,この時点でクリアできたのは,「Permissive かつ User root で clamdscan を走らせること」だけだ。
当面の目標は,「Enforcing かつ User clamav で clamdscan を走らせること」なのだが……。[セキュアOS SELinux入門]第6回 最も簡単な設定方法を見つけたので,/var/log/messages を覗いてみたが,ここには,記事に記述されているようなメッセージが全く出ていない。記事の日付が2004/07/13と古いので,これからいろいろ変わっている可能性がある。ググって他のところも読んでみたのだが,この時点では,うまいページが見つからない。自分がよくわからないまま探しているときはよくある話だ。わかるようになると,「なんであのときは見つからなかったの?」というくらい適切なページが見つかるようになるのだが。
しばらくあちこちウロウロしていたが,腹をくくって,SELinux Project に行き,NewUsersのところを見ていたら,The SELinux Notebook – The Foundations (3rd Edition)というのがあるようなので,これを落としてきた。これ,なんと日付が9月2日になっていて,出たばかりみたいだ。14ページに表があって,そこに書いていることを調べてみたら,CentOS6.3では,Old Locationと書かれている方の場所に関係ファイルがある。そこで,The SELinux Notebook – The Foundations(2nd Edition)も落としてきた。落としてからこっち,大分読み齧ってみたんだが,何しろ知らないことばかりを書いてあるものだから,よくわからない。しかし,/var/log/audit/audit.log にまでは,たどり着いた。audit(監査)デーモンがロードされたのちは,こちらにログが吐き出されるらしい。起動直後でも,$ chkconfig –list|grep auditd をやって確認してみるとonになっているから,/var/log/messagesに何もなかったわけだ。
そこで,(1) Enforcing+User clamav,(2) Permissive+User clamav,(3) Enforcing+User root,(4) Permissive+User root の場合について,audit.log を調べてみた。/home/centos で $ clamdscan をやった場合,(1)~(3)においては, lstat() failed: Permission denied. ERROR が出る。(4)の場合のみ,OKになる。ただし,avc: denied が出ているので,Permissiveモードだから通っているだけだと分かる。これについて,新しくポリシーを作ってやればいいらしい。
この辺はまだよく理解できていないので,中間報告としては,ここまでにしておこうと思う(汗)。