sealert 能否显示被拒绝的访问请求的完整命令?

sealert 能否显示被拒绝的访问请求的完整命令?

我正在使用以下方式管理 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。然后观察出现什么问题。:)

相关内容