SELinux&ncsa_auth在鱿鱼

我正在尝试在CentOS 5.5服务器上启用SELinux,Squid 3.1.12通过ncsa_auth来处理身份validation。

当我closuresSElinux时一切正常,但是当我启用它时,Squid在authentication插件ncsa_auth上崩溃。

这是错误信息:

May 29 19:12:21 us squid[1458]: Squid Parent: child process 1493 started May 29 19:12:21 us kernel: printk: 27 messages suppressed. May 29 19:12:21 us kernel: type=1400 audit(1306696341.922:74): avc: denied { execute } for pid=1494 comm="squid" name="ncsa_auth" dev=xvda1 ino=610563 scontext=root:system_r:squid_t:s0 tcontext=user_u:object_r:usr_t:s0 tclass=file May 29 19:12:22 us (squid): The basicauthenticator helpers are crashing too rapidly, need help! May 29 19:12:22 us squid[1458]: Squid Parent: child process 1493 exited with status 1 May 29 19:12:22 us squid[1458]: Exiting due to repeated, frequent failures 

当SELinux是宽容的,这些是我得到的警告:

 May 29 19:25:27 us kernel: type=1400 audit(1306697127.741:81): avc: denied { execute } for pid=1524 comm="squid" name="ncsa_auth" dev=xvda1 ino=610563 scontext=root:system_r:squid_t:s0 tcontext=user_u:object_r:usr_t:s0 tclass=file May 29 19:25:27 us kernel: type=1400 audit(1306697127.741:82): avc: denied { execute_no_trans } for pid=1524 comm="squid" path="/opt/squid-3.1.12/helpers/basic_auth/NCSA/ncsa_auth" dev=xvda1 ino=610563 scontext=root:system_r:squid_t:s0 tcontext=user_u:object_r:usr_t:s0 tclass=file 

ncsa-auth:

 [bart@us NCSA]# ls -alZ ncsa_auth -rwxrwxrwx root root user_u:object_r:usr_t ncsa_auth 

他希望标签是unconfined_u:system_r:squid_t:s0 ,但我不知道如何正确设置它。 我尝试设置后:

 chcon unconfined_u:system_r:squid_t:s0 ncsa_auth 

我得到了以下错误: chcon: failed to change context of ncsa_auth to unconfined_u:system_r:squid_t:s0: Invalid argument

我刚刚检查了一个CentOS 5.6系统,其中有鱿鱼+ ncsa_auth工作。 我的/usr/lib64/squid/ncsa_auth

 ls -lZ /usr/lib64/squid/ncsa_auth -rwsr-x--- root squid system_u:object_r:lib_t /usr/lib64/squid/ncsa_auth 

如果我将/usr/lib64/squid/ncsa_auth上的权限设置为与您的权限相同,那么我将得到与您一样的错误消息。

 chown root:squid /usr/lib64/squid/ncsa_auth chmod 4750 /usr/lib64/squid/ncsa_auth chcon system_u:object_r:lib_t /usr/lib64/squid/ncsa_auth 

修复了我的系统上的问题。

那将是chcon -t squid_t ncsa_auth那里,但是在我的RHEL5.5机器上,有一个规则允许squid在标签为bin_t文件上执行权限,这可能是它应该是的,而不是squid_t

 allow squid_t bin_t : file { ioctl read getattr lock execute execute_no_trans open } ; 

你可以用sesearch -s squid_t --allow来检查。 lib_t存在相同的规则,请参阅Iains的答案。

squid_ttypes是为域而不是文件。 一个文件可以被标记为squid_exec_t ,但这是守护进程的二进制文件,而不是帮助文件。 长话短说,文件应该被标记为bin_t并放在/usr/local/bin

我怀疑你的ncsa_auth插件安装在一个奇怪的位置。 如果你把它放在/usr/local/bin ,然后运行restorecon -Fv ,squid会尝试把它作为一个bin_t文件来执行,这很有可能成功。