SELinuxについて



●SELinuxって何?

 参考URL:第1章 はじめに
 参考URL:SELinux を使おう.使ってくれ.

 レッドハットのページには、SELinuxについて下記のように記載されています。
 「SELinux (Security-Enhanced Linux) は Linux カーネルに MAC (Mandatory Access Control) を実装するもので、標準の Discretionary Access Controls (DAC: 任意アクセス制御) を確認した後で許可される操作をチェックします。SELinux は、定義されたポリシーを基に Linux システム内のファイルやプロセスおよびその他のアクションにルールを強制できます。」
  :
 (中略)
  :
 「SELinux を使用すると Linux カーネルに MAC (強制アクセス制御) が追加され、Red Hat Enterprise Linux ではデフォルトで有効になります。汎用の MAC アーキテクチャーは、各種のセキュリティー関連情報を含むラベルを決定基準として、管理者が設定したセキュリティーポリシーをシステム内の全プロセスおよびファイルに対して強制する能力を必要とします。これが適切に実装されると、システム自体が的確に自己防御され、アプリケーションを改ざんから保護、回避することでアプリケーションの安全性に必須のサポートを提供します。MAC ではアプリケーション同士が確実に分離されるため、信頼性の低いアプリケーションでも安全に実行することができます。プロセス実行に関する権限を制限する機能により、アプリケーションやシステムサービス内の脆弱性を悪用することで発生する可能性のある被害の範囲を限定することができます。限られた権限しか持たない正規ユーザーだけでなく、権限を与えられたユーザーが不正なアプリケーションを知らずに実行してしまった場合でも、MAC で情報を保護することができます。」

 ただこれまでは、SELinuxを設定するとプログラムが正常に動作しないとか思い通り動作しないとか設定が煩わしい等の否定的な意見が多く導入を意識的に見送っていました。
 最近、多種多様のウィルスや攻撃でサイトを乗っ取られることが多くなってきています。このことは、企業だけでなく個人で運用しているサーバもその対象となっており、事実よく耳にしています。
 ここまで来ると、さすがに個人で運用しているサーバでもSELinuxの恩恵を受ける必要があるのではないかと思い始め、SELinuxの導入にチャレンジしてみました。

 で、インターネットの情報を参考にSELinuxを有効化したところ、すぐに問題が表面化しました(apacheが起動しない、Webページにアクセスできない、Zabbix等の監視ツールが動作しない、apacheのログローテーションができない、等)。
 いきなりモードを「Enforcing」にすると上記のような状態となってしまいます。
 初めてSELinuxを導入するに当たってはいつでも停止や再起動できるサーバで試験することをお薦めします。
 このため、まず、「Disabled」から「Permissive」に変更し再起動します。ポリシーを適用するため再起動に少し時間がかかります。
 Permissiveの状態で様々な検証を実施し問題が無ければ「Permissive」から「Enforcing」に移行します。

 まずは、下記URLを参照してみてはいかがだろうか。

 参考URL:「SELinuxのせいで動かない」撲滅ガイド

●SELinuxの無効化・有効化

 SELinuxの無効化及び有効化の方法は「SELinuxの無効化・有効化」を参照してください。

●SELinuxの状態確認方法

 参考URL:SELinuxの状態を変更する

 SELinuxの状態確認は2通りあります。
# getenforce
Permissive
※出力結果の意味
Enforcing:有効(ポリシーにしたがって動作し、監査ログを記録する)
Permissive:有効(監査ログのみ記録する)
Disabled:無効(何もしない)
# sestatus
(現在の状態とともに設定ファイルの状態も出力する。)
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      30


●SELinuxをEnforcingまたはPermissiveにする

 現在の状態をコマンドでEnforcingに変更するには、下記のようにします。
 ただし、再起動時に設定が元の状態に戻ります。また、Disabledの状態からEnforcingに変更することはできません。
# getenforce
Permissive
# setenforce 1
# getenforce
Enforcing

 OSの起動時に状態を変更するには、下記のようにします。設定後はsestatusコマンドにエラーがないことを確認します。
# vim/etc/selinux/config
SELINUX=enforcing ← 変更
SELINUXTYPE=targeted


 現在の状態をEnforcingからPermissiveに変更するには、下記のようにします。
 ただし、再起動時に設定が元の状態に戻ります。また、Disabledの状態からPermissiveに変更することはできません。
# getenforce
Enforcing
# setenforce 0
# getenforce
Permissive

 OSの起動時に状態を変更するには、下記のようにします。設定後はsestatusコマンドにエラーがないことを確認します。
# vim/etc/selinux/config
SELINUX=permissive ← 変更
SELINUXTYPE=targeted


●SELinux有効(Enforcing)にするとZabbixが正常に動作しない場合の対処法

 参考URL:【CentOS7.2】【ZABBIX3.2.0】zabbix-agentdが起動しない

 zabbix-agentが動作しているサーバでSELinuxをEnforcingにしたところzabbix-serverとの通信が途切れ、一部監視が出来なくなりました。
 ググったところ上記を参考に対策し正常に通信出来るようになりました。
# cd /tmp
# grep zabbix_agent /var/log/audit/audit.log | audit2allow
#============= zabbix_agent_t ==============
allow zabbix_agent_t apcupsd_port_t:tcp_socket name_connect;
allow zabbix_agent_t http_cache_port_t:tcp_socket name_connect;
allow zabbix_agent_t mysqld_etc_t:file { open read };
#!!!! The file '/var/lib/mysql/mysql.sock' is mislabeled on your system.  
#!!!! Fix with $ restorecon -R -v /var/lib/mysql/mysql.sock
#!!!! This avc can be allowed using the boolean 'daemons_enable_cluster_mode'
allow zabbix_agent_t mysqld_t:unix_stream_socket connectto;
allow zabbix_agent_t mysqld_var_run_t:sock_file write;
allow zabbix_agent_t nfs_port_t:tcp_socket name_connect;
#!!!! This avc can be allowed using the boolean 'nis_enabled'
allow zabbix_agent_t portmap_port_t:tcp_socket name_connect;
#!!!! This avc can be allowed using the boolean 'nis_enabled'
allow zabbix_agent_t rsync_port_t:tcp_socket name_connect;
allow zabbix_agent_t zabbix_var_lib_t:file { open read };
# grep zabbix_agent /var/log/audit/audit.log | audit2allow -M zabbix-limit
******************** IMPORTANT ***********************
To make this policy package active, execute:
semodule -i zabbix-limit.pp
# semodule -i zabbix-limit.pp
# systemctl restart zabbix-agent
 この後、SELinuxをEnforcingに変更しても問題なく監視出来るようになりました。

 下記はうまくいきませんでした。

 参考URL:SELinux 有効環境で zabbix-agent 動かすときのポリシーファイル

