Este site usa cookies para garantir que você obtenha a melhor experiência, caso tenha duvidas acesse a nossa Política de Privacidade

Aceitar!

Como utilizar o iptables.

Saiba como liberar e bloquear portas no iptables.

Postado por metavops 18 de novembro de 2021.

O que é o iptables ?

O iptales é um serviço de firewall que vem instalado por padrão em diversas distros GNU/linux, uma de suas principais caracteristicas é facilidade e robustez fora a quantidade de recursos que ele oferece para um serviço que já vem instalado nativamente.

O iptables foi lançado em 1998 e foi escrito sobre a linguagem C, seu criador foi o Paul Rusty Russell, no inicio o projeto se chamava Netfilter/iptables já que o principal objetivo do iptables é provisinar uma interface que atuava sobre o Netfilter na qual atua diretamente no gerenciamento de pacotes.

Para entendermos como funciona o Netfilter/iptables precisamos saber o que são "chains", "tables", "target" e etc, e é isso que vamos abordar no proximo parágrafo.

O são tables, chains e target ?

TABLES: podemos chamar de table ou tabela, no iptables temos 3 table's que são:
FILTER
NAT
MANGLE

Cada uma das tabelas acima oferece recursos e funções diferentes, mas vale resaltar que a tabela que vem ativada por padrão no iptables é a tabela "FILTER", porem vamos verificar o que cada tabela dessa nos oferece como recurso:

FILTER: Tabela que vem ativada por padrão, ideal para host's e tem 3 chains que são elas: INPUT, OUTPUT, e FORWARD.

NAT: a tabela NAT(Network address translation) como o proprio nome diz ajuda na tradução de endereços IP, por exemplo podemos utilizar o NAT para conectar redes com diferentes ranges/pools de IP's, vamos supor que você recebe o seguinte endereço IP de seu provedor 123.456.789.101 ao ativar e configurar um NAT, você pode fazer com que sua rade local com o range 192.168.0.10 se comunique com a internet, e isso ocorre devido ao NAT.
A tabela NAT tem 3 chains que são elas: PREROUTING, POSTROUTING, e OUTPUT.

MANGLE: a tabela mangle trata-se de uma tabela na qual pode ser utilizada para aplicar funções especificas/especiais no roteamento, pois sua ações são realizadas antes do pacote entrar em uma das 5 chain's na qual ele atua, que são:
PREROUTINT(NAT), POSTROUTING(NAT), INPUT(INPUT), OUTPUT(NAT), FORWARD(INPUT).

CHAINS: As chains são locais onde as regras do firewall serão aplicadas e cada chain tem um funcionamento diferente, no exemplo abaixo eu listo o que cada chain fica responsavel:

  • FILTER
      • INPUT: filta os pacotes na entrada do sistema.
      • OUTPUT: filta os pacotes na saida.
      • FORWARD: filtra os pacotes durante o roteamento.
  • NAT
      • PREROUTING: filta os pacotes na entram no sistemas.
      • POSTROUTING: filta os pacotes durante o roteamento e aplica o destino para os pacotes.
      • OUTPUT: filtra os pacotes de saida..

TARGET: O target são ações que aplicamos nas regras que ficam dentro das chains, para listar todos os target's ativos no sistema, execute o comando:
cat /proc/net/ip_tables_targets
no exemplo abaixo vou listar alguns target's e a função na qual ele desempenha na regra:

  • FILTER
    • CHAINS(INPUT, OUTPUT e FORWARD)
      • TARGET's:
        • ACCEPT: Aceita o pacote.
        • REJECT: Rejeita o pacote.
        • DROP: Descarta um pacote sem notificar o emissor.
        • LOG: Gera um log do chamado.

  • NAT
    • CHAINS(PREROUTING, POSTROUTING e OUTPUT)
      • TARGET's:
        • SNAT: Realiza a troca de endereços IP de origem.
        • DNAT: Altera os endereços IP de destino.
        • MASCAREDE: Faz o mascaramento do IP.
        • REDIRECT: Redireciona o pacote para uma porta local.

