iptables-save falha ao gravar no arquivo

4

Eu posso rodar o iptables-save e descarregar a saída para o stdout, mas se eu redirecionar para um arquivo - o arquivo está vazio:

    [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]# 

O encanamento funciona ( iptables-save | cat ), e o salvamento no arquivo através de tee também funciona, mas por que iptables-save não permite salvar em um arquivo?

A única razão que posso pensar é que esta máquina pode estar infectada por um vírus (uma tentativa de enfraquecer um firewall)

    
por nhed 18.12.2011 / 21:43

3 respostas

4

Long shot, mas:

Alguém postou um problema semelhante em outro fórum. Acontece que o contexto do SELinux está errado.

Execute ls -laZ no iptables-multi. Deve retornar com:

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

Todos os outros arquivos iptables são links simbólicos para ele:

[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

Se o contexto do SELinux não estiver correto, altere-o com o comando chcon no arquivo principal:

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

Se o contexto do SELinux nos links simbólicos não estiver correto, corrija-os usando o comando acima (embora desta vez com o tipo bin_t)

    
por 18.12.2011 / 22:25
0

De acordo com o comentário do Rilindo, se você estiver no RedHat, o docs mencionam:

~]# /sbin/service iptables save 
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
    
por 18.12.2011 / 22:26
0

O comando iptables-save tenta definir o contexto de segurança selinux correto em um centos-7 minimalista.

Eu olhei para o erro e ele parece falhar porque os utilitários para alterar o contexto do selinux não estão instalados (via dependência?).

O seguinte corrigiu para mim:

yum -y install policycoreutils

Depois disso, o seguinte funcionou bem:

/sbin/service iptables save
    
por 04.12.2016 / 13:31