Como usar iptables para filtrar pacotes no Linux

Índice

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 iptables
Veremos 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 iptables
Ou você também pode executar:
 iptables -h
Observaçã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 DROP
Este é 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 -F
Bem, 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 DROP
Observaçã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 DROP
Como 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 -L
Vemos 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 1
E 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 DROP
Abaixo, 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 DROP
A 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 DROP
Vejamos 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 DROP
Observaçã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 ACEITAR
Neste 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.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave