Vídeos Relacionados: tcpdump - Capturando pacotes de rede no Linux via terminal (Pode 2024).

Como usar o iptables para filtrar pacotes no Linux

{title}

Neste tutorial, falaremos sobre o iptables, o firewall ou firewall que temos no Linux . Essa ferramenta nos permitirá filtrar pacotes (sobre o que será o tutorial), gerar um log de log, executar traduções NAT.

Graças ao iptables, podemos gerar regras para filtrar os pacotes de maneira 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 apresenta complicações.

O uso dessa ferramenta requer altos privilégios, ou seja, precisaremos ser superusuários para executá-la. Temos muitos recursos no iptables, o objetivo do tutorial é ver uma aproximação de seu uso através de exemplos. É importante que, depois de concluir o tutorial, continue aprofundando, pois é muito útil.

Em seguida, deixamos o site oficial, caso seja de seu interesse:

netfilter / iptables

Nota

Para IPv6, temos ip6tables .

Se quisermos ver informações sobre o iptables, executaremos o seguinte em um terminal:

 homem iptables 
Veremos as seguintes informações:

{title}

Na imagem, você pode ver parte das informações fornecidas pelo comando, para ver tudo, 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, para que possamos usar os seguintes conceitos:

Tabelas
O Iptables possui várias tabelas, mas para o nosso tutorial, focamos apenas na tabela de filtros, responsável pela filtragem, que é usada por padrão no iptables.

Correntes
As correntes que vou colocar aqui são as que pertencem à tabela comentada anteriormente.

  • Entrada : Pacotes direcionados à nossa máquina.
  • Saída : Os pacotes que se originam do nosso sistema.
  • Encaminhar : pacotes que passam por nossa máquina para serem roteados para outra.

Regras
Vamos indicar os 2 que serão usados ​​no tutorial, mas há mais.

  • Aceitar : Pacotes são aceitos.
  • Drop : Os pacotes são descartados.

Parâmetros
Alguns dos parâmetros que podemos usar são os próximos.

  • -Uma regra : para adicionar uma regra
  • -D regra : Para excluir a regra que indicamos.
  • -L : Permite listar as regras.
  • -F : exclua todas as regras existentes.
  • Objetivo -j : define o tipo de regra (Accept, Drop).
  • -t table : Indica a tabela que é usada (por tabela de filtro padrão).
  • -p protocol : É usado para indicar o protocolo.
  • -i interface : Estabelecemos a interface para a regra.
  • -s : para indicar a origem.
  • -d : para indicar o destino.
  • -h : mostra ajuda.

Existem muitos outros, como - porta de destino ou - porta de origem . Para ver todos eles, você pode executar o comando que mencionamos acima:

 homem iptables 
Ou você também pode executar:
 iptables -h 

Nota

Você precisa examinar atentamente as opções oferecidas pela ferramenta, pois ela distingue entre minúsculas e maiúsculas e podemos estar errados (não será o mesmo que colocar -p que -P ).

Vamos começar com os exemplos, um total de 10 será inserido, para que seja melhor compreendido e podemos ver como o iptables funciona no modo firewall. Nos exemplos que você não verá sudo, não será necessário se você for root, se não precisar adicionar a palavra sudo no início de cada exemplo.

$config[ads_text5] not found

1. Proibir a partida para qualquer destino

Para começar, daremos um exemplo fácil, não deixando a saída em lugar nenhum.

 iptables -A OUTPUT -j DROP 
Isso é muito fácil, como você pode ver, o seguinte é ainda mais.

2. Limpar todas as regras

Continuamos com um exemplo muito simples, deixamos nossas iptables sem regras, para isso vamos executar:

 iptables -F 
Bem, vamos complicar um pouco mais a seguir.

3. Proibir a partida pela porta 80