# vi zabbix-agent.te
# make
Compiling targeted zabbix-agent module
/usr/bin/checkmodule: loading policy configuration from tmp/zabbix-agent.tmp
zabbix-agent.te:2:ERROR 'Building a policy module, but no module specification found.
' at token 'require' on line 991:
#line 1 "zabbix-agent.te"
require {
/usr/bin/checkmodule: error(s) encountered while parsing configuration
/usr/share/selinux/devel/include/Makefile:154: ターゲット 'tmp/zabbix-agent.mod' のレシピで失敗しました
make: *** [tmp/zabbix-agent.mod] エラー 1


 正常にコンパイル出来なかった。

●/var/log/messagesに記録されたSELinux関連の対処について

 下記のようなログを見つけました。

Aug 24 16:55:09 mercury setroubleshoot[20549]: SELinux is preventing uptime from read access on the file utmp. For complete SELinux messages run: sealert -l 4898375c-7c42-42e2-a555-b36024a18fac
Aug 24 16:55:09 mercury python3[20549]: SELinux is preventing uptime from read access on the file utmp.#012#012***** Plugin catchall (100. confidence) suggests **************************#012#012If you believe that uptime should be allowed read access on the utmp file by default.#012Then you should report this as a bug.#012You can generate a local policy module to allow this access.#012Do#012allow this access for now by executing:#012# ausearch -c 'uptime' --raw | audit2allow -M my-uptime#012# semodule -X 300 -i my-uptime.pp#012
Aug 24 16:55:09 mercury audit[746]: USER_AVC pid=746 uid=81 auid=4294967295 ses=4294967295 subj=system_u:system_r:system_dbusd_t:s0-s0:c0.c1023 msg='avc: denied { send_msg } for msgtype=signal interface=org.fedoraproject.SetroubleshootdIface member=alert dest=org.freedesktop.DBus spid=20549 tpid=3259 scontext=system_u:system_r:setroubleshootd_t:s0-s0:c0.c1023 tcontext=system_u:system_r:initrc_t:s0 tclass=dbus#012 exe="/usr/bin/dbus-daemon" sauid=81 hostname=? addr=? terminal=?'
Aug 24 16:55:09 mercury setroubleshoot[20549]: SELinux is preventing uptime from read access on the file utmp. For complete SELinux messages run: sealert -l 4898375c-7c42-42e2-a555-b36024a18fac
Aug 24 16:55:09 mercury python3[20549]: SELinux is preventing uptime from read access on the file utmp.#012#012***** Plugin catchall (100. confidence) suggests **************************#012#012If you believe that uptime should be allowed read access on the utmp file by default.#012Then you should report this as a bug.#012You can generate a local policy module to allow this access.#012Do#012allow this access for now by executing:#012# ausearch -c 'uptime' --raw | audit2allow -M my-uptime#012# semodule -X 300 -i my-uptime.pp#012

 対応します。

# cd /tmp

ログに記載されている「run」の(緑色で示した)部分を実行します。

# sealert -l 4898375c-7c42-42e2-a555-b36024a18fac
SELinux is preventing uptime from read access on the file utmp.

***** Plugin catchall (100. confidence) suggests **************************

If uptime に、 utmp file の read アクセスがデフォルトで許可されるべきです。
Then バグとして報告してください。
ローカルのポリシーモジュールを生成すると、このアクセスを許可することができます。
Do allow this access for now by executing:
# ausearch -c 'uptime' --raw | audit2allow -M my-uptime
# semodule -X 300 -i my-uptime.pp



Additional Information:
Source Context system_u:system_r:httpd_sys_script_t:s0
Target Context system_u:object_r:initrc_var_run_t:s0
Target Objects utmp [ file ]
Source uptime
Source Path uptime
Port
Host serverA.bigbang.mydns.jp
Source RPM Packages
Target RPM Packages
Policy RPM selinux-policy-3.13.1-225.19.fc25.noarch
Selinux Enabled True
Policy Type targeted
Enforcing Mode Enforcing
Host Name serverA.bigbang.mydns.jp
Platform Linux serverA.bigbang.mydns.jp
4.12.8-200.fc25.i686+PAE #1 SMP Thu Aug 17
16:02:04 UTC 2017 i686 i686
Alert Count 1149
First Seen 2017-08-24 09:45:05 JST
Last Seen 2017-08-24 16:53:56 JST
Local ID 4898375c-7c42-42e2-a555-b36024a18fac

Raw Audit Messages
type=AVC msg=audit(1503561236.776:16696): avc: denied { read } for pid=20079 comm="uptime" name="utmp" dev="tmpfs" ino=12384 scontext=system_u:system_r:httpd_sys_script_t:s0 tcontext=system_u:object_r:initrc_var_run_t:s0 tclass=file permissive=0


Hash: uptime,httpd_sys_script_t,initrc_var_run_t,file,read

ログに記載されている(緑色で示した)部分を実行します。

# ausearch -c 'uptime' --raw | audit2allow -M my-uptime
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i my-uptime.pp

# semodule -i my-uptime.pp
# ← コマンドプロンプトの応答があり、特段の出力が無ければ作業は完了


 以上の作業により/var/log/messagesに記録されていたログは停止します。

●SELinuxを有効にするとapacheが起動しない

 参考URL:Apache のポート番号を変えると Permission Denied でエラーとなる件

# systemctl status -l httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: Disabled)
Active: failed (Result: exit-code) since 木 2017-09-14 18:32:55 JST; 36s ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 30234 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
Process: 30226 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
Main PID: 30226 (code=exited, status=1/FAILURE)

9月 14 18:32:55 serverA.bigbang.mydns.jp httpd[30226]: (13)Permission denied: AH00072: make_sock: could not bind to address [::]:8888
9月 14 18:32:55 serverA.bigbang.mydns.jp httpd[30226]: (13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:8888
9月 14 18:32:55 serverA.bigbang.mydns.jp httpd[30226]: no listening sockets available, shutting down
9月 14 18:32:55 serverA.bigbang.mydns.jp httpd[30226]: AH00015: Unable to open logs
9月 14 18:32:55 serverA.bigbang.mydns.jp systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
9月 14 18:32:55 serverA.bigbang.mydns.jp kill[30234]: kill: cannot find process ""
9月 14 18:32:55 serverA.bigbang.mydns.jp systemd[1]: httpd.service: control process exited, code=exited status=1
9月 14 18:32:55 serverA.bigbang.mydns.jp systemd[1]: Failed to start The Apache HTTP Server.
9月 14 18:32:55 serverA.bigbang.mydns.jp systemd[1]: Unit httpd.service entered failed state.
9月 14 18:32:55 serverA.bigbang.mydns.jp systemd[1]: httpd.service failed.


 apacheで使用するポートを加える必要があります。
 作業前のポートは下記のとおりです。
# semanage port -l|grep http_port_t
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
 ここにエラーとなった「8888」番ポートを加えます。
# semanage port -a -t http_port_t -p tcp 8888
 これでSELinux有効化状態でapacheを再起動することが出来るようになりました。

◆ポート追加でも正常に再起動できない場合
 ポートを追加しても正常に再起動できない場合は、下記のように対応してください。

# cd /tmp
# grep httpd /var/log/audit/audit.log | audit2allow -M my-httpd
******************** IMPORTANT ***********************
To make this policy package active, execute:

# semodule -i my-httpd.pp
 作業はここまで

 my-httpd.teの中身は下記のとおり
# cat my-httpd.te

module my-httpd 1.0;

require {
type amanda_port_t;
type snmpd_var_lib_t;
type httpd_t;
class tcp_socket name_bind;
class dir read;
class file { getattr open read };
}

#============= httpd_t ==============

#!!!! This avc is allowed in the current policy
allow httpd_t amanda_port_t:tcp_socket name_bind;

#!!!! This avc is allowed in the current policy
allow httpd_t snmpd_var_lib_t:dir read;

#!!!! This avc is allowed in the current policy
allow httpd_t snmpd_var_lib_t:file { getattr open read };


 設定反映後、apacheは問題なく正常に再起動できました。

●lsyncd+rsyncで同期できない

 参考URL:Apache のポート番号を変えると Permission Denied でエラーとなる件
 参考URL:SELinux : ログを確認する

 コピー先のサーバ上でSELinuxを有効にするとコピー元から同期することが出来ませんでした(rsync: mkstemp "ファイル名" (in html) failed: Permission denied (13))。
 解決方法が分かりましたので手順を記載します。

# ausearch -m AVC time->Fri Oct 6 13:07:22 2017
type=PROCTITLE msg=audit(1507262842.386:1182184): proctitle=2F7573722F62696E2F7273796E63002D2D6461656D6F6E002D2D6E6F2D646574616368
type=SYSCALL msg=audit(1507262842.386:1182184): arch=c000003e syscall=2 success=no exit=-13 a0=7fffc4419c30 a1=c2 a2=180 a3=59d7017a items=0 ppid=22844 pid=22847 auid=4294967295 uid=0 gid=10 euid=0 suid=0 fsuid=0 egid=10 sgid=10 fsgid=10 tty=(none) ses=4294967295 comm="rsync" exe="/usr/bin/rsync" subj=system_u:system_r:rsync_t:s0 key=(null)
type=AVC msg=audit(1507262842.386:1182184): avc: denied { write } for pid=22847 comm="rsync" path="/var/www/html/ファイル名.nyvzjV" dev="dm-1" ino=135579792 scontext=system_u:system_r:rsync_t:s0 tcontext=system_u:object_r:public_content_t:s0 tclass=file
# audit2allow -M my-rsync < /var/log/audit/audit.log
# semodule -i my-rsync.pp


 その後、同期させたところ正常に同期されました。

 しかしその後、一日一回NAMAZU(全文検索システム)のインデックス作成を実施しているのですが、この部分の同期が拒否されていることが判明しました。これについては、次項目として記載させていただきます。

●NAMAZU(全文検索システム)のインデックスが同期されない

 参考URL:SELinux audit2allowを使った問題の解決 - 実践Linux

 上記ページを参考に下記を実施しました。
# cd /tmp
# audit2allow -a -l -m my-namazu
module my-namazu 1.0;
require {
	type init_t;
	type rsync_t;
	type usr_t;
	type logrotate_t;
	class service reload;
	class dir { setattr write };
}
#============= logrotate_t ==============
allow logrotate_t init_t:service reload;
#============= rsync_t ==============
#!!!! WARNING: 'usr_t' is a base type.
#!!!! This avc can be allowed using the boolean 'rsync_full_access'
allow rsync_t usr_t:dir { setattr write };
# rsyncの組み込みルールの有効/無効状態(boolean)を確認
# getsebool -a | grep rsync
postgresql_can_rsync --> off
rsync_anon_write --> on
rsync_client --> off
rsync_export_all_ro --> on
rsync_full_access --> off
# setsebool -P rsync_full_access on
# rsyncの組み込みルールの有効/無効状態(boolean)を再確認
# getsebool -a | grep rsync
postgresql_can_rsync --> off
rsync_anon_write --> on
rsync_client --> off
rsync_export_all_ro --> on
rsync_full_access --> off

 これで様子を見たいと思います(20171010)。

 問題なくコピーされたことを確認できました(20171010)。

●apacheのログがローテーションされない

 対応完了まで約2週間要してしまいました。

 3回目の対処

 OSバージョンが同じで別物理サーバの方が正常にローテーションしていましたので、それを参考に正常にローテーションさせたいサーバに適用します。
 適用させた内容は下記のとおりです。

module my-logrotate 1.0;

require {
type rpm_var_lib_t;
type logrotate_t;
type fail2ban_client_t;
type init_t;
class capability net_admin;
class process { noatsecure rlimitinh siginh };
class file { getattr read write };
class service reload;
}

#============= logrotate_t ==============
allow logrotate_t fail2ban_client_t:process { noatsecure rlimitinh siginh };
allow logrotate_t init_t:service reload;
allow logrotate_t rpm_var_lib_t:file { getattr read write };
allow logrotate_t self:capability net_admin;


 allow行のどれを適用することによりローテーションが正常に動作するのかは不明です。
 しかし、「fail2ban_client_t」は別途サービスであることは明かですので、この部分の「type」と「class」は削除しても影響無いと思われます。

 my-logrotate.teを作成し、そこからmy-logrotate.ppを生成しました。

#### 手動でteファイルを作成
# vi my-logrotate.te

#### teファイルからモジュールファイルを作成
# checkmodule -M -m -o my-logrotate.mod my-logrotate.te
checkmodule: loading policy configuration from my-logrotate.te
checkmodule: policy configuration loaded
checkmodule: writing binary representation (version 17) to my-logrotate.mod

#### モジュールファイルからポリシーパッケージファイル(ppファイル)を作成
# semodule_package -o my-logrotate.pp -m my-logrotate.mod

#### ポリシーパッケージファイル(ppファイル)をインストール
# semodule -i my-logrotate.pp


 設定が反映されているか確認します。

# sesearch -A -C -s logrotate_t|grep fail2ban_client_t
allow logrotate_t fail2ban_client_t : process { transition noatsecure siginh rlimitinh } ;
# sesearch -A -C -s logrotate_t|grep init_t
allow logrotate_t init_t : unix_stream_socket { getattr sendto connectto } ;
allow logrotate_t init_t : lnk_file { read getattr } ;
allow domain init_t : process { sigchld signull } ;
allow logrotate_t init_t : service reload ;
allow logrotate_t init_t : dir { getattr search open } ;
allow logrotate_t init_t : system reload ;
allow logrotate_t init_t : file { ioctl read getattr lock open } ;
# sesearch -A -C -s logrotate_t|grep rpm_var_lib_t
allow logrotate_t rpm_var_lib_t : file { read write getattr open } ;
# sesearch -A -C -s logrotate_t|grep net_admin
allow logrotate_t logrotate_t : capability { chown dac_override dac_read_search fowner fsetid kill setgid setuid net_admin sys_ptrace sys_nice sys_resource audit_write } ;


 正常にログローテーションするか待ちます(20171019)。

 正常にログローテーションされました(20171020)

 2回目の対処

 参考URL:SELinuxでlogrotateが失敗した話

 /var/log/httpd以下のログローテーションの失敗原因がなかなか解決しません。
 関連ありそうなファイルやディレクトリのコンテキスト(タイプ)を調べてみます。
# ls -Z /etc/crontab
-rw-r--r--. root root system_u:object_r:system_cron_spool_t:s0 /etc/crontab
# ls -Z /etc/logrotate.d/httpd
-rw-r--r--. root root system_u:object_r:etc_t:s0       /etc/logrotate.d/httpd
# ls -dZ /var/log
drwxr-xr-x. root root system_u:object_r:var_log_t:s0   /var/log
# ls -dZ /var/log/httpd
drwx------. root root system_u:object_r:var_log_t:s0   /var/log/httpd
# ls -Z /var/log/httpd/access_log
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 /var/log/httpd/access_log
 調べましたが監査ログ(/var/log/audit/audit.log)に記録が残らないためどうもできない状態です。

 ところが解決策が見つかりました。
 「●cactiでSELinuxを有効化したサーバの監視グラフが一部描画できない」を参照してください。
 ただし、1回の作業だけでは当問題の解決に至らないようです(20171012)。
 20171017現在問題は解決されていません。

 ◆20171017の状態
 再度「/var/log/httpd」ディレクトリのコンテキストを確認したところ、タイプ「var_log_t」が設定されていました。

# ls -dZ /var/log/httpd
drwx------. root root system_u:object_r:var_log_t:s0 /var/log/httpd
# semanage fcontext -a -t httpd_log_t '/var/log/httpd'
# restorecon -Frvv /var/log/httpd
restorecon reset /var/log/httpd context system_u:object_r:var_log_t:s0->system_u:object_r:httpd_log_t:s0
# ls -dZ /var/log/httpd
drwx------. root root system_u:object_r:httpd_log_t:s0 /var/log/httpd


 作業を実施し「/var/log/httpd」のコンテキストのタイプを「httpd_log_t」に変更しました。これで様子を見ます。

 ◆20171018の状態
 状況変わらず(20171018現在)。

/var/log/httpdがローテーションされなかった時のログ(ただし、このログは同じOSであるがサーバは別物から取得)

# less /var/log/messages
Oct 18 04:15:11 serverA logrotate: ALERT exited abnormally with [1]

# ausearch -m avc
time->Wed Oct 18 04:15:09 2017
type=PROCTITLE msg=audit(1508267709.642:1850042):
proctitle=2F7573722F62696E2F707974686F6E32002D73002F7573722F62696E2F6661696C3262616E2D636C69656E7400666C7573686C6F6773 type=SYSCALL msg=audit(1508267709.642:1850042): arch=c000003e syscall=59 success=yes exit=0 a0=882470 a1=881510 a2=8810a0 a3=7ffcba58df00 items=0 ppid=17742 pid=17743 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="fail2ban-client" exe="/usr/bin/python2.7" subj=system_u:system_r:fail2ban_client_t:s0-s0:c0.c1023 key=(null) type=AVC msg=audit(1508267709.642:1850042): avc: denied { noatsecure } for pid=17743 comm="fail2ban-client" scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:system_r:fail2ban_client_t:s0-s0:c0.c1023 tclass=process
type=AVC msg=audit(1508267709.642:1850042): avc: denied { siginh } for pid=17743 comm="fail2ban-client" scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:system_r:fail2ban_client_t:s0-s0:c0.c1023 tclass=process
type=AVC msg=audit(1508267709.642:1850042): avc: denied { rlimitinh } for pid=17743 comm="fail2ban-client" scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:system_r:fail2ban_client_t:s0-s0:c0.c1023 tclass=process
----
time->Wed Oct 18 04:15:10 2017
type=PROCTITLE msg=audit(1508267710.125:1850043): proctitle=72706D002D716C0061777374617473 type=SYSCALL msg=audit(1508267710.125:1850043): arch=c000003e syscall=2 success=no exit=-13 a0=255d4e0 a1=42 a2=1a4 a3=7fff77034b50 items=0 ppid=17757 pid=17758 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="rpm" exe="/usr/bin/rpm" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267710.125:1850043): avc: denied { read write } for pid=17758 comm="rpm" name=".dbenv.lock" dev="dm-1" ino=67109061 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:rpm_var_lib_t:s0 tclass=file
----
time->Wed Oct 18 04:15:10 2017
type=PROCTITLE msg=audit(1508267710.126:1850044): proctitle=72706D002D716C0061777374617473
type=SYSCALL msg=audit(1508267710.126:1850044): arch=c000003e syscall=4 success=no exit=-13 a0=25584b0 a1=7fff77034870 a2=7fff77034870 a3=1 items=0 ppid=17757 pid=17758 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="rpm" exe="/usr/bin/rpm" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267710.126:1850044): avc: denied { getattr } for pid=17758 comm="rpm" path="/var/lib/rpm/Packages" dev="dm-1" ino=67109065 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:rpm_var_lib_t:s0 tclass=file
----
time->Wed Oct 18 04:15:10 2017
type=PROCTITLE msg=audit(1508267710.126:1850045): proctitle=72706D002D716C0061777374617473
type=SYSCALL msg=audit(1508267710.126:1850045): arch=c000003e syscall=4 success=no exit=-13 a0=25584b0 a1=7fff77034930 a2=7fff77034930 a3=0 items=0 ppid=17757 pid=17758 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="rpm" exe="/usr/bin/rpm" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267710.126:1850045): avc: denied { getattr } for pid=17758 comm="rpm" path="/var/lib/rpm/Packages" dev="dm-1" ino=67109065 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:rpm_var_lib_t:s0 tclass=file
----
time->Wed Oct 18 04:15:10 2017
type=PROCTITLE msg=audit(1508267710.186:1850046): proctitle=7
2706D002D716C0061777374617473 type=SYSCALL msg=audit(1508267710.186:1850046): arch=c000003e syscall=2 success=no exit=-13 a0=2563f70 a1=42 a2=1a4 a3=3 items=0 ppid=17757 pid=17758 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="rpm" exe="/usr/bin/rpm" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267710.186:1850046): avc: denied { read write } for pid=17758 comm="rpm" name=".dbenv.lock" dev="dm-1" ino=67109061 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:rpm_var_lib_t:s0 tclass=file
----
time->Wed Oct 18 04:15:10 2017
type=PROCTITLE msg=audit(1508267710.187:1850047): proctitle=72706D002D716C0061777374617473
type=SYSCALL msg=audit(1508267710.187:1850047): arch=c000003e syscall=4 success=no exit=-13 a0=254e9d0 a1=7fff77034930 a2=7fff77034930 a3=1 items=0 ppid=17757 pid=17758 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="rpm" exe="/usr/bin/rpm" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267710.187:1850047): avc: denied { getattr } for pid=17758 comm="rpm" path="/var/lib/rpm/Packages" dev="dm-1" ino=67109065 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:rpm_var_lib_t:s0 tclass=file
----
time->Wed Oct 18 04:15:10 2017
type=PROCTITLE msg=audit(1508267710.187:1850048): proctitle=72706D002D716C0061777374617473
type=SYSCALL msg=audit(1508267710.187:1850048): arch=c000003e syscall=4 success=no exit=-13 a0=254e9d0 a1=7fff770349f0 a2=7fff770349f0 a3=0 items=0 ppid=17757 pid=17758 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="rpm" exe="/usr/bin/rpm" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267710.187:1850048): avc: denied { getattr } for pid=17758 comm="rpm" path="/var/lib/rpm/Packages" dev="dm-1" ino=67109065 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:rpm_var_lib_t:s0 tclass=file
----
time->Wed Oct 18 04:15:10 2017
type=PROCTITLE msg=audit(1508267710.243:1850049): proctitle=72706D002D716C0061777374617473
type=SYSCALL msg=audit(1508267710.243:1850049): arch=c000003e syscall=2 success=no exit=-13 a0=25684e0 a1=42 a2=1a4 a3=7ffe894617e0 items=0 ppid=17765 pid=17766 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="rpm" exe="/usr/bin/rpm" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267710.243:1850049): avc: denied { read write } for pid=17766 comm="rpm" name=".dbenv.lock" dev="dm-1" ino=67109061 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:rpm_var_lib_t:s0 tclass=file
----
time->Wed Oct 18 04:15:10 2017
type=PROCTITLE msg=audit(1508267710.243:1850050): proctitle=72706D002D716C0061777374617473
type=SYSCALL msg=audit(1508267710.243:1850050): arch=c000003e syscall=4 success=no exit=-13 a0=25634b0 a1=7ffe89461500 a2=7ffe89461500 a3=1 items=0 ppid=17765 pid=17766 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="rpm" exe="/usr/bin/rpm" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267710.243:1850050): avc: denied { getattr } for pid=17766 comm="rpm" path="/var/lib/rpm/Packages" dev="dm-1" ino=67109065 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:rpm_var_lib_t:s0 tclass=file
----
time->Wed Oct 18 04:15:10 2017
type=PROCTITLE msg=audit(1508267710.243:1850051): proctitle=72706D002D716C0061777374617473
type=SYSCALL msg=audit(1508267710.243:1850051): arch=c000003e syscall=4 success=no exit=-13 a0=25634b0 a1=7ffe894615c0 a2=7ffe894615c0 a3=0 items=0 ppid=17765 pid=17766 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="rpm" exe="/usr/bin/rpm" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267710.243:1850051): avc: denied { getattr } for pid=17766 comm="rpm" path="/var/lib/rpm/Packages" dev="dm-1" ino=67109065 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:rpm_var_lib_t:s0 tclass=file
----
time->Wed Oct 18 04:15:10 2017
type=PROCTITLE msg=audit(1508267710.244:1850052): proctitle=72706D002D716C0061777374617473
type=SYSCALL msg=audit(1508267710.244:1850052): arch=c000003e syscall=2 success=no exit=-13 a0=256ef70 a1=42 a2=1a4 a3=3 items=0 ppid=17765 pid=17766 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="rpm" exe="/usr/bin/rpm" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267710.244:1850052): avc: denied { read write } for pid=17766 comm="rpm" name=".dbenv.lock" dev="dm-1" ino=67109061 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:rpm_var_lib_t:s0 tclass=file
----
time->Wed Oct 18 04:15:10 2017
type=PROCTITLE msg=audit(1508267710.246:1850053): proctitle=72706D002D716C0061777374617473
type=SYSCALL msg=audit(1508267710.246:1850053): arch=c000003e syscall=4 success=no exit=-13 a0=25599d0 a1=7ffe894615c0 a2=7ffe894615c0 a3=1 items=0 ppid=17765 pid=17766 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="rpm" exe="/usr/bin/rpm" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267710.246:1850053): avc: denied { getattr } for pid=17766 comm="rpm" path="/var/lib/rpm/Packages" dev="dm-1" ino=67109065 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:rpm_var_lib_t:s0 tclass=file
----
time->Wed Oct 18 04:15:10 2017
type=PROCTITLE msg=audit(1508267710.251:1850054): proctitle=72706D002D716C0061777374617473
type=SYSCALL msg=audit(1508267710.251:1850054): arch=c000003e syscall=4 success=no exit=-13 a0=25599d0 a1=7ffe89461680 a2=7ffe89461680 a3=0 items=0 ppid=17765 pid=17766 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="rpm" exe="/usr/bin/rpm" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267710.251:1850054): avc: denied { getattr } for pid=17766 comm="rpm" path="/var/lib/rpm/Packages" dev="dm-1" ino=67109065 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:rpm_var_lib_t:s0 tclass=file
----
time->Wed Oct 18 04:15:10 2017
type=PROCTITLE msg=audit(1508267710.331:1850055): proctitle=2F7573722F62696E2F73797374656D63746C0072656C6F6164006E616D65642E73657276696365
type=SYSCALL msg=audit(1508267710.331:1850055): arch=c000003e syscall=54 success=no exit=-1 a0=3 a1=1 a2=21 a3=7ffcd9336ab0 items=0 ppid=17770 pid=17771 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="systemctl" exe="/usr/bin/systemctl" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267710.331:1850055): avc: denied { net_admin } for pid=17771 comm="systemctl" capability=12 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tclass=capability
----
time->Wed Oct 18 04:15:10 2017
type=PROCTITLE msg=audit(1508267710.331:1850056): proctitle=2F7573722F62696E2F73797374656D63746C0072656C6F6164006E616D65642E73657276696365
type=SYSCALL msg=audit(1508267710.331:1850056): arch=c000003e syscall=54 success=no exit=-1 a0=3 a1=1 a2=20 a3=7ffcd9336a70 items=0 ppid=17770 pid=17771 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="systemctl" exe="/usr/bin/systemctl" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267710.331:1850056): avc: denied { net_admin } for pid=17771 comm="systemctl" capability=12 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tclass=capability
----
time->Wed Oct 18 04:15:10 2017
type=PROCTITLE msg=audit(1508267710.364:1850057): proctitle=2F7573722F62696E2F73797374656D63746C0072656C6F6164006E616D65642D6368726F6F742E73657276696365
type=SYSCALL msg=audit(1508267710.364:1850057): arch=c000003e syscall=54 success=no exit=-1 a0=3 a1=1 a2=21 a3=7ffd1fac8940 items=0 ppid=17770 pid=17774 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="systemctl" exe="/usr/bin/systemctl" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267710.364:1850057): avc: denied { net_admin } for pid=17774 comm="systemctl" capability=12 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tclass=capability
----
time->Wed Oct 18 04:15:10 2017
type=PROCTITLE msg=audit(1508267710.364:1850058):
proctitle=2F7573722F62696E2F73797374656D63746C0072656C6F6164006E616D65642D6368726F6F742E73657276696365
type=SYSCALL msg=audit(1508267710.364:1850058): arch=c000003e syscall=54 success=no exit=-1 a0=3 a1=1 a2=20 a3=7ffd1fac8900 items=0 ppid=17770 pid=17774 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="systemctl" exe="/usr/bin/systemctl" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267710.364:1850058): avc: denied { net_admin } for pid=17774 comm="systemctl" capability=12 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tclass=capability
----
time->Wed Oct 18 04:15:11 2017
type=PROCTITLE msg=audit(1508267711.112:1850059):
proctitle=2F7573722F62696E2F73797374656D63746C0072656C6F6164006E616D65642D7364622E73657276696365
type=SYSCALL msg=audit(1508267711.112:1850059): arch=c000003e syscall=54 success=no exit=-1 a0=3 a1=1 a2=21 a3=7ffde0b1ae10 items=0 ppid=17770 pid=17801 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="systemctl" exe="/usr/bin/systemctl" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267711.112:1850059): avc: denied { net_admin } for pid=17801 comm="systemctl" capability=12 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tclass=capability
----
time->Wed Oct 18 04:15:11 2017
type=PROCTITLE msg=audit(1508267711.113:1850060): proctitle=2F7573722F62696E2F73797374656D63746C0072656C6F6164006E616D65642D7364622E73657276696365
type=SYSCALL msg=audit(1508267711.113:1850060): arch=c000003e syscall=54 success=no exit=-1 a0=3 a1=1 a2=20 a3=7ffde0b1add0 items=0 ppid=17770 pid=17801 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="systemctl" exe="/usr/bin/systemctl" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267711.113:1850060): avc: denied { net_admin } for pid=17801 comm="systemctl" capability=12 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tclass=capability
----
time->Wed Oct 18 04:15:11 2017
type=PROCTITLE msg=audit(1508267711.175:1850062): proctitle=2F7573722F62696E2F73797374656D63746C0072656C6F6164006E616D65642D7364622D6368726F6F742E736572
76696365 type=SYSCALL msg=audit(1508267711.175:1850062): arch=c000003e syscall=54 success=no exit=-1 a0=3 a1=1 a2=21 a3=7ffd052773e0 items=0 ppid=17770 pid=17803 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="systemctl" exe="/usr/bin/systemctl" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267711.175:1850062): avc: denied { net_admin } for pid=17803 comm="systemctl" capability=12 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tclass=capability
----
time->Wed Oct 18 04:15:11 2017
type=PROCTITLE msg=audit(1508267711.183:1850063): proctitle=2F7573722F62696E2F73797374656D63746C0072656C6F6164006E616D65642D7364622D6368726F6F742E736572
76696365 type=SYSCALL msg=audit(1508267711.183:1850063): arch=c000003e syscall=54 success=no exit=-1 a0=3 a1=1 a2=20 a3=7ffd052773a0 items=0 ppid=17770 pid=17803 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="systemctl" exe="/usr/bin/systemctl" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267711.183:1850063): avc: denied { net_admin } for pid=17803 comm="systemctl" capability=12 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tclass=capability
----
time->Wed Oct 18 04:15:11 2017
type=PROCTITLE msg=audit(1508267711.226:1850065): proctitle=2F7573722F62696E2F73797374656D63746C0072656C6F6164006E616D65642D706B637331312E73657276696365
type=SYSCALL msg=audit(1508267711.226:1850065): arch=c000003e syscall=54 success=no exit=-1 a0=3 a1=1 a2=21 a3=7fffe4320b80 items=0 ppid=17770 pid=17805 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="systemctl" exe="/usr/bin/systemctl" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267711.226:1850065): avc: denied { net_admin } for pid=17805 comm="systemctl" capability=12 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tclass=capability
----
time->Wed Oct 18 04:15:11 2017
type=PROCTITLE msg=audit(1508267711.233:1850066): proctitle=2F7573722F62696E2F73797374656D63746C0072656C6F6164006E616D65642D706B637331312E73657276696365
type=SYSCALL msg=audit(1508267711.233:1850066): arch=c000003e syscall=54 success=no exit=-1 a0=3 a1=1 a2=20 a3=7fffe4320b40 items=0 ppid=17770 pid=17805 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=74988 comm="systemctl" exe="/usr/bin/systemctl" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1508267711.233:1850066): avc: denied { net_admin } for pid=17805 comm="systemctl" capability=12 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tclass=capability


 残っている/var/log/audit/audit.logを確認。
