freshclamが動かない。(SELinux関連)

事の起こりは サーバーOSのアップデート後 Logwatchのclam-update Beginの項に「動いてないよ」ってメッセージが記録されてた事。内容はこんな感じ。

No updates detected in the log for the freshclam daemon (the
 ClamAV update process).  If the freshclam daemon is not running,
 you may need to restart it.  Other options:
以下省略

サーバーにログインして/var/log/freshclam.logを調べてみた。以下のメッセージがひたすら続く。freshclamはrootで動かしてる。設定したのはずいぶん前なのでよく覚えていない。 たぶんClamAVをrootでチェックしてるのでfreshclamもrootで動かしているんだと思う。 

WARNING: lchown to user 'root' failed on log file '/var/log/freshclam.log'.  Error was 'Permission denied'
ERROR: Failed to switch to root user.

freshclamのステータスを調べてみたら 動いてない。

[]$ sudo systemctl status clamav-freshclam.service
× clamav-freshclam.service - ClamAV virus database updater
     Loaded: loaded (/usr/lib/systemd/system/clamav-freshclam.service; enabled; preset: disabled)
     Active: failed (Result: exit-code) since Tue 2024-11-05 15:14:59 JST; 9min ago
以下省略・・

色々ググって調べてみたけど これと言う情報は出てこない。

一時的にSELinuxを停止して試してみる。

[]$ setenforce 0
[]$ sudo systemctl restart clamav-freshclam.service

結果は省略するけど clamav-freshclam.serviceは動いた。
つまり原因はSELinux絡みか・・ 巷のサイトでは この後 SELinuxは邪魔なので無効化してしまえってのが多いけど、私のサイトの信条はSELinuxは絶対有効。
SELinuxを稼働状態に戻す。

[]$ setenforce 1

原因を探してみる。下記のコマンドでSELinuxのログファイルを調べて エラーの内容を報告してくれる。

[]$ sudo audit2allow -i /var/log/audit/audit.log

色々なエラーが出力されたけどその中でclamav-freshclam.serviceに関係ありそうなのはこれかな?

#============= antivirus_t ==============

#!!!! This avc can be allowed using the boolean 'domain_kernel_load_modules'
allow antivirus_t kernel_t:system module_request;
allow antivirus_t var_log_t:file setattr;

“domain_kernel_load_modules”の現在の設定を調べてみる。

[]$ sudo getsebool -a | grep domain
cron_userdomain_transition --> on
domain_can_mmap_files --> off
domain_can_write_kmsg --> off
domain_fd_use --> on
domain_kernel_load_modules --> off
samba_domain_controller --> off
sge_domain_can_network_connect --> off
virt_transition_userdomain --> off

offになっていたのでONにする。

[]$ sudo setsebool -P domain_kernel_load_modules ON

freshclamを試しに動かしてみる

[]$ sudo systemctl restart clamav-freshclam.service
[]$ sudo systemctl status clamav-freshclam.service
結果省略

まだエラーになる。
もう一度ログからfreshclamに関するエラーについて出力する。
メッセージが変わってる。 ポリシーを変えるしか方法が無いようだ。
今回はfreshclamに関するエラーメッセージだけを出力してみた。

[]$ sudo ausearch -m AVC -c freshclam | sudo audit2allow -a


#============= antivirus_t ==============

#!!!! This avc is allowed in the current policy
allow antivirus_t kernel_t:system module_request;
allow antivirus_t var_log_t:file setattr;

ログファイルから新しいポリシーファイルを出力する。
-Mオプションのfreshclamは出力するファイル名を指定してるだけなので何でも良い。分かりやすいように同じ名前にした。

[]$ sudo ausearch -m AVC -c freshclam | sudo audit2allow -a -M freshclam
******************** 重要 ***********************
このポリシーパッケージを有効にするには、以下を実行してください。

semodule -i freshclam.pp

出力されたファイルはこんな感じ。ちなみにxxx.ppファイルは設定されるポリシーの内容がテキスト交じりのバイナリデータで入ってる。xxx.teがテキストファイルで設定される内容が確認できる。見てもよく解らないけど・・・ (大汗

[]$ ll
合計 20
-rw-r--r--. 1 root root 1204 11  5 16:10 freshclam.pp
-rw-r--r--. 1 root root  323 11  5 16:10 freshclam.te
・・以下省略

指示された通りにコマンド実行して 新しいポリシーを設定する。

[]$ sudo semodule -i freshclam.pp

再度 freshclamを実行してみる。

[]$ sudo systemctl restart clamav-freshclam.service
[]$ sudo systemctl status clamav-freshclam.service
 clamav-freshclam.service - ClamAV virus database updater
     Loaded: loaded (/usr/lib/systemd/system/clamav-freshclam.service; enabled; preset: disabled)
     Active: active (running) since Tue 2024-11-05 16:18:16 JST; 9s ago
以下省略

上手く動き出したようだ。

厄介だ~~!

 いつの間にやらSELinuxの設定が変わっている模様。

 このブログであるwordpressを久しぶりに更新しようと思って ダッシュボード-更新の中にある「更新」ボタンをポチッたんだが・・・ データの書き込みエラーが発生してるみたいで更新できない。 

 こう言う”SELlinux絡みの更新できない事件”は 過去にも多数あって それなりに経験値は上がってるはずなんだけど、ラベルを ”public_content_rw_t”に切り替えるという いつもの対策が通じなかった。しかも いつの間にか ラベルが”public_content_t”に戻ってしまっている。 或いは ラベルの切り替えが上手く行かなかったのか?

 結局 setenforce 0で SELinuxを一時的に無効化して wordpressの更新は出来たけど、毎回無効化するのは 何というか 芸がないというか 白旗を上げてるみたいで気に入らない。

 この件 検証の必要あり。

—追記—

 どうやら久しぶりのアップデートで 操作を間違えていたようだ。 追加のテストでラベルを ”public_content_rw_t”に切り替えて上手く更新できた。 やはりラベルを “public_content_rw_t”に切り替える事が上手くできていなかった模様。

 厄介なのは 錆付いてる自分の頭くぁ~~~?

SELinuxのポリシーを修正する。

前回の記事でquotaの初期化に失敗した。そこでquotaとSelinuxの絡んだ記事を検索して調べてみた。

その結果 これと言った解決策は見つからなかった。 日本語のページに至っては 「Selinuxを外してしまえ」と言う記事しか見つからなかった。これはもうポリシーを修正するしかねーべって事で Selinuxのポリシーをゴニョゴニョしてみる。
“SELinuxのポリシーを修正する。” の続きを読む

ディスククォータを設定する その1

いつの間にやらdarkgrayサーバに30以上のユーザーが登録されてる。その殆どは私個人の捨てメアド取得目的のダミーユーザーなんだが 数は少ないながら ホームページ等々の管理用ユーザーやら 近親者、関係者への貸出のために登録したユーザーもある。

ディレクトリの一覧を見て そのユーザーを何のために登録したのか? 自分でも分からなくなりつつある。 ユーザー管理の一端を担わせる為に ディスククオータを導入してみる。
“ディスククォータを設定する その1” の続きを読む