Linux

iptables-save 無法寫入文件

  • December 4, 2016

我可以執行 iptables-save 並將輸出轉儲到標準輸出,但如果我重定向到一個文件 - 該文件是空的:

   [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不允許保存到文件?

我能想到的唯一原因是這台機器可能被病毒感染(試圖削弱防火牆)

遠射,但是:

其他人在另一個論壇上發布了類似的問題。事實證明,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 類型)

引用自:https://serverfault.com/questions/342151