Como configurar um firewall iptables para permitir o acesso remoto aos serviços no Linux - Parte 8

Como configurar um firewall iptables para permitir o acesso remoto aos serviços no Linux - Parte 8
Engenheiro Certificado da Fundação Linux - Parte 8

Apresentando o Programa de Certificação da Fundação Linux

Você se lembrará da Parte 1 - sobre Iptables disso LFCE (Engenheiro Certificado da Fundação Linux ) Série que demos uma descrição básica do que é um firewall: um mecanismo para gerenciar pacotes entrando e deixando a rede. Por "gerenciar", realmente queremos dizer:

  1. Para permitir ou impedir que determinados pacotes entrem ou saem de nossa rede.
  2. Para encaminhar outros pacotes de um ponto da rede para outro.

com base em critérios predeterminados.

Neste artigo, discutiremos como implementar a filtragem básica de pacotes e como configurar o firewall com iptables, um front -end para o netfilter, que é um módulo de kernel nativo usado para o firewalling.

Observe que o firewalling é um assunto vasto e este artigo não se destina a ser um guia abrangente para entender tudo o que há para saber sobre isso, mas como ponto de partida para um estudo mais profundo deste tópico. No entanto, revisitaremos o assunto em Parte 10 Desta série, quando exploramos alguns casos de uso específicos de um firewall no Linux.

Você pode pensar em um firewall como um aeroporto internacional onde os aviões de passageiros vêm e vão quase 24/7. Com base em várias condições, como a validade do passaporte de uma pessoa ou seu país de origem (para citar alguns exemplos), ele ou ela pode ou não ter permissão para entrar ou deixar um determinado país.

Ao mesmo tempo, os oficiais do aeroporto podem instruir as pessoas a se mudarem de um local do aeroporto para outro, se necessário, por exemplo, quando precisam passar por serviços aduaneiros.

Podemos achar a analogia do aeroporto útil durante o restante deste tutorial. Lembre -se das seguintes relações à medida que prosseguimos:

  1. Pessoas = pacotes
  2. Firewall = aeroporto
  3. País #1 = Rede #1
  4. País #2 = Rede #2
  5. Regulamentos do aeroporto aplicados por oficiais = regras de firewall

Iptables - o básico

No nível baixo, é o próprio kernel que “decide”O que fazer com pacotes com base em regras agrupadas em correntes, ou frases. Essas cadeias definem quais ações devem ser tomadas quando um pacote corresponde aos critérios especificados por eles.

A primeira ação tomada pelos iptables consistirá em decidir o que fazer com um pacote:

  1. Aceite -o (deixe -o entrar em nossa rede)?
  2. Rejeite -o (impede que ele acesse nossa rede)?
  3. Encaminhá -lo (para outra corrente)?

Apenas no caso de você estar se perguntando por que essa ferramenta é chamada iptables, é porque essas cadeias estão organizadas em tabelas, com o Tabela de filtro sendo o mais bem conhecido e o usado para implementar a filtragem de pacotes com suas três cadeias padrão:

1. O ENTRADA Os pacotes de alças da cadeia entram na rede, destinadas a programas locais.

2. O SAÍDA A cadeia é usada para analisar pacotes originados na rede local, que devem ser enviados para o exterior.

3. O AVANÇAR Corrente processa os pacotes que devem ser encaminhados para outro destino (como no caso de um roteador).

Para cada uma dessas cadeias, há uma política padrão, que determina o que deve ser feito por padrão quando os pacotes não correspondem a nenhuma das regras da cadeia. Você pode visualizar as regras criadas para cada cadeia e a política padrão executando o seguinte comando:

# iptables -l 

As políticas disponíveis são as seguintes:

  1. ACEITAR → Deixe o pacote através. Qualquer pacote que não corresponda às regras da cadeia é permitido na rede.
  2. DERRUBAR → solta o pacote silenciosamente. Qualquer pacote que não corresponda às regras da cadeia é impedido de entrar na rede.
  3. REJEITAR → rejeita o pacote e retorna uma mensagem informativa. Este em particular não funciona como uma política padrão. Em vez disso, destina -se a complementar as regras de filtragem de pacotes.