Modulos.

Os modulos são extensões que podemos utilizar nas regras, para expandirmos os recursos e ações do firewall, os modulos são especificados na regra pela opção -m ou --match. Para que você verifique os modulos ativos em seu IPtables, basta executar o comando:
cat /proc/net/ip_tables_matches
Alguns exemplos de modulos mais utilizados no iptables são: MULTIPORT, IPRANGE, CONNLIMIT, STRING, TIME, STATE.


  • Modulos
      • -m ou --match
        • MULTIPORT: permite criar regras especificando mais de uma porta.
        • IPRANGE: permite criar regras especificando ranges de IP.
        • CONNLIMIT: permite criar regras para controle de conexão simultaneas.
        • STRING: permite criar regras na qual analisa uma determinada string dentro do pacote para que possa ser bloqueado, liberado ou analisado.
        • TIME: permite criar regras na qual podemos adicionar por tempo(segundos, minutos, horas e dias).
        • STATE: permite criar regras na qual faz analise do estado da conexão.

Comandos basicos.

Antes de executarmos os comandos basicos precisamos estar logado com uma conta com direitos administrativos, para isso você precisa digitar os comandos a seguir com o comando sudo antes, seguindo essa sintaxe aqui:
sudo [comando desejado]
Caso não vocẽ não queira ficar digitando o comando sudo toda vez, basta você executar o comando sudo su coloque sua senha e após isso você poderá executar os comandos pois estará logado como root no sistema.

Comando help.

Caso precise tirar duvida sobre sintaxe, agumentos ou opções disponiveis execute o seguinte comando:
iptables --help juninho-tecnologia

Salvando e restarurando as regras.

Quando definimos uma regra através da linha de comando, geralmente ela é perdida quando efetuamos a reinicialização do sistema, para realizar o backup das regras de firewall execute o comando abaixo:
iptables-save > /etc/iptables-save
esse comando direciona as regras existentes no firewall para um arquivo de texto. juninho-tecnologia Para recuperar as regras, utilize o arquivo de texto gerado pelo comando anterior, e utilize o comando:
iptables-save < /etc/iptables-save
juninho-tecnologia

Listar regras.

Para listarmos todas as regras em uso do firewall utilizamos o argumento -L .
iptables -L juninho-tecnologia Podemos utilizar o argumento -L passando a chain na qual queremos listar as regras, para isso utilizamos a seguinte sintaxe: iptables -L [CHAIN] neste exemplo abaixo eu estou listando as regras da chain INPUT.
iptables -L INPUT juninho-tecnologia

Liberando e bloqueando portas no iptables.

Bloqueando o protocolo PING no firewall, para isso vou criar uma regra para a chain INPUT bloqueado o protocolo ICMP, para isso digite o comando abaixo:
iptables -A INPUT -p icmp -j DROP juninho-tecnologia Segue abaixo a descrição de cada componente do comando que digitei acima:
iptables: Executor do comando.
-A: Cria nova regra no final da chain.
INPUT: Chain escolhida na qual a regra vai agir.
-p: Especifica o protocolo na qual a regra vai ser aplicada.
icmp: Protocolo.
-j: Executa uma ação.
DROP: Ação escolhida para a regra.

Bloqueando e gerando log do pacote para que seja analisado posteriormente, para isso digite o comando:
iptables -I INPUT -p icmp -j LOG juninho-tecnologia
Segue abaixo a descrição de cada componente do comando que digitei acima:
iptables: Executor do comando.
-I: Cria nova regra no topo da chain.
INPUT: Chain escolhida na qual a regra vai agir.
-p: Especifica o protocolo na qual a regra vai ser aplicada.
icmp: Protocolo.
-j: Executa uma ação.
LOG: Ação escolhida para a regra.

