Ubuntu iptables como controlar o tráfego de rede usando iptables?

Ubuntu iptables como controlar o tráfego de rede usando iptables?
"… A Utilitário UNIX do espaço do usuário que oferece aos administradores do sistema a capacidade de configurar as regras de filtragem de pacotes IP implementadas pelo módulo de filtro líquido do kernel.” Os iptables atuam como um firewall usando regras de filtragem de pacotes com base em vários critérios, como endereço IP, porta e protocolos.

Este guia discutirá como configurar e usar as regras iptables em um sistema Ubuntu para proteger sua rede. Seja você um usuário iniciante no Linux ou um administrador de sistema experiente, a partir deste guia e de uma maneira ou de outra, você aprenderá algo útil sobre iptables.

Os iptables vêm pré-instalados nas distribuições do Ubuntu e na maioria. O Ubuntu também empacota o Firewall GUFW, uma alternativa gráfica que você pode usar para trabalhar com iptables.

OBSERVAÇÃO: Para usar e configurar iptables, você precisará de privilégios sudoes em seu sistema. Você pode aprender mais sobre sudo com o seguinte tutorial.

Agora que você sabe o que é iptables, vamos mergulhar bem!

Como usar iptables para gerenciar o tráfego IPv4?

Para usar iptables para rede e gerenciamento de tráfego IPv4, você precisa entender o seguinte:

O comando iptables

Iptables oferece uma seleção de opções que permitem personalizar e ajustar suas regras iptables. Vamos discutir alguns desses parâmetros e ver o que eles fazem.

OBSERVAÇÃO: Você pode configurar um conjunto de regras que gerenciam um subconjunto específico, conhecido como correntes iptables.

Parâmetros iptables

Antes de começarmos a criar e configurar as regras iptables, vamos primeiro entender o básico dos iptables, como sintaxe geral e argumentos padrão.

Considere o comando abaixo:

sudo iptables -i entrada -s 192.168.0.24 -J Drop

O comando acima diz aos iptables para criar uma regra na cadeia. A regra cai todos os pacotes do endereço IP 192.168.0.24.

Vamos examinar o comando, linha por linha, para entender melhor.

  • O primeiro comando iptables chama o utilitário de linha de comando iptables.
  • Em seguida é -i argumento usado para inserção. O argumento de inserção adiciona uma regra no início da cadeia iptables e, portanto, recebe uma prioridade mais alta. Para adicionar uma regra em um número específico na cadeia, use o argumento -i seguido pelo número em que a regra deve ser atribuída.
  • O argumento -s ajuda a especificar a fonte. Portanto, usamos o argumento -s seguido pelo endereço IP.
  • O parâmetro -j com iptables especifica o salto para um alvo específico. Esta opção define a ação que os iptables devem executar assim que houver um pacote correspondente. O iptables oferece quatro alvos principais por padrão, incluem: aceitar, soltar, registrar e rejeitar.

Iptables oferece uma seleção de parâmetros que você pode usar para configurar várias regras. Os vários parâmetros que você pode usar para configurar as regras iptables incluem:

Parâmetro de regra iptables Descrição
-S -SOURCE Especifique a fonte, que pode ser um endereço, nome de host ou nome de rede.
-P -protocolo Especifica o protocolo de conexão; Por exemplo, TCP, UDP, etc.
-Destinação D Especifica o destino, que pode ser um endereço, nome de rede ou nome de host.
-J -Jump Define a ação iptables deve realizar depois de encontrar um pacote.
-o -out -interface Define a interface através da qual o iptable envia o pacote.
-Eu -in -interface Define a interface usada para estabelecer pacotes de rede.
-Counters de conjunto C Permite que o administrador defina os contadores de byte e pacotes para uma regra especificada.
-Cadeia g -Goto O parâmetro especifica que o processamento deve continuar na cadeia do conjunto de usuários após o retorno.
-F -Fragment Diz aos iptables para aplicar a regra apenas ao segundo e seguindo fragmentos dos pacotes fragmentados.

Opções iptables

O comando iptables suporta uma ampla gama de opções. Alguns comuns incluem:

Opção Descrição
-A -Append Adiciona uma regra ao final de uma cadeia especificada
-D -Delete Remove uma regra da cadeia especificada
-F -flush Remove todas as regras, uma de cada vez
-L -List Mostra todas as regras na cadeia especificada
-I -Insert Insira uma regra na cadeia especificada (passada como um número, quando não há número especificado; a regra é adicionada no topo)
-C -check Consultas para uma correspondência de regra; requisito em uma regra especificada
-v -verbose Exibe mais detalhes quando usado com o parâmetro -l
-N -NOVA CHANAIN Adiciona uma nova cadeia definida pelo usuário
-Chain de xelete x Remove uma cadeia específica definida pelo usuário