# ls -l /var/log/audit/
合計 51764
-rw-------. 1 root root 2148701 10月 18 09:35 audit.log
-r--------. 1 root root 8388918 10月 18 06:37 audit.log.1
-r--------. 1 root root 8388631 10月 17 18:59 audit.log.2
-r--------. 1 root root 8388832 10月 17 07:24 audit.log.3
-r--------. 1 root root 8388632 10月 16 20:00 audit.log.4
-r--------. 1 root root 8388629 10月 16 08:53 audit.log.5
-r--------. 1 root root 8388814 10月 16 02:22 audit.log.6
 OSバージョンが同じで別物理サーバの/var/log/httpdのログローテーションのエラーは「Oct 18 04:15:11」であるので、これが含まれていると思われる「audit.log.1」「audit.log」を使用しパッケージを作成します。その後、適用します。
# audit2allow -M my-logrotate < /var/log/audit/audit.log.1
******************** IMPORTANT ***********************
To make this policy package active, execute:
semodule -i my-logrotate.pp
# cp my-logrotate.te my-logrotate.te_20171018_1
# semodule -i my-logrotate.pp
# audit2allow -M my-logrotate < /var/log/audit/audit.log
******************** IMPORTANT ***********************
To make this policy package active, execute:
semodule -i my-logrotate.pp
# cp my-logrotate.te my-logrotate.te_20171018_2
# semodule -i my-logrotate.pp
 「my-logrotate.te_20171018_1」及び「my-logrotate.te_20171018_2」の内容は下記のとおりです。

