Protegendo sua rede com Iptables - Proxy - NAT - IDS: PARTE 2

No post anterior Vimos a configuração do IPTables para funcionar como Firewall. Agora podemos ver como criar esses scripts para que as regras sejam executadas automaticamente quando o sistema for iniciado e também como podemos eliminar ou interromper essas regras por um momento.

Antes de fazer o script e mostrar como fica, vamos falar um pouco sobre o NAT e o conceito do que queremos fazer com este equipamento.

NAT e contexto do exemplo.

Quando falamos em NAT, podemos confundir com roteamento, já que ambos são responsáveis ​​por conectar duas redes diferentes entre si. A diferença mesmo é que o roteamento é aplicado para ir de uma rede local para outra e essa outra rede pode se conectar a um roteador e sair para a Internet.

Por outro lado, quando falamos sobre NAT, falamos sobre o roteamento de pacotes de uma rede local ou privada para uma rede pública ou Internet. Ele faz isso mascarando os pacotes, colocando o IP público com o qual ele vai para a Internet. Em outras palavras, não precisamos de um roteador, porque o IP público pertence diretamente ao computador GNU / Linux.

nat

Faremos isso com o slogan de que estamos usando nosso Linux como roteador / firewall para acessar a Internet a partir de uma rede local. Mas aqui podem aparecer dois cenários.

  • Que o nosso Linux esteja entre o roteador da operadora e a rede local.

Neste caso, entre o roteador e nosso Linux haveria uma rede, e entre o Linux e a rede local haveria outra rede diferente. Isso significa que nosso roteador não teria que fazer NAT como tal, com um roteamento de tráfego simples, conforme explicado em post anterior Seria bom.

  • Que nosso Linux tenha uma interface conectada à rede local e através da outra interface receba diretamente um IP público com o qual navega.

Isso significa que nosso Linux deve fazer NAT para que os pacotes possam chegar à Internet.

Para os propósitos deste pequeno laboratório então, diremos que nosso Linux recebe um IP público diretamente e assim será capaz de testar os efeitos do NAT.

Para fazer o NAT, usamos a sintaxe

 iptables -t nat -A POSTROUTING -O eth1 -j MASQUERADE

Onde eth1 é a interface onde recebemos o IP público, ou seja, onde vamos para a Internet.

MASQUERADE é usado quando o ip é público, mas pode variar com o tempo (dinâmico). Caso contrário, podemos usar SNAT – to-source ip

Criação de script iptables

Suponha então que: 172.26.0.0 é nossa rede local e 81.2.3.4 é o IP público com o qual acessamos a Internet. (é um ip estático). Eu tenho as interfaces eth0 (rede local)

eth1 (rede pública).

Basicamente, consiste em criar um script que pode ser chamado de /etc/init.d/firestop (por exemplo). e a partir desse script podemos iniciar, parar ou verificar o status de nossa configuração, assim como fazemos com qualquer daemon do sistema.

Suponha que minhas regras IPTABLES SÃO:

#! / bin / bash # Firewall da minha casa. # Nome do arquivo / etc / firewall_on # Por Jlcmux Twitter: @Jlcmux # # Política básica. iptables -P INPOUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # #NAT para compartilhar Internet de eth0 para eth1 iptables -t nat -A POSTROUTING -O eth1 -j SNAT --to-source 81.2.3.4
# # Permitir conexões de entrada iniciadas por meu iptables -A FORWARD -m estado --state ESTABLISHED, RELACIONADO -j ACCEPT # # Tráfego de saída autorizado iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 443 -j ACEITAR iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 53 -j ACEITAR
Não vamos esquecer de dar permissões de execução

Explicação:

O script basicamente faz o seguinte:

  1. Primeiro restrinja toda a navegação, conexões e tráfego. (Políticas básicas de firewall)
  2. Em seguida, crie o NAT com o destino eth1. indicando que temos um ip público estático «81.2.3.4»
  3. Abre as portas necessárias para receber os pacotes de conexões iniciados por mim.
  4. Aceita tráfego de saída HTTP, HTTPS e DNS.
As regras são destinadas ao tráfego FORWARD porque estamos usando nosso Linux como Roteador, então as políticas são usadas para o tráfego que PASSA pelo Linux, ou seja, ele atua como um intermediário. Isso significa que nosso Linux não pode realmente navegar ou receber quaisquer dados diretamente. Só se aplica a computadores conectados a ele, mas não a si mesmo

Se quisermos usar nosso equipamento para navegar, devemos repetir as linhas e mudar FORWARD para INPUT ou OUTPUT conforme apropriado.

