SELinuxでハマった時の話
こんにちはkinjoです。
SELinux環境でアプリケーションがうまく動かないことがありました。
おそらくSELinuxの影響だろうとあたりはついていたのですが、
ログに何も出力されてない状態でした。
調べてみると「サイレント拒否」というものがあり、
ログが記載されない場合があるとのこと。
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/security-enhanced_linux/sect-security-enhanced_linux-fixing_problems-possible_causes_of_silent_denials
[root@cent_test ~]# seinfo Statistics for policy file: /sys/fs/selinux/policy Policy Version & Type: v.28 (binary, mls) Classes: 94 Permissions: 262 Sensitivities: 1 Categories: 1024 Types: 4747 Attributes: 251 Users: 8 Roles: 14 Booleans: 307 Cond. Expr.: 356 Allow: 101734 Neverallow: 0 Auditallow: 155 Dontaudit: 8846 Type_trans: 17759 Type_change: 74 Type_member: 35 Role allow: 39 Role_trans: 416 Range_trans: 5697 Constraints: 109 Validatetrans: 0 Initial SIDs: 27 Fs_use: 29 Genfscon: 105 Portcon: 602 Netifcon: 0 Nodecon: 0 Permissives: 6 Polcap: 2
「Dontaudit」の部分がログに出ないルールです。大量にありますね。
ちょっとだけどんなものがあるか確認
[root@cent_test ~]# sesearch --dontaudit |less -N 1 Found 8846 semantic av rules: 2 dontaudit qmail_inject_t httpd_t : unix_stream_socket { read write getattr } ; 3 dontaudit sanlk_resetd_t sanlk_resetd_t : capability { net_admin sys_module } ; 4 dontaudit user_usertype krb5kdc_conf_t : dir { ioctl read getattr lock search open } ; 5 dontaudit udev_t udev_t : udp_socket listen ; ~略~ 8844 dontaudit mozilla_t user_home_t : dir { ioctl read getattr lock search open } ; 8845 dontaudit chfn_t chfn_t : capability net_bind_service ; 8846 dontaudit chfn_t chfn_t : capability net_bind_service ; 8847 dontaudit minidlna_t home_root_t : dir { ioctl read getattr lock search open } ; 8848
サイレント拒否を解除してログが出るようにしてみます。
[root@cent_test ~]# semodule -DB
[root@cent_test ~]# seinfo Statistics for policy file: /sys/fs/selinux/policy Policy Version & Type: v.28 (binary, mls) Classes: 94 Permissions: 262 Sensitivities: 1 Categories: 1024 Types: 4747 Attributes: 251 Users: 8 Roles: 14 Booleans: 307 Cond. Expr.: 356 Allow: 101734 Neverallow: 0 Auditallow: 155 Dontaudit: 0 Type_trans: 17759 Type_change: 74 Type_member: 35 Role allow: 39 Role_trans: 416 Range_trans: 5697 Constraints: 109 Validatetrans: 0 Initial SIDs: 27 Fs_use: 29 Genfscon: 105 Portcon: 602 Netifcon: 0 Nodecon: 0 Permissives: 6 Polcap: 2
Dontaudit が0になりました。
[root@cent_test ~]# sesearch --dontaudit
sesearch でもdontauditのルールが出ませんね。
この状態ならログに出力が行われますので、
許可設定を行えば大丈夫です。
SELinuxでログが出てないけど動かない。とかいう時に サイレント拒否 される場合があるという事を
覚えておくと良いかも。