Neste tutorial, vamos falar sobre iptables, o firewall ou firewall que temos no Linux. Esta ferramenta nos permitirá filtrar pacotes (dos quais o tutorial tratará), gerar um registro de log, realizar traduções NAT.
Graças ao iptables podemos gerar regras para filtrar pacotes de forma bastante simples, embora a primeira vez que você o use possa parecer um pouco confuso, você verá que quando o usa por alguns dias não tem nenhuma complicação.
O uso desta ferramenta requer altos privilégios, ou seja, precisaremos ser superusuários para fazê-la funcionar. Temos muitos recursos dentro do iptables, o objetivo do tutorial é ver uma aproximação de seu uso por meio de exemplos. É importante que, depois de terminar o tutorial, você continue cavando, pois é muito útil.
Em seguida, deixamos o site oficial, caso seja de interesse:
ObservaçãoPara IPv6, temos ip6tables.
Se quisermos ver informações sobre iptables, executaremos o seguinte em um terminal:
man iptablesVeremos as seguintes informações:
Na imagem você pode ver parte das informações fornecidas pelo comando, para ver todas elas, role para baixo no terminal. Como vimos no início do tutorial, uma das tarefas que o iptables nos permitirá é criar regras ou filtros para saber o que fazer com os pacotes que têm nossa máquina como origem / destino. Para esta tarefa, estaremos interessados em saber por que usamos os seguintes conceitos:
Pranchas
Iptables tem várias tabelas, mas para o nosso tutorial nos concentramos apenas em mesa de filtro, que é responsável pela filtragem, é usado por padrão no iptables.
Correntes
As strings que vou colocar aqui são as que pertencem à tabela comentada anteriormente.
- Entrada: Pacotes destinados à nossa máquina.
- Saída: Pacotes que se originam em nosso sistema.
- Avançar: Pacotes que passam por nossa máquina para serem encaminhados para outra.
Regras
Vamos indicar os 2 que serão usados no tutorial, mas existem mais.
- Aceitar: Pacotes são aceitos.
- Derrubar: Os pacotes são descartados.
Parâmetros
Alguns dos parâmetros que podemos usar são os seguintes.
- -Uma regra: Para adicionar uma regra
- Regra -D: Para deletar a regra que indicamos.
- -EU: Nos permite listar as regras.
- -F: Exclua todas as regras existentes.
- -j alvo: Defina o tipo de regra (Aceitar, Abandonar).
- -t mesa: Indica a tabela que é usada (por padrão a tabela de filtros).
- protocolo -p: Usado para indicar o protocolo.
- interface -i: Estabelecemos a interface para a regra.
- -s: Para indicar a origem.
- -d: Para indicar o destino.
- -h: Exibe ajuda.
Existem muitos mais, pois podem ser --Porto de destino ou --source-port. Para ver todos eles, você pode executar o comando que discutimos acima:
man iptablesOu você também pode executar:
iptables -hObservaçãoVocê tem que olhar atentamente as opções oferecidas pela ferramenta, pois ela distingue entre letras maiúsculas e minúsculas e podemos cometer um erro (não será a mesma coisa -p que -P).
Vamos começar com os exemplos, um total de 10 será colocado, para que seja melhor entendido e possamos ver como funciona o iptables em modo firewall. Nos exemplos você não verá o sudo, não será necessário se você for root, caso contrário, deverá adicionar a palavra sudo no início de cada exemplo.
1. Proibir a partida para qualquer destinoPara começar, vamos dar um exemplo fácil, não deixe a saída em lugar nenhum.
iptables -A OUTPUT -j DROPEste é muito fácil, como você pode ver, o próximo é ainda mais fácil.
2. Limpe todas as regrasContinuamos com um exemplo bem simples, deixamos nosso iptables sem regras, para isso iremos executar:
iptables -FBem, vamos complicar um pouco mais no próximo.
3. Proibir a saída pela porta 80Agora cuidamos de fechar a saída através de uma porta específica, neste caso é 80, portanto não teremos navegação web através do protocolo http (se navegarmos para uma página https poderemos navegar, embora poderíamos fazer o mesmo como 80).
iptables -A SAÍDA -p tcp --destination-port 80 -j DROPObservaçãoAo usar uma porta de destino ou origem, precisaremos colocar o parâmetro -p para indicar o protocolo.
Passamos para o quarto exemplo.
4. Proibir a navegação para uma páginaNesta ocasião estamos interessados em proibir o acesso à página X do nosso sistema, vamos imaginar que esta página seja solvetic.com, para isso descobrimos o seu IP, muito fácil executando um ping o obteremos.
E agora vamos executar:
iptables -A SAÍDA -d 178.33.118.246 -j DROPComo podemos ver, basta indicar o seu IP após o parâmetro -d.
5. Liste as regras que existemEste exemplo tentará listar as regras de filtro que definimos atualmente:
iptables -LVemos uma imagem, só temos duas regras definidas, como vemos a seguir:
Vamos passar para o sexto exemplo, no qual usaremos a lista de regras novamente.
6. Exclua uma regra específicaAqui, partindo das regras que tínhamos no exemplo anterior, vamos deletar uma das regras de saída, neste caso a primeira que aparece, executamos o seguinte:
iptables -D SAÍDA 1E para verificar se foi efetivamente excluído, usamos o exemplo 5:
Vamos continuar com mais.
7. Evite ser pingadoNão queremos que eles façam ping, para isso vamos bloquear a entrada do protocolo ICMP.
iptables -A INPUT -p ICMP -j DROPAbaixo, deixo uma imagem do ping antes de executar o comando acima e depois:
Podemos ver que nossa máquina não responde, pois rejeita pacotes ICMP. Se bloquearmos a saída em vez da entrada, executaremos:
iptables -A SAÍDA -p ICMP -j DROPA mesma coisa da imagem anterior aconteceria novamente. Para testar eu fiz ping 3 vezes, se executarmos podemos ver o número de pacotes:
iptables -L -v
Vemos que efetivamente coloca 3 na imagem anterior.
8. Impedir que um IP nos envie dadosVamos aplicar uma entrada, não queremos um determinado IP para nos conectar, então vamos executar:
iptables -A INPUT -s 192.168.66.1 -j DROPVejamos um exemplo um pouco mais longo.
9. Permitir saídas para uma variedade de IPsImagine que você deseja apenas aceitar saídas para um intervalo de endereços IP, mas rejeitar o resto das saídas, devemos executar:
Iptables -A SAÍDA -d 192.168.0.0/24 -j ACEITAR Iptables -A SAÍDA -j DROPObservaçãoA ordem de execução das regras importa, experimente este exemplo com a rede que deseja permitir e faça uma conexão, você verá que funciona, então apague todas as regras e execute as 2 frases ao contrário, agora rejeitaria as conexões .
Vamos passar para o décimo e último exemplo.
10. Abra a porta 143 (imap)Vamos abrir uma porta para a entrada de todos os pacotes tcp, neste caso 143 (seria igual para o resto).
iptables -A ENTRADA -m estado --state NOVO -p tcp --dport 143 -j ACEITARNeste exemplo, queríamos usar --dport, para que você possa ver que podemos usar isso ou --Porto de destino, também poderíamos usar --esporte em vez de --source-port.
O tutorial termina aqui, agora que você tenta aplicar outras regras, quanto mais praticar, mais rápido terá na hora de aplicar as regras e menos custará. Para finalizar deixamos um tutorial que pode ser do seu interesse, abrindo e fechando portas no Windows 10.