Cancele o script.

Agora vamos criar um script que substitui todos os itens acima e deixa o computador limpo de tudo isso. (Para fins de teste ou queremos apenas desligar o firewall).

#! / bin / bash # Firewall da minha casa. # Nome do arquivo / etc / firewall_off # Por Jlcmux Twitter: @Jlcmux # # Excluindo regras de iptables -F # #Aplicando políticas padrão (todo o tráfego é aceito) iptables -P ENTRADA ACEITAR iptables -P SAÍDA ACEITAR iptables -P AVANÇAR ACEITAR

Automatizando.

Agora devemos criar o script dentro /etc/init.d/ e o serviço inicia automaticamente e podemos gerenciá-lo de uma forma mais confortável.

#! / bin / bash # Firewall da minha casa. # Nome do arquivo /etc/init.d/ firewall # Por Jlcmux Twitter: @Jlcmux caso $ 1 no início) / etc / firewall_on ;; parar) / etc / firewall_off ;; status) iptables -L ;; *) echo "Sintaxe errada. Valid = /etc/init.d/ firewall start | stop | status ;; esac

Explicação:

Este último script que colocamos /etc/init.d/ com o nome firewall. Então, se quisermos gerenciar o firewall, podemos usar o comando /etc/init.d/ firewall start. Da mesma forma, podemos pará-lo ou ver o estado.

Agora vamos editar o arquivo /etc/rc.local e colocamos algo como: /etc/init.d/ firewall start para começar com o sistema.

Pois bem. Essa e a segunda parte. Espero que traga algo para todos vocês. Na próxima, veremos Proxy e IDS.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   caçador dito

    Se você estiver usando o Debian, há um pacote no repo (iptables-persistent) que faz exatamente isso, ele despeja as regras atuais em /etc/iptables/rules.v4 ou v6 dependendo do que você usa e as aplica a você quando você levanta o sistema.

  2.   ocz dito

    Na prática, para limpar a configuração de um firewall iptables convencional (e usar NAT não seria assim do meu ponto de vista), na maioria dos casos, uma liberação de regra e redefinir as políticas padrão para ACEITAR seria suficiente.
    Mas, em teoria, e até onde eu sei, além disso, você também precisa limpar as strings não padrão e redefinir os contadores. Ações a serem realizadas tendo em mente que além de "filtrar" existem outras tabelas, (é obrigatória a leitura do arquivo "/ proc / net / ip_tables_names" para isso).

    A propósito, a ortodoxia diz que um firewall já deve estar ativo antes da rede. Não sei como isso é feito nos outros sistemas Linux, mas no tipo Debian o script pode ser adaptado e definido no diretório "/etc/network/if-pre-up.d/".

    Bom firewall para todos. 😉

  3.   NauTiluS dito

    Olá, o post é muito bom. Eu li os 2 volumes inteiros.

    Esperando pelo próximo 🙂

  4.   anônimo dito

    Uma pergunta da minha ignorância, continuamos com o iptables, mas para várias versões do kernel que temos nftables, já estou testando, as perguntas são, nftables é algo beta comparado ao iptables? O iptables continuará a ser usado por muito mais tempo?

    Obrigado.

    1.    yukiteru dito

      nftables inclui todas as funcionalidades de iptables, ip6tables, arptables e ebtables, todos usando uma nova infraestrutura em ambos os kernelspace e userspace, o que garante melhor desempenho e funcionalidade aprimorada. nftables irá substituir o iptables e todas as outras ferramentas mencionadas, mas não por enquanto, pelo menos até que haja um uso mais difundido de nftables como tal.

  5.   Alexander dito

    post muito bom, queria ler mais pois está muito bem explicado .. saudações obrigado grande contribuição

  6.   Avrah dito

    Olá! Muito bom tanto post.
    Como contribuição, você pode adicionar ao final desta parte:

    "Agora vamos editar o arquivo /etc/rc.local e colocar algo como: /etc/init.d/firestop start para iniciar o sistema."

    Adicione isso a rc.local.

    if [-x /etc/init.d/ firewall]; então
    /etc/init.d/ firewall start
    fi

    O que significa que se "firewall" tiver permissões de execução, execute-o, se não tiver.
    Se você quiser que o "firewall" não inicie, basta remover as permissões.

    Por exemplo: chmod + x /etc/init.d/ firewall
    para fazê-lo funcionar a cada inicialização ou ...
    chmod -x /etc/init.d/ firewall
    para desativá-lo completamente.

    Saudações!