nhe*_*hed 5 linux iptables centos6
我可以运行 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]#
Run Code Online (Sandbox Code Playgroud)
管道工作(iptables-save | cat
),因此也可以通过tee
工作保存到文件,但为什么iptables-save
不允许保存到文件?
我能想到的唯一原因是这台机器可能感染了病毒(企图削弱防火墙)
远射,但是:
其他人在另一个论坛上发布了类似的问题。事实证明,SELinux 上下文是错误的。
在 iptables-multi 上运行 ls -laZ。它应该返回:
-rwxr-xr-x. root root system_u:object_r:iptables_exec_t:s0 /sbin/iptables-multi
Run Code Online (Sandbox Code Playgroud)
所有其他 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
Run Code Online (Sandbox Code Playgroud)
如果 SELinux 上下文不正确,请使用主文件上的 chcon 命令更改它:
chcon -u system_u -t iptables_exec_t /sbin/iptables-multi
Run Code Online (Sandbox Code Playgroud)
如果符号链接上的 SELinux 上下文不正确,请使用上述命令修复它们(尽管这次使用 bin_t 类型)