Como posso tornar permanente um conjunto específico de regras do iptables?


42

Existe uma "prática recomendada" ou padrão para tornar permanentes algumas regras do iptables? Quero dizer: aplicado automaticamente em uma reinicialização do sistema?

Eu estou usando um VPS com Ubuntu Server 10.04 LTS (Lucid Lynx).

Obrigado.

EDIÇÃO GRANDE: Eu não quero que QUALQUER regra seja mantida (como o iptables-persistentpacote). Quero que apenas meu próprio conjunto específico seja recarregado ... se outras regras forem adicionadas ao executar o iptables, elas deverão ser descartadas ...

Respostas:


52

O método mais simples é usar o iptables-save e o iptables-restore para salvar as regras do iptables atualmente definidas em um arquivo e (re) carregá-las (por exemplo, na reinicialização).

Então, por exemplo, você executaria

sudo iptables-save | sudo tee /etc/iptables.conf

para salvar suas regras atuais do iptables /etc/iptables.confe inserir essas linhas em /etc/rc.local:

# Load iptables rules from this file
iptables-restore < /etc/iptables.conf

3
+1 Sua resposta é perfeita para minha pergunta original. Isso também me fez perceber o que realmente queria, então tive que mudar a pergunta de "Como posso tornar as regras do iptables permanentes?" para "Como posso tornar permanente um conjunto específico de regras do iptables?"
J. Bruni

Se puder, faça uma pequena edição na sua resposta para refletir a alteração na pergunta ... Ficarei feliz em aceitá-la! Preciso usar iptables-saveuma vez e recarregar sempre (iptables-restore em /etc/rc.local parece bom).
J. Bruni

1
Se você está começando permission deniedquando tenta usar >, essa resposta do Stack Overflow será útil.
David Tuite

2
Use em sudo sh -c "iptables-save > /etc/iptables.conf"vez desudo iptables-save > /etc/iptables.conf
Rajat Gupta

31

Uma atualização rápida para isso, pois você pode estar usando o 12.04 agora e as coisas estão melhores.

O iptables-persistentpacote agora resolve esse problema. Para instalar,

sudo apt-get install iptables-persistent

As regras definidas quando o pacote é instalado são salvas e usadas em cada inicialização subsequente. Novas regras carregadas são descartadas na reinicialização.

O arquivo de configuração, se você precisar alterá-los (depois de iptables-persistentinstalado), é /etc/iptables/rules.v4ou /etc/iptables/rules.v6para ipt4 e ipv6 iptables, respectivamente.


Se você editar /etc/iptables/rules.v4, como aplicá-lo [oficialmente]? Atualmente eu estou fazendosudo iptables-restore < /etc/iptables/rules.v4
de Bruno Bronosky

24

Melhor do /etc/rc.localque adicionar uma linha /etc/network/interfacesdepois de salvar as regras do iptable, como este

post-up iptables-restore < /etc/iptables.up.rules

ou é o mesmo para colocar o arquivo dentro /etc/network/if-down.d/ou /etc/network/if-post-down.d/ou /etc/network/if-pre-up.d/ou /etc/network/if-up.d/.


1
@ Kreker: por favor, esclareça como sua abordagem é melhor do que executar um script de restauração rc.local? a outra abordagem não funciona em alguns casos?
Rajat Gupta 16/03

2
Adicioná-lo à configuração de rede faz com que seja recarregado depois de executar o comando "service networking restart". Não se limita ao arranque do sistema.
K. Darien Freeheart

4
Por que um iptables-restore após a interface está sendo desativado?
alphadogg
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.