Iptables é um firewall da linha de comando que filtra pacotes de acordo com as regras definidas. Com iptables, os usuários podem aceitar, recusar ou seguir conexões; É incrivelmente versátil e amplamente utilizado, apesar de ter sido substituído por nftables.
Depois de ler este tutorial, você entenderá as políticas iptables e definirá regras iptables para proteger sua rede doméstica.
Observação: O comando sudo foi adicionado para leitores que precisam copiar as regras mencionadas neste tutorial iptables.
Glossário iptables:
ALVO: Ao usar iptables, um alvo é uma ação que você deseja que os iptables apliquem quando um pacote corresponde a uma regra.
CORRENTE: Uma cadeia é uma lista de regras; As cadeias embutidas disponíveis são: Entrada, saída, avanço, pré -eletência e pós -pós -pós.
MESA: Tabelas são recursos iptables para cada finalidade. Por exemplo, há uma tabela para roteamento de tarefas e outra tabela para filtrar tarefas; Cada tabela contém cadeias de regras.
As tabelas disponíveis são filtro, nat, cru, segurança e mangle. Cada tabela contém cadeias embutidas (regra). A lista a seguir mostra quais cadeias incluem cada tabela:
FILTRO | ENTRADA | SAÍDA | AVANÇAR | ||
---|---|---|---|---|---|
Nat | Pré -rotulando | Pós -trouting | SAÍDA | ||
CRU | Pré -rotulando | SAÍDA | |||
Mangle | Pré -rotulando | Pós -trouting | SAÍDA | ENTRADA | AVANÇAR |
SEGURANÇA | ENTRADA | SAÍDA | AVANÇAR |
Dependendo da ação que você deseja que os iptables faça, você precisa especificar uma tabela usando a opção -t seguida pelo nome da tabela. Neste tutorial, a opção -t não é usada. Este tutorial se concentra em fins de filtragem usando a tabela de filtro aplicada por padrão quando a opção -t não é passada. Ao ler este tutorial, você aprenderá alguns dos conceitos mencionados acima.
Como instalar:
Para instalar os iptables no Debian e suas distribuições Linux baseadas executadas:
sudo apt install iptables -y
Antes de instalar iptables em distribuições Linux baseadas em redhat, você precisa desativar o firewalld executando:
sudo systemctl stop firewalld
sudo systemctl desativar o firewalld
SUDO Systemctl Mask -Now Firewalld
Em seguida, instale os iptables executando:
sudo yum install iptables services
sudo systemctl start iptables
sudo systemctl iniciar ip6tables
sudo systemctl atability iptables
sudo systemctl Ativar ip6tables
sudo systemctl iniciar ip6tables
Introdução com iptables:
Antes de iniciar, verifique as regras anteriores, instruindo os iptables a listar políticas e regras existentes usando o parâmetro -l (-list).
sudo iptables -l
A saída acima mostra 3 linhas: Entrada de cadeia, cadeia para frente e saída de corrente. Onde ENTRADA refere -se a políticas sobre o tráfego de entrada, SAÍDA refere -se a políticas aplicadas ao tráfego de saída e AVANÇAR refere -se a políticas de roteamento.
A saída também mostra que não há regras definidas e todas as políticas definidas são aceitas.
Existem 3 tipos de políticas: Aceitar, rejeitar e soltar.
A política ACEITAR permite conexões; a política REJEITAR recusa conexões retornando um erro; a política DERRUBAR recusa conexões sem produzir erros.
Ao usar DERRUBAR, UDP Os pacotes são descartados e o comportamento será o mesmo que se conectar a uma porta sem serviço. TCP pacotes retornarão um ACK/RST, que é a mesma resposta que uma porta aberta, sem serviço, responderá com. Ao usar REJEITAR, Um pacote ICMP retorna o destino-ingênuo ao host de origem.
Quando você lida com iptables, precisa primeiro definir as três políticas para cada cadeia; Depois disso, você pode adicionar exceções e especificações. Adicionar políticas se parece com o seguinte:
sudo iptables -p entrada
SUDO iptables -p Output
sudo iptables -p forward
Políticas permissivas e restritivas iptáveis:
Você pode aplicar iptables com uma política permissiva, aceitando todas as conexões recebidas, exceto por elas que você solta especificamente. Nesse caso, toda conexão é permitida, a menos que você defina uma regra para recusá -la especificamente.
Pelo contrário, políticas restritivas recusam todas as conexões, exceto por elas que você aceita especificamente. Nesse caso, toda conexão é recusada, a menos que você defina uma regra para aceitá -la.
Aplicando uma política restritiva com iptables:
O exemplo a seguir mostra como aplicar uma política restritiva com iptables, retirando todo o tráfego de entrada, exceto pelo.
Bloqueando o tráfego recebido.
IMPORTANTE: A aplicação das três regras a seguir pode deixá -lo sem uma conexão com a Internet. Usando as regras mencionadas em “iptables anexando regras e estados iptables”, você adiciona as exceções necessárias para restaurar seu acesso à Internet. Você pode executar consistentemente sudo iptables -f para lavar regras.
Você pode bloquear todo o tráfego recebido, permitindo que apenas o tráfego extrovertido navegue na web e para aplicativos que você precisa.
Sudo iptables -p entrada de entrada
sudo iptables -p saídas aceitam
sudo iptables -p forward grow
Onde:
-P = política
Sudo iptables -p entrada de entrada: Instrua os iptables a recusar todo o tráfego de entrada sem responder à fonte.
sudo iptables -p saídas aceitam: Define uma política de aceitação para o tráfego de saída.
sudo iptables -p forward grow: Instrui iptables a não executar tarefas de roteamento soltando todos os pacotes destinados a um host diferente (tentando passar pelo dispositivo Firewalled) sem resposta.
O exemplo acima permite navegar na web e nas conexões iniciadas pelo dispositivo local (-P Saída aceita) mas impedirá as conexões iniciadas por outro host (-P queda de entrada) Como o SSH tenta acessar seu dispositivo não retornar mensagens de erro.
Quando você habilita iptables com uma política restritiva, como no exemplo anterior, você precisa anexar regras para ajustar sua configuração. Por exemplo, se você manter a configuração mencionada acima sem adicionar uma exceção razoável para a interface LOOPBACK (LO), alguns aplicativos podem não funcionar corretamente. Você também precisará permitir que o tráfego de entrada pertencente ou relacionado a uma conexão iniciado pelo seu dispositivo.
Iptables anexando regras e estados iptables
É essencial entender que iptables aplica regras por ordem. Quando você define uma regra após uma regra anterior, a segunda regra reescreverá a última se um pacote corresponder à mesma regra.
Eu gosto do exemplo anterior; Você bloqueou todo o tráfego recebido, precisa anexar exceções à interface de loopback; Isso pode ser alcançado adicionando o parâmetro -a (apêndice).
sudo iptables -a input -m Conntrack -ctstate estabelecido, relacionado -j aceita
sudo iptables -a saída -m conentrack -ctstate estabelecido -j aceita
O módulo (-m) Conntrack -CtState Estabelecido, relacionado instrui iptables a confirmar se o estado de conexão é Estabelecido ou relacionado a uma conexão existente antes de aplicar a política de regra definida.
Existem 4 estados possíveis que os iptables podem verificar:
Iptables estate novo: O pacote ou tráfego que você permite ou bloqueia tenta iniciar uma nova conexão.
Estado do estado iptables estabelecidos: O pacote ou tráfego que você permite ou bloqueia faz parte de uma conexão estabelecida.
IPTILLES RELACIONADOS: O pacote ou tráfego inicia uma nova conexão, mas está relacionado a uma conexão existente.
IPTILLES ESTADOS INVALIDOS: O pacote ou tráfego é desconhecido sem o estado.
A primeira linha do exemplo acima instrui os iptables a aceitar pacotes de entrada do tráfego proveniente ou relacionado às conexões iniciadas pelo seu dispositivo. A segunda linha instrui os iptables a aceitar apenas o tráfego de saída de conexões já estabelecidas.
Os iptables apendem a aceitar o tráfego de loopback e definir interfaces:
A interface de loopback é usada por programas que precisam interagir com a localhost. Se você não permitir o tráfego de loopback, alguns aplicativos podem não funcionar.
O comando a seguir permite conexões de loopback:
sudo iptables -a input -i lo -j aceitar
sudo iptables -a saída -o lo -j aceitar
Onde -i e -o são usados para especificar o dispositivo de rede para o tráfego de entrada (-i) e o tráfego de saída (-O).
Aplicando uma política permissiva com iptables:
Você também pode definir uma política permissiva, permitindo todo o tráfego, exceto para o caído especificado ou rejeitado. Você pode ativar tudo, exceto um intervalo de IP ou IP específico, ou pode recusar pacotes com base em seus cabeçalhos, entre mais possibilidades.
O exemplo a seguir mostra como aplicar uma política permissiva, permitindo todo o tráfego, exceto por um intervalo de IP bloqueado para o serviço SSH.
sudo iptables -p entrada aceita
sudo iptables -p saídas aceitam
sudo iptables -p forward grow
sudo iptables -a input -p tcp - -dport 22 -m iPrange - -src -range 192.168.1.100-192.168.1.110 -j rejeitar
O exemplo acima aplica uma política permissiva, mas bloqueia o acesso SSH a todos os IPs pertencentes ao intervalo 192.168.1.100 e 192.168.1.110.
Onde -p especifica o protocolo, -dport (ou -Destination -port) a porta de destino (22, ssh) e o módulo iprange com o argumento -src -range (intervalo de origem) permite definir o intervalo de IP. A opção -j (-Jump) instrui os iptables o que fazer com o pacote; Nesse caso, representamos rejeitar.
Bloqueando portas com iptables
O exemplo a seguir mostra como bloquear uma porta específica para todas as conexões, a porta SSH.
sudo iptables -a input -p tcp -destinação -port 22 -j gota
Salvando mudanças iptables
As regras iptables não são persistentes; Após a reinicialização, as regras não serão restauradas. Para tornar suas regras persistentes, execute os seguintes comandos onde a primeira linha salva as regras no arquivo /etc /iptables.acima.regras, e a segunda linha é criar o arquivo para iptables começarem após a reinicialização.
sudo iptables-save> /etc /iptables.acima.regras
nano/etc/rede/if-pre-up.d/iptables
Adicione o seguinte ao arquivo e feche as alterações de economia (Ctrl+X).
#!/bin/sh
/Sbin/iptables-Restore < /etc/iptables.up.rules
Por fim, dê as permissões de execução do arquivo em execução:
chmod +x/etc/rede/if-pre-up.d/iptables
Flushing ou remoção de regras iptables:
Você pode remover todas as suas regras iptables executando o seguinte comando:
sudo iptables -f
Para remover uma cadeia específica como entrada, você pode executar:
sudo iptables -f
Conclusão:
Os iptables estão entre os firewalls mais sofisticados e flexíveis do mercado. Apesar de ter sido substituído, ele permanece como um dos softwares defensivos e de roteamento mais espalhados.
Sua implementação pode ser aprendida rapidamente por novos usuários do Linux com conhecimento básico de TCP/IP. Depois que os usuários entendem a sintaxe, a definição de regras se torna uma tarefa fácil.
Existem muito mais módulos e opções adicionais que não foram cobertos por este tutorial introdutivo. Você pode ver mais exemplos iptables em iptables para iniciantes.
Espero que este tutorial iptables tenha sido útil. Continue seguindo o Linux Dint para mais dicas e tutoriais do Linux.