# cat my-logrotate.te_20171018_1

module my-logrotate 1.0;

require {
type rpm_var_lib_t;
type logrotate_t;
type fail2ban_client_t;
type init_t;
class capability net_admin;
class process { noatsecure rlimitinh siginh };
class file { getattr read write };
class service reload;
}

#============= logrotate_t ==============
allow logrotate_t fail2ban_client_t:process { noatsecure rlimitinh siginh };
allow logrotate_t init_t:service reload;
allow logrotate_t rpm_var_lib_t:file { getattr read write };
allow logrotate_t self:capability net_admin;




# cat my-logrotate.te_20171018_2

module my-logrotate 1.0;

require {
type gconf_home_t;
type data_home_t;
type system_dbusd_t;
class dir search;
}

#============= system_dbusd_t ==============
allow system_dbusd_t data_home_t:dir search;
allow system_dbusd_t gconf_home_t:dir search;


 1回目の作業時の方にlogrotateに関するコンテキストタイプの設定情報が入っています。
 SELinux有効状態(Enforcing)であっても「/var/log/httpd」以下のログローテーションが実施されればよいのですが・・。
 やはり正常にログローテーションしませんでした(20171019)。
 ただし、OSバージョンが同じで別物理サーバの方が正常にローテーションしていましたので、こちらの設定情報を参考に適用してみます。
 以降は、「3回目の対処」参照。

 参考URL:【よくやらかす問題】Tomcatのログローテートとselinux

 上記URLを参照して/var/logに対して下記を実行しました。
