iptables-save 无法写入文件

iptables-save 无法写入文件

我可以运行 iptables-save 并将输出转储到 stdout,但如果我重定向到文件 - 该文件为空:

    [root@nhd-vlx2 tmp]# iptables-save  
    # Generated by iptables-save v1.4.7 on Sun Dec 18 15:11:42 2011
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [90971:17757587]
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
    -A INPUT -p icmp -j ACCEPT 
    -A INPUT -i lo -j ACCEPT 
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 9090:9999 -j ACCEPT 
    -A INPUT -j REJECT --reject-with icmp-host-prohibited 
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited 
    COMMIT
    # Completed on Sun Dec 18 15:11:42 2011
    [root@nhd-vlx2 tmp]# iptables-save  > save
    [root@nhd-vlx2 tmp]# cat save
    [root@nhd-vlx2 tmp]# 
    [root@nhd-vlx2 tmp]# 

管道工作(iptables-save | cat),因此通过tee管道保存到文件也有效,但为什么不允许iptables-save保存到文件?

我能想到的唯一原因是这台机器可能感染了病毒(试图削弱防火墙)

答案1

虽然可能性不大,但是:

另一个论坛上也有人发过类似的问题。结果发现,SELinux 上下文是错误的。

在 iptables-multi 上运行 ls -laZ。它应该返回以下内容:

-rwxr-xr-x. root root system_u:object_r:iptables_exec_t:s0 /sbin/iptables-multi

所有其他 iptables 文件都与其符号链接:

[root@cacti tmp]# ls -laZ /sbin/iptables*
lrwxrwxrwx. root root system_u:object_r:bin_t:s0       /sbin/iptables -> iptables-multi
-rwxr-xr-x. root root system_u:object_r:iptables_exec_t:s0 /sbin/iptables-multi
lrwxrwxrwx. root root system_u:object_r:bin_t:s0       /sbin/iptables-restore -> iptables-multi
lrwxrwxrwx. root root system_u:object_r:bin_t:s0       /sbin/iptables-save -> iptables-multi

如果 SELinux 上下文不正确,请使用主文件上的 chcon 命令进行更改:

chcon -u system_u -t iptables_exec_t /sbin/iptables-multi

如果符号链接上的 SELinux 上下文不正确,请使用上述命令修复它们(尽管这次使用 bin_t 类型)

答案2

根据 Rilindo 的评论,如果你使用的是 RedHat文档提到:

~]# /sbin/service iptables save 
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

答案3

iptables-save 尝试在简约的 centos-7 上设置正确的 selinux 安全上下文。

我查看了错误,它似乎失败了,因为没有安装用于更改 selinux 上下文的实用程序(通过依赖关系?)。

下面为我​​修复了这个问题:

yum -y install policycoreutils

此后,以下操作正常:

/sbin/service iptables save

相关内容