como salvar as regras do iptables permanentemente?

1

Quero manter algumas iptablesregras de permanência, portanto, apenas adiciono as regras manualmente:

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

Estou certo de que o comando funciona, porque pude vê-lo após a execução iptables -vnL. Infelizmente, acho que ele desaparece sem reiniciar ou reiniciar iptablesapós uma hora ou mais, porque não consegui vê-lo depois de executar iptables -vnLmais tarde.

Primeiro de tudo, tenho certeza de que não há um comando de execução como esse iptables -F. 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

Acho que esse é um comportamento do kernel completamente após o Google. Alguém disse iptablesque reconstruiria as regras, mas ele não me disse a condição de desencadeamento. e verifico o arquivo de configuração do iptables ( /etc/sysconfig/iptables-config), mas não encontrei nenhum item de configuração que pudesse iptablesreconstruir as regras.

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

Resumindo:

  1. Como impedir o iptables de reverter as regras adicionadas?
  2. Quando irá iptablesreconstruir suas regras e qual é a condição de disparo?
  3. Qual regra seria recarregada quando o iptables fosse reconstruído e onde essas regras serão salvas?

PS. Modificar /etc/sysconfig/iptablesou usar iptables-savee iptables-restorepode 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).

Marca
fonte
obviamente alguém está mudando as regras. O ypu interrompe o serviço iptables, faz as alterações e depois reinicia sempre?
Mdpc
ninguém muda as regras (porque ninguém além de mim sabe a senha). e eu não reinicio o iptables e não reinicio.
Mark
Acho que @mdpc significa que você deve interromper o serviço, fazer suas alterações e iniciar o serviço, que basicamente salva essas alterações. Talvez haja um problema ao salvar suas alterações enquanto ele estiver em execução e se o serviço for interrompido, você poderá fazer as alterações sem se preocupar com nada em execução e conflitante no momento.
Andrew
Eu tentei, mas ainda não funcionou. Adicionei as regras em / etc / sysconfig / iptables, reiniciei, reiniciei o iptables e descobri que as regras existiam, mas desapareceriam após uma hora.
Mark

Respostas:

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 a /etc/init.d/iptables:

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

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

Se você não vir um /tmp/iptables-service.logarquivo, algo executou o /sbin/iptablescomando diretamente. Para encontrar o que está sendo executado este comando, renomear /sbin/iptablesa /sbin/iptables.reale, em seguida, 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. Observe também que seu comando iptables atual pode ser algo como /sbin/iptables-multi-1.4.7dependendo de como você alternativesconfigurou.

Então, como antes, observe o /tmp/iptables-cmd.logarquivo para ver quem / o que está executando o comando. Depois de conhecer a causa, você poderá evitá-la.

gogators
fonte