# restorecon -R /var/log/
 これで再度様子見。

 1回目対処(うまくいかなかった)

 参考URL:Linux セキュリティでログローテーションが失敗する - F-Secure Community ...
 参考URL:I am getting 'logrotate: ALERT exited abnormally with [1]' messages in logs when SELinux is in the Enforcing mode

 SELinuxを有効にするとapacheのログがすべてローテーションされないことに気がつきました。
 /var/log/messagesを調べると、ローテーションのタイミングで「ALERT exited abnormally with [1]」というエラーが記録されていました。
 レッドハットのページを参照してログに付加されているセキュリティコンテキストが異なっていました。
# ls -Z /var/log
 SELinuxを有効にしておいても問題なくローテーションされているろぐには「var_log_t」が付加されていました。
# ls -Z /var/log/httpd
 肝心の/var/log/httpdのコンテキストは「httpd_log_t」でした。これを「var_log_t」になるように設定変更します。

# semanage fcontext -a -t var_log_t '/var/log/httpd(/.*)?'
# restorecon -Frvv /var/log/httpd
restorecon reset /var/log/httpd context system_u:object_r:httpd_log_t:s0->system_u:object_r:var_log_t:s0
restorecon reset /var/log/httpd/modsec_audit.log-20170828.gz context system_u:object_r:httpd_log_t:s0->system_u:object_r:var_log_t:s0
restorecon reset /var/log/httpd/access_log-20170922.gz context system_u:object_r:httpd_log_t:s0->system_u:object_r:var_log_t:s0
restorecon reset /var/log/httpd/modsec_audit.log-20170922.gz context system_u:object_r:httpd_log_t:s0->system_u:object_r:var_log_t:s0
restorecon reset /var/log/httpd/access_log-20171006.gz context system_u:object_r:httpd_log_t:s0->system_u:object_r:var_log_t:s0
restorecon reset /var/log/httpd/ssl_error_log context system_u:object_r:httpd_log_t:s0->system_u:object_r:var_
log_t:s0 restorecon reset /var/log/httpd/access_log-20170829.gz context system_u:object_r:httpd_log_t:s0->system_u:object_r:var_log_t:s0
restorecon reset /var/log/httpd/access_log-20170912.gz context system_u:object_r:httpd_log_t:s0->system_u:object_r:var_log_t:s0
restorecon reset /var/log/httpd/modsec_audit.log-20171004.gz context system_u:object_r:httpd_log_t:s0->system_u:object_r:var_log_t:s0
restorecon reset /var/log/httpd/access_log-20170823.gz context system_u:object_r:httpd_log_t:s0->system_u:object_r:var_log_t:s0
restorecon reset /var/log/httpd/error_log-20170901.gz context system_u:object_r:httpd_log_t:s0->system_u:object_r:var_log_t:s0
restorecon reset /var/log/httpd/access_log-20170909.gz context system_u:object_r:httpd_log_t:s0->system_u:object_r:var_log_t:s0
restorecon reset /var/log/httpd/modsec_audit.log-20170909.gz context system_u:object_r:httpd_log_t:s0->system_u:object_r:var_log_t:s0
  :
  :


 これで様子を見たいと思います(20171010)。
 しかし、「ALERT exited abnormally with [1]」が記録されローテーションができていませんでした。
 ローテーションの状態(httpdのログは1日1回ローテーションを実施)を確認してみます。
