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 iptables
utilitá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 filter
tabela, que é usada para aplicar regras básicas de firewall às três cadeias. As três cadeias de padrão na filter
tabela são INPUT
, OUTPUT
e 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 DROP
pacotes, o que significa simplesmente ignorar e não responder. Você pode REJECT
pacotes, 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 DROP
contrá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, -A
significa 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. -D
para exclusão.
Para DROP
um pacote recebido vindo de 192.168.235.235
:
iptables -A INPUT -s 192.168.235.235 -j DROP
Isso salta para o DROP
destino 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 -p
protocolo, a -s
origem do pacote, o -d
destino do pacote, a porta de destino --dport
, a porta de origem --sport
e muitos outros sinalizadores que afetarão como os pacotes são tratados pela regra.
Se sua INPUT
política padrão era DROP
e você queria permitir que todos na 192.168.123.0/24
sub-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 é DROP
para todas as cadeias. Toda cadeia tem uma política padrão, especificada pelo -P
sinalizador. 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 DROP
para 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 -X
remove todas as cadeias criadas. -F
libera todas as regras.
Existem ferramentas nativas para salvar e restaurar as regras. Particularmente, iptables-save
e iptables-restore
. A maioria das distribuições modernas de Linux possui save
e restore
funciona 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.