Existem links para a documentação oficial e recomendada no site da Netfilter.
Este não é um assunto novo, os recursos são ilimitados .
A maioria dos comandos básicos é bastante intuitiva e pode ser facilmente referência à página de manual .
O netfilter, que é a tecnologia no nível do kernel que permite a filtragem de pacotes, é bastante avançado. Existem tabelas adicionais que podem manipular pacotes, converter pacotes e afetar o roteamento. O iptablesutilitário é a ferramenta da terra do usuário para interagir com o netfilter. Se você deseja aprender sobre funcionalidades avançadas, sugiro que você faça referência à documentação mencionada acima. Para uma introdução à funcionalidade básica, leia mais.
Para listar todas as regras existentes:
iptables -L -n
-n impede que o iptables resolva ips, o que produz uma saída mais rápida.
A tabela padrão é a filtertabela, que é usada para aplicar regras básicas de firewall às três cadeias. As três cadeias de padrão na filtertabela são INPUT, OUTPUTe FORWARD.
As cadeias são amplamente auto-explicativas. A cadeia INPUT afeta os pacotes que chegam, a cadeia OUTPUT afeta os pacotes gerados localmente e, finalmente, FORWARD para todos os pacotes que são roteados pelo sistema.
Entre os alvos que você pode especificar, você pode DROPpacotes, o que significa simplesmente ignorar e não responder. Você pode REJECTpacotes, onde uma resposta icmp seria enviada para a fonte da negação. Finalmente, você pode ACCEPT, o que permite que os pacotes continuem roteando.
Freqüentemente, com um firewall externo, a opção padrão será o DROPcontrário REJECT, pois reduz a área visível da sua rede na Internet. Por exemplo, um IP que de outra forma limita os serviços a um host específico teria menos visibilidade DROP.
Nota, -Asignifica acrescentar ao final da cadeia. Se você deseja inserir no topo, você pode usar -I. Todas as regras são processadas de cima para baixo. -Dpara exclusão.
Para DROPum pacote recebido vindo de 192.168.235.235:
iptables -A INPUT -s 192.168.235.235 -j DROP
Isso salta para o DROPdestino de todos os protocolos provenientes desse IP.
Aceitar:
iptables -A INPUT -s 192.168.235.235 -j ACCEPT
Para impedir o acesso a esse IP a partir do seu servidor ou rede local:
iptables -A OUTPUT -d 192.168.235.235 -j DROP
Você pode especificar o -pprotocolo, a -sorigem do pacote, o -ddestino do pacote, a porta de destino --dport, a porta de origem --sporte muitos outros sinalizadores que afetarão como os pacotes são tratados pela regra.
Se sua INPUTpolítica padrão era DROPe você queria permitir que todos na 192.168.123.0/24sub-rede acessassem o SSH no seu servidor, aqui está um exemplo:
iptables -A INPUT -s 192.168.123.0/24 -p tcp --dport 22 -j ACCEPT
É isso mesmo, você pode usar a notação CIDR também!
De um modo geral, a melhor política padrão é DROPpara todas as cadeias. Toda cadeia tem uma política padrão, especificada pelo -Psinalizador. Mesmo se você tiver sua política definida como padrão DROP, ainda é recomendável que a entrada final em uma cadeia também seja uma DROP.
Por exemplo, para alterar a política DROPpara as cadeias INPUT, FORWARD e OUTPUT:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
Cuidado , se você especificar a política padrão do DROP for INPUT em um sistema remoto sem primeiro permitir o acesso SSH, poderá impedir o acesso ao sistema. Se estiver em um sistema remoto, você pode especificar um crontab temporário para liberar todas as regras a cada 5 minutos como à prova de falhas.
Para excluir todas as regras e permitir todo o tráfego:
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -X
iptables -F
Observe que -Xremove todas as cadeias criadas. -Flibera todas as regras.
Existem ferramentas nativas para salvar e restaurar as regras. Particularmente, iptables-savee iptables-restore. A maioria das distribuições modernas de Linux possui savee restorefunciona dentro de um arquivo init do iptables fornecido com o sistema.
Existem outras práticas recomendadas de firewall, como descartar pacotes malformados e outro tipo de tráfego indesejável. Essa é uma vantagem do uso de um utilitário de front-end como o Shorewall , pois implementará muitas dessas políticas por padrão. No entanto, concordo com sua abordagem e prefiro manter minhas próprias regras diretamente também, e essas mesmas práticas recomendadas podem ser implementadas sem um front end.