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 ...

J. Bruni
fonte

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
Riccardo Murri
fonte
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.

user172020
fonte
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/.

Kreker
fonte
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