Liberando uma porta especifica no firewall, no exemplo abaixo vou abrir a porta 80.
iptables -I INPUT -p tcp --dport 80 -j ACCEPT juninho-tecnologia
Segue abaixo a descrição de cada componente do comando que digitei acima:
iptables: Executor do comando.
-I: Cria nova regra no topo da chain.
INPUT: Chain escolhida na qual a regra vai agir.
-p: Especifica o protocolo na qual a regra vai ser aplicada.
tcp: Protocolo.
--dport: indica que a regra vai ser ativa em uma porta epecifica.
80: porta escolhida.
-j: Executa uma ação.
ACCEPT: Ação escolhida para a regra.

Deletando uma regra especifica no firewall, no exemplo abaixo vou deletar a regra que foi criada acima para abrir a porta 80, para isso digite o comando abaixo:
iptables -D INPUT -p tcp --dport 80 -j ACCEPT juninho-tecnologia
Segue abaixo a descrição de cada componente do comando que digitei acima:
iptables: Executor do comando.
-D: Deleta regra na chain escolhida.
INPUT: Chain escolhida na qual a regra vai agir.
-p: Especifica o protocolo na qual a regra vai ser aplicada.
tcp: Protocolo.
--dport: Indica que a regra vai ser ativa em uma porta epecifica.
80: porta escolhida.
-j: Executa uma ação.
ACCEPT: Ação escolhida para a regra.

Criando uma regra de redirecionamento de portas utilizando a tabela NAT, nessa regra vou direcionar o trafego da porta 8080 para a 80, para isso digite o comando abaixo:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to :80 juninho-tecnologia
Segue abaixo a descrição de cada componente do comando que digitei acima:
iptables: Executor do comando.
-t: Indica a tabela.
nat: tabela escolhida(NAT).
-A: Cria uma regra na chain escolhida.
PREROUTING: Chain escolhida na qual a regra vai agir.
-p: Especifica o protocolo na qual a regra vai ser aplicada.
tcp: Protocolo.
--dport: Indica que a regra vai ser ativa em uma porta epecifica.
8080: porta escolhida.
-j: Executa uma ação.
DNAT: Ação escolhida para a regra, para redirecionar o trafego.
--to :80: Indica a porta de destino na qual vai receber o trafeg.

Inserindo modulos nas regras.

Utilizando o modulo MULTIPORT nos permite especificarmos mais de uma porta na regra agir.
iptables -I INPUT -m multiport -p tcp --dports 80,443 -j ACCEPT juninho-tecnologia
Segue abaixo a descrição de cada componente do comando que digitei acima:
iptables: Executor do comando.
-I: Cria nova regra no topo da chain.
INPUT: Chain escolhida na qual a regra vai agir.
-m: Indica que será utilizado um modulo.
multiport: Modulo escolhido.
-p: Especifica o protocolo na qual a regra vai ser aplicada.
tcp: Protocolo.
--dports: indica as portas na qual a regra vai agir.
80,443: portas escolhidas.
-j: Executa uma ação.
ACCEPT: Ação escolhida para a regra.

Utilizando o modulo IPRANGE nos permite especificarmos um range de ip, isso pode ser bastante necessario quando precisamos determinar que somentes IP's dentro desse range acessem o sistema/recuso.
iptables -I INPUT -m iprange --src-range 192.168.10.2-192.168.10.50 -j ACCEPT juninho-tecnologia
Segue abaixo a descrição de cada componente do comando que digitei acima:
iptables: Executor do comando.
-I: Cria nova regra no topo da chain.
INPUT: Chain escolhida na qual a regra vai agir.
-m: Indica que será utilizado um modulo.
iprange: Modulo escolhido.
--src-range: Especifica o range de origem/entrada.
192.168.10.2 - 192.168.10.50: Range de IP's escolhidos.
-j: Executa uma ação.
ACCEPT: Ação escolhida para a regra.

Conclusão.

O iptables é ferramenta bem potente e com diversos recursos, você tambem pode integra-lo com outras tecnologias para aumentar proteção de sua maquina ou servidor. Neste artigo eu fiz uma explicação basica de como é, e como funciona esse firewall, caso tenha duvidas ou sugestões, deixe um comentario abaixo, ou acesse guia Contato.


Deixe seu comentario ou sugestão sobre o post.