web-dev-qa-db-ja.com

httpdが/ usr / bin /でbashスクリプトを実行できるようにする

Enforcedを実行しているSELinuxを使用したCentOS6からRHEL7へのシステムの移行。 phpスクリプトは/usr/bin/processdata.shを呼び出して、バックグラウンドでデータを生成します。これは古いシステムでは問題なく機能しましたが、PHP exec呼び出しは、SELinuxが有効に設定された状態でチョークします。

これがshの許可です

-rwxrwx--x. root root unconfined_u:object_r:bin_t:s0   /usr/bin/process_data.sh

この監査エラーは、phpページが呼び出されると同時に表示されます。

ausearch -l -i | grep httpd

type = SYSCALL msg = audit(02/27/2016 14:07:52.662:23480):Arch = x86_64 syscall = socket success = no exit = -97(アドレスファミリはプロトコルでサポートされていません)a0 = inet6 a1 = SOCK_DGRAM a2 = ip a3 = 0x672e76656473626e items = 0 ppid = 15686 pid = 3852 auid = unset uid = Apache gid = Apache euid = Apache suid = Apache fsuid = Apache egid = Apache sgid = Apache fsgid = Apache tty =(none)ses = unset comm = httpd exe =/usr/sbin/httpd subj = system_u:system_r:httpd_t:s0 key =(null)type = AVC msg = audit(02/27/2016 14:07:52.662:23480):avc:denied {module_request} pid = 3852の場合comm = httpd kmod = "net-pf-10" scontext = system_u:system_r:httpd_t:s0 tcontext = system_u:system_r:kernel_t:s0 tclass = system

これが私の現在のhttpdブールです:

httpd_can_network_relay        (off  ,  off)  Allow httpd to can network relay
httpd_can_connect_mythtv       (off  ,  off)  Allow httpd to can connect mythtv
httpd_can_network_connect_db   (off  ,  off)  Allow httpd to can network connect db
httpd_use_gpg                  (off  ,  off)  Allow httpd to use gpg
httpd_dbus_sssd                (off  ,  off)  Allow httpd to dbus sssd
httpd_enable_cgi               (on   ,   on)  Allow httpd to enable cgi
httpd_verify_dns               (off  ,  off)  Allow httpd to verify dns
httpd_dontaudit_search_dirs    (off  ,  off)  Allow httpd to dontaudit search dirs
httpd_anon_write               (off  ,  off)  Allow httpd to anon write
httpd_use_cifs                 (off  ,  off)  Allow httpd to use cifs
httpd_enable_homedirs          (off  ,  off)  Allow httpd to enable homedirs
httpd_unified                  (off  ,  off)  Allow httpd to unified
httpd_mod_auth_pam             (off  ,  off)  Allow httpd to mod auth pam
httpd_run_stickshift           (off  ,  off)  Allow httpd to run stickshift
httpd_use_fusefs               (off  ,  off)  Allow httpd to use fusefs
httpd_can_connect_ldap         (off  ,  off)  Allow httpd to can connect ldap
httpd_can_network_connect      (on   ,   on)  Allow httpd to can network connect
httpd_mod_auth_ntlm_winbind    (off  ,  off)  Allow httpd to mod auth ntlm winbind
httpd_tty_comm                 (off  ,  off)  Allow httpd to tty comm
httpd_sys_script_anon_write    (off  ,  off)  Allow httpd to sys script anon write
httpd_graceful_shutdown        (on   ,   on)  Allow httpd to graceful shutdown
httpd_can_connect_ftp          (off  ,  off)  Allow httpd to can connect ftp
httpd_run_ipa                  (off  ,  off)  Allow httpd to run ipa
httpd_read_user_content        (off  ,  off)  Allow httpd to read user content
httpd_use_nfs                  (off  ,  off)  Allow httpd to use nfs
httpd_can_connect_zabbix       (off  ,  off)  Allow httpd to can connect zabbix
httpd_tmp_exec                 (off  ,  off)  Allow httpd to tmp exec
httpd_run_preupgrade           (off  ,  off)  Allow httpd to run preupgrade
httpd_manage_ipa               (off  ,  off)  Allow httpd to manage ipa
httpd_can_sendmail             (on   ,   on)  Allow httpd to can sendmail
httpd_builtin_scripting        (on   ,   on)  Allow httpd to builtin scripting
httpd_dbus_avahi               (off  ,  off)  Allow httpd to dbus avahi
httpd_can_check_spam           (off  ,  off)  Allow httpd to can check spam
httpd_can_network_memcache     (off  ,  off)  Allow httpd to can network memcache
httpd_can_network_connect_cobbler (off  ,  off)  Allow httpd to can network connect cobbler
httpd_use_sasl                 (off  ,  off)  Allow httpd to use sasl
httpd_serve_cobbler_files      (off  ,  off)  Allow httpd to serve cobbler files
httpd_execmem                  (off  ,  off)  Allow httpd to execmem
httpd_ssi_exec                 (off  ,  off)  Allow httpd to ssi exec
httpd_use_openstack            (off  ,  off)  Allow httpd to use openstack
httpd_enable_ftp_server        (off  ,  off)  Allow httpd to enable ftp server
httpd_setrlimit                (off  ,  off)  Allow httpd to setrlimit

私のselinux設定に表示されていない何かがありますか?

2
a coder

私のselinux設定に表示されていない何かがありますか?

SELinux構成が「正常」に見えることを示していますが、特定のワークロードに合わせて調整する必要がないというわけではありません。

ここで行うことは、SELinuxを許容モード(setenforce 0)にしてから、auditdに新しいログファイル(kill -USR1 <auditdのPID>)を開始させることです。その後、通常のビジネスに取り掛かります。SELinuxはメッセージを生成します。後で分析するため。

「しばらくの間」許容モードで実行している場合は、標準ツールを使用してSELinuxメッセージを調査できます。

audit2whyユーティリティは、ログに記録されたメッセージに光を当て、何をすべきかについてアドバイスを与えることができます。たとえば、投稿したスニペットについてこれを言うことができます。

avc: denied { module_request } for pid=3852 comm=httpd kmod="net-pf-10" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:system_r:kernel_t:s0 tclass=system

        Was caused by:
        The boolean domain_kernel_load_modules was set incorrectly.
        Description:
        Allow all domains to have the kernel load modules

        Allow access by executing:
        # setsebool -P domain_kernel_load_modules 1

現在、強制モードで実行しているため、最初の拒否のみがログに記録されます。修正した場合は、さらに多くの拒否がログに記録されるため、一時的に許容モードで実行する必要があります。すべての拒否がログに記録されます。

audit2whyがあまり役に立たない場合があります。そのような場合、SELinuxをより深く理解することが役立つ場合があります。たとえば、audit2allowを介して監査ログを実行し、semoduleで適用できるローカルポリシーを生成できます。ただし、必要以上に多くを与えることができるため、これは慎重に監査する必要があります。

3
user9517

Lighttpdがファイルを実行できるようにするには、SELinux bool http_execmemを有効にします。

次に、lighttpdを実行できるようにファイルタイプを変更します:chcon system_u:object_r:httpd_exec_t:s0 [file]

semanage fcontext -a -t httpd_exec_t [file]を使用して、その変更をカーネル内で永続的に維持します。