# cat /var/lib/logrotate/logrotate.status|grep httpd
"/var/log/httpd/modsec_debug.log" 2016-12-15-4:0:0
"/var/log/httpd/ssl_access_log" 2017-10-11-4:10:57
"/var/log/httpd/error_log" 2017-10-11-4:10:57
"/var/log/httpd/ssl_error_log" 2017-10-11-4:10:57
"/var/log/httpd/mod_jk.log" 2016-12-15-4:0:0
"/var/log/httpd/modsec_audit.log" 2017-10-11-4:10:57
"/var/log/httpd/ssl_request_log" 2017-6-30-4:9:28
"/var/log/httpd/access_log" 2017-10-11-4:10:57
 見た目はローテーションが実行されたことになっています。
 しかし、実際にはローテーションされていませんでした。
 デバッグモードでローテーションを再実行してみます。

# /usr/sbin/logrotate -d /etc/logrotate.conf 2> /tmp/logrotate.debug
rotating pattern: /var/log/httpd/*log after 1 days (24 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/httpd/access_log
log does not need rotating (log has been rotated at 2017-10-11 4:10, that is not day ago yet)
considering log /var/log/httpd/error_log
log does not need rotating (log has been rotated at 2017-10-11 4:10, that is not day ago yet)
considering log /var/log/httpd/mod_jk.log
log does not need rotating (log is empty)considering log /var/log/httpd/modsec_audit.log
log does not need rotating (log has been rotated at 2017-10-11 4:10, that is not day ago yet)
considering log /var/log/httpd/modsec_debug.log
log does not need rotating (log is empty)considering log /var/log/httpd/ssl_access_log
log does not need rotating (log has been rotated at 2017-10-11 4:10, that is not day ago yet)
considering log /var/log/httpd/ssl_error_log
log does not need rotating (log has been rotated at 2017-10-11 4:10, that is not day ago yet)
considering log /var/log/httpd/ssl_request_log
log does not need rotating (log is empty)not running prerotate script, since no logs will be rotated
not running postrotate script, since no logs were rotated


 問題なさそうです。

 手も足も出なくなってきたので、一度設定を元に戻します。

 /var/log/httpdのコンテキストを「var_log_t」から「httpd_log_t」に戻します。

# semanage fcontext -a -t httpd_log_t '/var/log/httpd(/.*)?'
# restorecon -Frvv /var/log/httpd
restorecon reset /var/log/httpd/modsec_audit.log-20170828.gz context system_u:object_r:var_log_t:s0->system_u:object_r:httpd_log_t:s0
restorecon reset /var/log/httpd/access_log-20170922.gz context system_u:object_r:var_log_t:s0->system_u:object_r:httpd_log_t:s0
restorecon reset /var/log/httpd/modsec_audit.log-20170922.gz context system_u:object_r:var_log_t:s0->system_u:object_r:httpd_log_t:s0
restorecon reset /var/log/httpd/access_log-20171006.gz context system_u:object_r:var_log_t:s0->system_u:object_r:httpd_log_t:s0
restorecon reset /var/log/httpd/ssl_error_log context system_u:object_r:var_log_t:s0->system_u:object_r:httpd_log_t:s0
restorecon reset /var/log/httpd/access_log-20170829.gz context system_u:object_r:var_log_t:s0->system_u:object_r:httpd_log_t:s0
restorecon reset /var/log/httpd/access_log-20170912.gz context system_u:object_r:var_log_t:s0->system_u:object_r:httpd_log_t:s0
restorecon reset /var/log/httpd/modsec_audit.log-20171004.gz context system_u:object_r:var_log_t:s0->system_u:object_r:httpd_log_t:s0
restorecon reset /var/log/httpd/access_log-20170823.gz context system_u:object_r:var_log_t:s0->system_u:object_r:httpd_log_t:s0
restorecon reset /var/log/httpd/error_log-20170901.gz context system_u:object_r:var_log_t:s0->system_u:object_r:httpd_log_t:s0
restorecon reset /var/log/httpd/access_log-20170909.gz context system_u:object_r:var_log_t:s0->system_u:object_r:httpd_log_t:s0
restorecon reset /var/log/httpd/modsec_audit.log-20170909.gz context system_u:object_r:var_log_t:s0->system_u:object_r:httpd_log_t:s0
  :
  :
 これで元のコンテキストに戻りました。

●cactiでSELinuxを有効化したサーバの監視グラフが一部描画できない

 参考URL:「SELinuxのせいで動かない」撲滅ガイド

 cactiで監視をしているサーバでSELinuxを有効にしたところ一部のグラフ(iostat関連)が描画されない状態となりました。
 監査ログ(/var/log/audit/audit.log)にそれらしい情報は出力されず、手に負えない状態となっていました。
 上記参考URLにそのヒントが記載されていました。その方法により対処したところグラフの描画が出来るようになりました。
 「Enforcing時にアクセス拒否されるのに監査ログには事象が記録されていないようならdontauditルールを無効化してしまうのが良い。」が解でした。まず、その対応を実施します。
# semodule -DB
 これで監査ログに記録されるようになりました。早速問題解決のため下記コマンドを実行します。
# audit2allow -M my-cacti < /var/log/audit/audit.log
# semodule -i my-cacti.pp
 監査ログを確認しつつ「avc: denied」が出力されなくなるまで上記コマンドを実行しました(実際には3回)。
 この状態(dontauditルールが無効化されている)のままでは、setroubleshootが働かなくなるということなので、元の状態に戻しました。
# semodule -B


●NULL security context for user ()、ERROR (failed to change SELinux context)

 参考URL:SRed Hat Bugzilla – Bug 1263328

 特定のサーバの/var/log/crondに5分毎に下記のようなログが記録されていることが気になっていました。
Nov 10 13:40:01 serverA crond[3632]: (root) NULL security context for user ()
Nov 10 13:40:01 serverA crond[3632]: (root) ERROR (failed to change SELinux context)
 インターネットでいろいろ調べてもなかなか原因が分からなかったのですが、上記URLの内容を眺めていて、もしや、と思い調べたところビンゴでした。
●当該サーバ
# ls -Z /var/spool/cron/root 
-rw-------. root root system_u:object_r:unlabeled_t:s0 /var/spool/cron/root
●他のサーバ
# ls -Z /var/spool/cron/root
-rw-------. root root system_u:object_r:user_cron_spool_t:s0 /var/spool/cron/root
 割り当てられているタイプが違っていましたので、これを修正し、その後crondを再起動します。
# semanage fcontext -a -t user_cron_spool_t '/var/spool/cron/root
# restorecon -Frvv /var/spool/cron/root 
restorecon reset /var/spool/cron/root context system_u:object_r:unlabeled_t:s0->system_u:object_r:user_cron_spool_t:s0
# ls -Z /var/spool/cron/root 
-rw-------. root root system_u:object_r:user_cron_spool_t:s0 /var/spool/cron/root
# systemctl restart crond
 この後、ログに記録されなくなりました。

●有用なコマンド

 参考URL:SELinuxでlogrotateが失敗した話
 参考URL:CentOS7.1 64bit SELinuxによるアクセス制御

 調査や設定等で役に立ちそうなコマンドを列挙します。

 ・/var/log/audit/audit.logを見やすい形に整形する
# ausearch -m avc

 ・タイプ「A」のコンテキストからタイプ「B」のコンテキストへのアクセス制御の設定確認
# sesearch -A -C -s httpd_t -t httpd_sys_content_t

 ・新規に作成したファイルやディレクトリにコンテキストの設定を行う
# semanage fcontext -a -t httpd_sys_content_t "/xxx/html(/.*)?"
 この時点では、コンテキストの設定ファイル「/etc/selinux/targeted/contexts/files/file_contexts.local」への設定の追加のみが行われ、実際のファイルへのコンテキストは未適用です。

 ・コンテキストの設定をファイルに反映させる
# restorecon -R -v /xxx/html/
  「-R」オプションは、ディレクトリの下層にもコンテキストの設定が行われます。
  「-v」オプションは、コンテキストの変更内容がコマンド実行結果に表示されます。
  「/xxx/html/」は、コンテキストの設定を反映させるディレクトリです。

 上記により、公開用に独自に作成したディレクトリへのアクセスが可能となります。

 ・追加したコンテキストの設定を削除するには
# semanage fcontext -d "/xxx/html(/.*)?"
  「-d」オプションを指定して、コンテキストの設定の削除を行うようにしています。
  「/xxx/html」は、削除対象のディレクトリになります。

 上記により、コンテキストの設定ファイル「/etc/selinux/targeted/contexts/files/file_contexts.local」から設定が削除されます。

 ・設定の削除をファイルに反映させるには
# restorecon -R -v /xxx/html/
  「-R」オプションは、ディレクトリの下層にもコンテキストの設定が行われます。
  「-v」オプションは、コンテキストの変更内容がコマンド実行結果に表示されます。
  「/xxx/html/」は、コンテキストの設定を反映させるディレクトリです。