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

Na publicação anterior, vimos como configurar o IPTables para funcionar como um firewall. Agora, veremos como criar scripts para executar regras automaticamente quando o sistema for iniciado, e também como excluir ou interromper temporariamente essas regras.

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.

Nesse caso, haveria uma rede entre o roteador e nosso sistema Linux, e uma rede diferente entre o sistema Linux e a rede local. Isso significa que nosso roteador não precisaria realizar NAT propriamente dito; o roteamento de tráfego simples, conforme explicado na postagem anterior, seria suficiente.

  • 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 precisamos criar o script dentro de /etc/init.d/ para que o serviço inicie automaticamente e possamos gerenciá-lo com mais facilidade.

#! / 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:

Colocamos este último script em /etc/init.d/ com o nome "firewall" . Então, se quisermos gerenciar o firewall, podemos usar o comando /etc/init.d/firewall start. Também podemos pará-lo ou verificar seu status da mesma maneira.

Agora vamos editar o arquivo /etc/rc.local e adicionar algo como: /etc/init.d/firewall start para que ele inicie 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.


Adicionar como fonte preferencial no Google