Tabelas iptables

O kernel Linux possui mesas padrão que abrigam um conjunto de regras relacionadas. Essas tabelas padrão têm um conjunto de cadeias padrão, mas os usuários podem personalizar as regras adicionando regras definidas pelo usuário.

OBSERVAÇÃO: As tabelas padrão dependerão fortemente da sua configuração do kernel e dos módulos instalados.

Aqui estão as tabelas iptables padrão:

1: as tabelas de filtro

A tabela de filtro é uma tabela padrão que contém cadeias usadas para filtragem de pacotes de rede. Algumas das cadeias padrão desta tabela incluem:

Corrente Descrição
Entrada Iptables use esta cadeia para qualquer pacotes de entrada para o sistema, eu.e., pacotes indo para soquetes de rede locais.
Saída Iptables usam a cadeia de saída para pacotes gerados localmente, eu.e., pacotes saindo do sistema.
Avançar Esta cadeia é o que os iptables usam para pacotes roteados ou encaminhados através do sistema.

2: As mesas de Nat

A tabela de endereços NAT ou de rede é um dispositivo de roteamento usado para modificar a fonte e os adjuntos IP de destino em um pacote de rede. O uso principal da tabela NAT está conectando duas redes em um intervalo de endereços privado com a rede pública.

O NAT foi desenvolvido para apoiar o mascaramento de endereços IP reais, permitindo que o endereço IP privado varia de alcançar a rede externa. Isso ajuda a proteger os detalhes sobre as redes internas de serem reveladas em redes públicas.

A tabela NAT é empregada quando um pacote inicia uma nova conexão.

Os iptables têm uma tabela padrão para o endereçamento do NAT. Esta tabela tem três cadeias principais:

Corrente Descrição
Pré -rotulando Permite a modificação das informações de pacotes antes de chegar na corrente de entrada usada para pacotes de entrada
SAÍDA Reservado para pacotes criados localmente, eu.e., Antes que o roteamento de rede ocorra
Pós -trouting Permite a modificação de pacotes de saída- pacotes deixando a cadeia de saída

O diagrama abaixo mostra uma visão geral de alto nível deste processo.

Use o comando abaixo para ver suas tabelas de roteamento NAT.

iptables -t nat -n -v -l

3: As mesas de mangle

A tabela de mangle é usada principalmente para modificação especial de pacotes. Em termos simples, é usado para modificar os cabeçalhos IP de um pacote de rede. A modificação dos pacotes pode incluir a alteração de um valor TTL do pacote, a alteração do salto de rede válido para um pacote, etc.

A tabela contém as seguintes cadeias padrão:

Corrente Descrição
Pré -rotulando Reservado para pacotes de entrada
Pós -trouting Usado para pacotes de saída
ENTRADA Usado para pacotes que entram diretamente no servidor
SAÍDA Usado para pacotes locais
Avançar Reservado para pacotes roteados através do sistema

4: as mesas cruas

O principal objetivo da mesa crua é configurar exceções para pacotes não pretendem ser tratados pelo sistema de rastreamento. A tabela bruta define uma marca NOTRACK em pacotes, provocando o recurso Conntrack para ignorar o pacote.

Conntrack é um recurso de rede de kernel Linux que permite ao kernel Linux rastrear todas as conexões de rede, permitindo que o kernel identifique pacotes que compõem um fluxo de rede.

A mesa crua tem duas correntes principais:

Corrente Descrição
Pré -rotulando Reservado para pacotes recebidos por interfaces de rede
SAÍDA Reservado para pacotes iniciados por processos locais

5: A tabela de segurança

O uso primário desta tabela é definir o aprimoramento de segurança interna do mecanismo de segurança Linux (Selinux) que marca os pacotes. A marca de segurança pode ser aplicada por conexão ou pacote.

É usado para regras de controle de acesso obrigatório e é a segunda tabela acessada após a tabela de filtro. Oferece as seguintes cadeias padrão:

Corrente Descrição
ENTRADA Reservado para pacotes de entrada no sistema
SAÍDA Usado para pacotes criados localmente
AVANÇAR Usado para pacotes roteados através do sistema

