como salvar as regras do iptables permanentemente?

1

Eu quero manter a permanência de iptables , então apenas adiciono as regras manualmente:

/sbin/iptables -I OUTPUT -p tcp --sport 80 -j QUEUE

Tenho certeza de que o comando funciona, porque pude vê-lo depois de executar iptables -vnL . Infelizmente, acho que desapareceu sem reiniciar ou reiniciar iptables depois de uma hora, porque não consegui vê-lo depois de executar iptables -vnL mais tarde.

Primeiro, tenho certeza de que não há um comando de execução como iptables -F . Eu também encontro uma linha relacionada em /var/log/message :

Dec 18 10:10:50 zt_21_23 kernel: ip_tables: (C) 2000-2006 Netfilter Core Team

Eu acho que isso é um comportamento do kernel completamente depois do Google. Alguém disse que iptables iria reconstruir as regras, mas ele não me disse a condição de acionamento. e eu verifiquei o arquivo de configuração do iptables ( /etc/sysconfig/iptables-config ), mas não encontrei nenhum item de configuração que pudesse fazer iptables reconstruir as regras.

Eu tenho que adicionar as regras em intervalos definidos usando crontab se eu quiser manter a permanência.

Para resumir:

  1. Como impedir que o iptables reverta as regras que eu adiciono?
  2. Quando iptables irá reconstruir suas regras e qual é a condição de acionamento?
  3. Qual regra será recarregada quando o iptables for reconstruído e onde essas regras forem salvas?

PS. Modificar /etc/sysconfig/iptables ou usar iptables-save e iptables-restore poderia funcionar, mas as regras ainda desaparecem após uma hora ou mais.

Estou usando o Linux (2.6.18-308.24.1.el5 x86_64).

    
por Mark 18.12.2014 / 07:11

1 resposta

3

Algo ou alguém está removendo suas regras ou reiniciando o serviço iptables. O kernel não faz isso automaticamente. Para pará-lo, primeiro você precisa descobrir o que está fazendo isso. Eu começaria com a verificação para ver se algo está reiniciando o serviço iptables. Para descobrir isso, adicione o seguinte ao /etc/init.d/iptables:

date >> /tmp/iptables-service.log
ps -f $PPID >> /tmp/iptables-service.log

Depois que suas regras "desaparecerem", verifique o arquivo /tmp/iptables-service.log para ver quem / o que executou o script de serviço iptables.

Se você não vir um arquivo /tmp/iptables-service.log , algo executou o comando /sbin/iptables diretamente. Para descobrir o que está executando este comando, renomeie /sbin/iptables para /sbin/iptables.real e crie o seguinte script e salve-o como /sbin/iptables :

#!/bin/bash
date >> /tmp/iptables-cmd.log
ps -f $PPID >> /tmp/iptables-cmd.log
/sbin/iptables $*

Não se esqueça de definir o script como executável: chmod a+x /sbin/iptables . Note também que o seu comando iptables atual pode ser algo como /sbin/iptables-multi-1.4.7 dependendo de como você tem alternatives configurado.

Então, como antes, olhe o arquivo /tmp/iptables-cmd.log para ver quem / o que está executando o comando. Depois de saber a causa, você deve ser capaz de impedi-lo.

    
por 18.12.2014 / 14:59