我正在使用以下方式管理 Red Hat Enterprise 5 系统厨师。配置命令序列中的某些内容正在生成 selinux 警报,例如:
SELinux is preventing iptables (iptables_t) "read" to /superhome/dir (user_home_dir_t).
但是,当我运行“sealert -l”时,似乎只看到部分信息:
...snip...
Additional Information:
Source Context root:system_r:iptables_t
Target Context system_u:object_r:user_home_dir_t
Target Objects /superhome/redacted [ dir ]
Source iptables
Source Path /sbin/iptables
Port <Unknown>
Host redacted.host.name
Source RPM Packages iptables-1.3.5-5.3.el5_4.1
Target RPM Packages
Policy RPM selinux-policy-2.4.6-316.el5
Selinux Enabled True
Policy Type targeted
MLS Enabled True
Enforcing Mode Permissive
Plugin Name catchall_file
Host Name redacted.host.name
Platform Linux redacted.host.name 2.6.18-274.el5 #1 SMP
Fri Jul 8 17:36:59 EDT 2011 x86_64 x86_64
Alert Count 17
First Seen Tue Jul 31 11:16:38 2012
Last Seen Tue Jul 31 18:46:35 2012
Local ID 6c58ff2c-6cab-4db0-b047-896d6adc8e0f
Line Numbers
Raw Audit Messages
host=redacted.host.name type=AVC msg=audit(1343774795.973:33819): avc: denied { read } for pid=26444 comm="iptables" path="/superhome/redacted" dev=dm-0 ino=27656194 scontext=root:system_r:iptables_t:s0 tcontext=system_u:object_r:user_home_dir_t:s0 tclass=dir
host=redacted.host.name type=SYSCALL msg=audit(1343774795.973:33819): arch=c000003e syscall=59 success=yes exit=0 a0=1ec6c5a0 a1=1ec28360 a2=1ec2b540 a3=8 items=0 ppid=26435 pid=26444 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=1500 comm="iptables" exe="/sbin/iptables" subj=root:system_r:iptables_t:s0 key=(null)
据推测“Source”命令有附加参数(笔记:"/superhome" 下的确切目录名称和主机名已被删除)。有没有办法找出参数和/或完整命令?
答案1
感谢您发布补充信息。
我对此进行了大量研究,但找不到任何方法来重现此问题。
我发现 iptables 实际上没有任何命令行选项可以让它读取用户提供的文件。其 SELinux 参考策略也没有定义任何读取任意文件的需要。
我目前怀疑目标系统上的某些文件标签错误。例如,如果有人在用户主目录中编辑 iptables 配置文件的副本并将其移动到而/etc/sysconfig/iptables
不是复制,则可能会发生这种情况。移动文件会保留其 SELinux 上下文,因此它在目标位置会有错误的上下文。复制文件会使用新位置的默认上下文创建新文件,这几乎总是正确的上下文。
如果文件标签错误,则运行restorecon
应该可以修复它。为确保万无一失,我只需重新标记整个文件系统。您可以通过运行以下命令执行此操作而无需重新启动:
restorecon -r -vv /
或者您可以重新标记可能受到影响的文件:
restorecon -r -vv /etc
-r 选项使其递归,-vv 使其更加详细。
iptables 想要读取的文件也可能是符号链接到用户主目录中的文件。在当前参考策略中,iptables 具有读/写权限/etc/sysconfig/ip6?tables.*
。
最后一点:看来您的系统已将 SELinux 设置为宽容模式。这意味着这些事件已被记录,但实际上并未被拒绝。您可以通过运行 恢复强制模式setenforce 1
。然后观察出现什么问题。:)