Tendo analisado os iptables padrão, vamos dar um passo adiante e discutir como trabalhar com regras iptables.

Como trabalhar com regras iptables?

As regras iptables são aplicadas em ordem crescente. Isso significa que a primeira regra em um conjunto específica é aplicada primeiro, seguida pelo segundo, depois terceiro e assim por diante, até o último.

Devido a essa função, os iptables impedem você de adicionar regras em um conjunto usando o parâmetro -a; você deve usar o -i, seguido pelo número ou esvaziando -o para adicionar ao topo da lista.

Exibindo iptables

Para ver seus iptables, use o comando iptables -l -v para ipv4 e ip6tables -l -v para ipv6.

Inserção de regras

Para inserir regras em um conjunto, você deve posicioná -las na ordem exata, respeitando as regras usadas pela mesma cadeia. Você pode visualizar a lista de suas regras iptables com o comando, conforme discutido acima:

sudo iptables -l -v

Por exemplo, para inserir uma regra que permite conexões de entrada na porta 9001 sobre o TCP, precisamos especificar o número da regra para a cadeia de entrada aderindo às regras de tráfego para a web.

sudo iptables -i entrada 1 -p tcp - -dport 9001 -m State -Estado novo -j aceita

Depois de visualizar os iptables atuais, você deve ver a nova regra no conjunto.

sudo iptables -l -v

Substituindo regras

A funcionalidade de substituição funciona de maneira semelhante à inserção, no entanto, usa o comando iptables -r. Por exemplo, para modificar a regra acima e definir a porta 9001 para negar, nós:

sudo iptables -r entrada 1 -p tcp - -dport 9001 -m State -estado novo -j rejeitar

Excluir uma regra

Para excluir uma regra, passamos o número da regra. Por exemplo, para excluir a regra acima, podemos especificar como:

sudo iptables -d entrada 1

Na maioria dos distritos Linux, os iptables estão vazios para IPv4 e IPv6. Portanto, se você não adicionou nenhuma nova regra, obterá uma saída semelhante à mostrada abaixo. Isso é arriscado, porque significa que o sistema está permitindo todo o tráfego de entrada, saída e rotação.

Vamos abordar como configurar iptables:

Como configurar iptables?

Existem inúmeras maneiras de configurar regras iptables. Esta seção usa exemplos para mostrar como definir regras usando endereços IP e portas.

Bloqueando e permitindo tráfego por portas

Você pode usar uma porta específica para bloquear ou permitir todo o tráfego em uma interface de rede. Considere os seguintes exemplos:

sudo iptables -a input -j aceit -p tcp -destinação -port 1001 -i wlan0

Os comandos acima permitem o tráfego na porta 1001 TCP na interface WLAN0.

sudo iptables -a input -j drop -p tcp -destinação -port 1001 -i wlan0

Este comando faz o oposto do comando acima, pois bloqueia todo o tráfego na porta 1001 na WLAN0.

Aqui está uma inspeção estreita do comando:

  • O primeiro argumento (-a) adiciona uma nova regra no final da cadeia de tabela.
  • O argumento de entrada adiciona a regra especificada à tabela.
  • Drop argumentos definem a ação a ser executada como aceita e solta, respectivamente. Isso significa que, uma vez que um pacote seja correspondido, ele é descartado.
  • -P Especifica o protocolo como o TCP e permite que o tráfego em outros protocolos passe.
  • -Destination-Port define a regra para aceitar ou soltar todo o tráfego destinado à porta 1001.
  • -Eu digo aos iptables para aplicar a regra ao tráfego que vem na interface WLAN0.

OBSERVAÇÃO: Iptables não entendem aliases da interface de rede. Assim, em um sistema com mais de uma interface virtual, você precisará definir o endereço de destino manualmente e explicitamente.

Por exemplo:

sudo iptables -a input -j drop -p tcp -destinação -port 1001 -i wlan0 -d 192.168.0.24

Endereços IP da lista de permissões e lista negra

Você pode criar regras de firewall usando iptables. Um exemplo é interromper todo o tráfego e permitir apenas o tráfego de rede de endereços IP explícitos.

Exemplo:

iptables -um estado de entrada -m -Estado estabelecido, relacionado -j aceita
iptables -a input -i lo -m comentário -comment "permitir conexões de loopback" -j aceitar
iptables -a input -p ICMP -M Comentário -Comentário "Permita que o ping funcione como esperado" -J

ACEITAR