Políticas do Linux iptables

Quando se trata de decidir qual política você implementará, você precisa considerar o Prós e contras de cada abordagem, conforme explicado acima-observe que não existe uma solução única.

Adicionando regras

Para adicionar uma regra ao firewall, invocar o comando iptables da seguinte forma:

# iptables -a Chain_name Critérios -j alvo 

onde,

  1. -A significa anexar (anexar a regra atual ao final da cadeia).
  2. Chain_name é entrada, saída ou avanço.
  3. alvo é a ação, ou política, para aplicar neste caso (aceitar, rejeitar ou soltar).
  4. critério é o conjunto de condições contra as quais os pacotes devem ser examinados. É composto por pelo menos um (provavelmente mais) das seguintes bandeiras. As opções dentro dos colchetes, separadas por uma barra vertical, são equivalentes entre si. O resto representa interruptores opcionais:
[--protocolo | -p] protocolo: Especifica o protocolo envolvido em uma regra. [-Source-Port | -Sport] Port: [Port]: Define a porta (ou intervalo de portas) onde o pacote se originou. [--destinação-port | -dport] Port: [Port]: Define a porta (ou intervalo de portas) para a qual o pacote é destinado. [-Source | -s] endereço [/máscara]: representa o endereço de origem ou rede/máscara. [--Destinação | -d] endereço [/máscara]: representa o endereço de destino ou rede/máscara. [-Estado] estado (precedido por -m Estado): Gerencie pacotes, dependendo se eles fazem parte de uma conexão de estado, onde o estado pode ser novo, estabelecido, relacionado ou inválido. [--interface | -i] interface: Especifica a interface de entrada do pacote. [--entrelaça | -o] interface: a interface de saída. [--Jump | -j] alvo: O que fazer quando o pacote corresponde à regra. 

Nosso ambiente de teste

Vamos colar tudo isso em 3 exemplos clássicos usando o seguinte ambiente de teste para os dois primeiros:

Firewall: Debian Wheezy 7.5 nome do host: dev2.GABRIELCANCANEPA.Endereço IP com: 192.168.0.15 
Fonte: CentOS 7 HostName: Dev1.GABRIELCANCANEPA.Endereço IP com: 192.168.0.17 

E isso para o último exemplo

NFSV4 Server e Firewall: Debian Wheezy 7.5 Nome do host: Endereço IP do Debian: 192.168.0.10 
Fonte: Debian Wheezy 7.5 nome do host: dev2.GABRIELCANCANEPA.Endereço IP com: 192.168.0.15 
Exemplo 1: Analisando a diferença entre as políticas de queda e rejeição

Vamos definir um DERRUBAR Política primeiro para inserir pings para o nosso firewall. Isto é, os pacotes ICMP serão descartados em silêncio.

# ping -c 3 192.168.0.15 
# iptables -a input --protocol ICMP -na interface eth0 -j gota 
Solicite o pedido de ping ICMP

Antes de prosseguir com o REJEITAR Parte, liberaremos todas as regras da cadeia de entrada para garantir que nossos pacotes sejam testados por esta nova regra:

# iptables -f entrada # iptables -a input --protocol ICMP -In -interface eth0 -j rejeitar 
# ping -c 3 192.168.0.15 
Rejeitar a solicitação de ping ICMP no firewall
Exemplo 2: Desativando / repensando os logins SSH de Dev2 para Dev1

Estaremos lidando com o SAÍDA cadeia enquanto lidamos com o tráfego de saída:

# iptables -a output --protocol tcp-destinação-port 22-fora da interface eth0-jump rejeitar 
Bloqueie o login SSH no firewall
Exemplo 3: Permitir / impedir os clientes da NFS (de 192.168.0.0/24) para o Monte NFS4 ações

Execute os seguintes comandos no NFSV4 Server / Firewall para fechar as portas 2049 e 111 para todo tipo de tráfego:

