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.