iptables -uma entrada -s 192.168.0.1/24 -J Aceitar
iptables -uma entrada -s 192.168.0.0 -J Aceitar
IPTABLES -P DROP
iptables -p forward grow

A primeira linha define uma regra para permitir todos os endereços IP de origem nos 192.168.0.1/24 Subnet. Você também pode usar endereços IP individuais ou individuais. No comando a seguir, definimos a regra para permitir todo o tráfego conectado às conexões existentes. Nos comandos finais, estabelecemos uma política de entrada e encaminhamento para soltar tudo.

Usando iptables no ipv6

O comando iptables funciona apenas no ipv4. Para usar iptables no ipv6, você deve usar o comando ip6tables. IP6Tables usa mesas cruas, filtro, de segurança e mangle. A sintaxe geral para ip6tables é semelhante aos iptables e também suporta opções de correspondência iptables, como anexar, excluir, etc.

Considere usar as páginas manuais do IP6Tables para obter mais informações.

Exemplo de conjunto de regras iptables para segurança de rede

Criar regras de firewall adequadas dependerá principalmente do serviço em execução em um sistema e das portas em uso. No entanto, aqui estão algumas regras básicas de configuração de rede que você pode usar para proteger seu sistema:

1: Permitir tráfego de interface de loopback e rejeitar todo o loopback vindo de outras interfaces

iptables -a input -i lo -j aceita (você também pode usar ip6tables)
iptables -uma entrada ! -eu lo -s 127.0.0.0 -J Rejeit

2: negar todos os pedidos de ping

iptables -a input -p ICMP -M State -State New --icmp -type 8 -j Rejeit

3: Permitir conexões SSH

iptables -a input -p tcp - -dport 22 -m State -Estado novo -j aceita

Estes são comandos de exemplo que você pode usar para proteger seu sistema. No entanto, a configuração dependerá fortemente do que ou de quem você deseja acessar vários serviços.

CUIDADO: Se você preferir desativar completamente o IPv6, certifique -se de descomentar a linha, pois isso diminuirá o processo de atualização:

Precedência :: ffff: 0: 0/96 100 encontrado em/etc/gai.conf .

Isso porque o gerente de pacotes apt resolve o domínio espelhado no IPv6 devido à atualização do APT-Get.

Como implantar regras iptables?

Para implantar seus iptables no Ubuntu ou em outros sistemas baseados em Debian, comece criando dois arquivos, IP4 e IP6, para seus respectivos endereços IP.

Em ambos os arquivos, adicione as regras que você deseja aplicar nas regras correspondentes de arquivos-ipv4 ao arquivo IP4 e regras IPv6 ao arquivo IP6.

Em seguida, precisamos importar as regras usando o comando:

Sudo iptables-Restore < /tmp/ip4 (replace filename for IPv6)

Em seguida, você pode verificar se as regras foram aplicadas usando o comando:

sudo iptables -l -v

Um guia rápido e iptables-Persistent

O Ubuntu e as distribuições comuns baseadas no Debian vem com um pacote iptables-Persistent que permite que você aplique suas regras de firewall facilmente ao reiniciar. O pacote fornece arquivos que você pode usar para definir regras para IPv4 ou IPv6 e pode ser aplicado automaticamente após a inicialização.

Você também pode usar regras de firewall usando UFW ou GUFW. Considere o seguinte tutorial para aprender a usar o UFW.

Como instalar iptables-persistent?

Certifique-se de que você possui Iptables-Persistent instalado em seu sistema. Use DPKG para verificar se você tiver o pacote instalado.

Caso contrário, use o seguinte comando:

sudo apt-get install iptables-persistent

Você será solicitado duas vezes a salvar suas regras atuais de IPv4 e IPv6. Clique em Sim para salvar as duas regras.

Clique em Sim para salvar IPv6.

Depois que a instalação estiver concluída, verifique se você tem o subdiretório iptables, como mostrado na imagem abaixo.

Agora você pode usar as regras.v4 e regras.v6 para adicionar regras iptables, e elas serão aplicadas automaticamente por iptables-persistent. Os arquivos são arquivos de texto simples que você pode editar facilmente usando qualquer editor de texto de sua escolha.

Conclusão

Neste tutorial, cobrimos o básico dos iptables. Começando com o trabalho com iptables, comandos básicos, tabelas iptables padrão e parâmetros.

Pelo que aprendeu, você deve estar em posição de usar iptables para criar regras de firewall que ajudem a proteger seu sistema.