Agora somos responsáveis ​​por fechar a saída através de uma porta específica, neste caso é 80, portanto, não teremos navegação na web pelo protocolo http (se navegarmos para uma página https, podemos navegar, embora possamos fazer o mesmo que 80) .

 iptables -A OUTPUT -p tcp --destination-port 80 -j DROP 

$config[ads_text6] not found$config[ads_text5] not found

Nota

Ao usar uma porta de destino ou de origem, precisaremos definir o parâmetro -p para indicar o protocolo.

Passamos ao quarto exemplo.
4. Proibir a navegação para uma página

Desta vez, estamos interessados ​​em proibir o acesso à página X do nosso sistema, imagine que esta página seja solvetic.com, por isso descobrimos o seu IP, é muito fácil executar um ping e o obteremos.

{title}

E agora vamos executar:

 iptables -A OUTPUT -d 178.33.118.246 -j DROP 
Como vemos apenas indicar seu IP após o parâmetro -d .

5. Liste as regras que existem

Este exemplo tentará listar as regras de filtragem que definimos atualmente:

 iptables -L 
Vemos uma imagem, temos apenas duas regras definidas, como podemos ver abaixo:

$config[ads_text6] not found$config[ads_text5] not found

{title}

Vamos para o sexto exemplo, no qual usaremos a lista de regras novamente.

6. Exclua uma regra específica

Aqui, com base nas regras que tínhamos no exemplo anterior, excluiremos uma das regras de saída; nesse caso, a primeira que aparecer, executamos o seguinte:

 iptables -D OUTPUT 1 
E para verificar se ele foi efetivamente excluído, usamos o exemplo 5:

{title}

Vamos continuar com mais.

7. Impedir ping

Não queremos poder nos enviar ping, pois isso bloqueará a entrada do protocolo ICMP.

 iptables -A INPUT -p ICMP -j DROP 
Deixo então uma imagem do ping antes de executar o comando anterior e depois:

$config[ads_text6] not found

{title}

Podemos ver que nossa máquina não responde porque rejeita pacotes do tipo ICMP. Se bloquearmos a saída em vez da entrada, executaremos:

 iptables -A OUTPUT -p ICMP -j DROP 
O mesmo aconteceria novamente como na imagem anterior. Para testar eu fiz ping 3 vezes, se executarmos, podemos ver o número de pacotes:
 iptables -L -v 

{title}

Vemos que ele efetivamente coloca 3 na imagem anterior.

8. Impedir que um IP nos envie dados

Vamos aplicar uma entrada, não queremos que um determinado IP se conecte a nós, portanto, executaremos:

 iptables -A INPUT -s 192.168.66.1 -j DROP 
Vejamos um exemplo um pouco mais longo.

$config[ads_text5] not found

9. Permitir saídas para um intervalo de IPs

Imagine que você deseja aceitar apenas saídas para um intervalo de endereços IP, mas rejeitar as outras saídas, devemos executar:

 Iptables -A OUTPUT -d 192.168.0.0/24 -j ACEITAR Iptables -A OUTPUT -j DROP 

Nota

A ordem de execução das regras é importante, tente este exemplo com a rede que você deseja permitir e faça uma conexão, você verá que funciona, exclua todas as regras e execute as 2 frases ao contrário, agora eu rejeitaria as conexões.

Vamos ver o décimo e último exemplo.

10. Porta aberta 143 (imap)

Abriremos uma porta para a entrada de todos os pacotes tcp, neste caso 143 (seria o mesmo para o resto).

 iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACEITAR 
Neste exemplo, queríamos usar --dport, para que você possa ver que podemos usar essa ou --destination-port, também poderíamos usar --sport em vez de --source-port .

$config[ads_text6] not found$config[ads_text5] not found

Até agora é o tutorial, agora tente aplicar outras regras, quanto mais você praticar, mais rápido terá ao aplicar regras e menos isso lhe custará. Para finalizar, deixamos um tutorial que pode ser do seu interesse, abra e feche portas no Windows 10.