# iptables -f # iptables -a input -i eth0 -s 0/0 -p tcp - -dport 2049 -j rejeitar # iptables -a input -i eth0 -s 0/0 -p tcp - -dport 111 -j rejeitar 
Bloco portas NFS no firewall

Agora vamos abrir essas portas e ver o que acontece.

# iptables -a input -i eth0 -s 0/0 -p tcp - -dport 111 -j Aceitar # iptables -a input -i eth0 -s 0/0 -p tcp - -dport 2049 -j aceitar 
Abra as portas NFS no firewall

Como você pode ver, conseguimos montar o compartilhamento NFSV4 depois de abrir o tráfego.

Inserção, anexando e excluindo regras

Nos exemplos anteriores, mostramos como anexar regras ao ENTRADA e SAÍDA correntes. Se desejarmos inseri -los em uma posição predefinida, devemos usar o -EU (em maiúsculas I) mudar em vez disso.

Você precisa se lembrar de que as regras serão avaliadas uma após a outra e que a avaliação para (ou salta) quando um DERRUBAR ou ACEITAR A política é comparada. Por esse motivo, você pode se encontrar na necessidade de mover as regras para cima ou para baixo na lista de corrente conforme necessário.

Usaremos um exemplo trivial para demonstrar isso:

Verifique as regras do firewall iptables

Vamos colocar a seguinte regra,

# iptables -i entrada 2 -p tcp - -dport 80 -j aceita 

na posição 2) na cadeia de entrada (movendo assim o número 2 anterior como nº 3)

Iptables aceitam regra

Usando a configuração acima, o tráfego será verificado para ver se é direcionado para a porta 80 Antes de verificar a porta 2049.

Como alternativa, você pode excluir uma regra e alterar o alvo das regras restantes para REJEITAR (usando o -R trocar):

# iptables -d entrada 1 # iptables -nl -v --line -numbers # iptables -r entrada 2 -i eth0 -s 0/0 -p tcp - -dport 2049 -j rejeitar # iptables -r entrada 1 -p tcp - -Dport 80 -j rejeitar 
Iptables soltar regra

Por último, mas não menos importante, você precisará lembrar que, para que as regras do firewall sejam persistentes, precisará salvá -las em um arquivo e depois restaurá -las automaticamente após a inicialização (usando o método preferido de sua escolha ou aquele que está disponível para sua distribuição).

Salvando as regras do firewall:

# iptables-save>/etc/iptables/regras.v4 [no ubuntu] # iptables-save> /etc /sysconfig /iptables [no CentOS /openSuse] 

Restaurando regras:

# iptables-Restore < /etc/iptables/rules.v4 [On Ubuntu] # iptables-restore < /etc/sysconfig/iptables [On CentOS / OpenSUSE] 

Aqui podemos ver um procedimento semelhante (salvando e restaurando as regras do firewall manualmente) usando um arquivo dummy chamado iptables.jogar fora em vez do padrão, como mostrado acima.

# iptables-save> iptables.jogar fora 
Dump Linux iptables

Para tornar essas mudanças persistentes entre as botas:

Ubuntu: Instale o iptables-persistent pacote, que carregará as regras salvas no /etc/iptables/regras.v4 arquivo.

# instalação apt-get iptables-persistent 

CENTOS: Adicione as 2 linhas a seguir para /etc/sysconfig/iptables-config arquivo.

Iptables_save_on_stop = "Sim" iptables_save_on_restart = "Sim" 

OpenSuse: Lista portas permitidas, protocolos, endereços e assim por diante (separados por vírgulas) em /etc/sysconfig/susefirewall2.

Para obter mais informações, consulte o próprio arquivo, que é fortemente comentado.

Conclusão

Os exemplos fornecidos neste artigo, sem cobrir todos os sinos e assobios de iptables, servem ao objetivo de ilustrar como ativar e desativar o tráfego de entrada ou saída do tráfego.

Para aqueles que são fãs de firewall, lembre -se de que revisitaremos esse tópico com aplicativos mais específicos em Parte 10 disto LFCE Series.

Sinta -se à vontade para me avisar se tiver alguma dúvida ou comentário.

Torne -se um engenheiro certificado Linux