Crie seu próprio firewall com iptables usando este script simples parte 2

Firewall_ (rede)

Olá a todos, hoje trago para vocês uma segunda parte dessa série de tutoriais sobre firewall com iptables, muito simples para que você possa copiar e colar, acho que no final das contas é o que todos os iniciantes procuram ou mesmo o mais experiente, por que temos que reinventar a roda 100 vezes, certo?

Desta vez, digo a eles para tentarem focar no caso específico de se queremos que nosso firewall seja muito mais agressivo com uma política OUTPUT DROP. Este post também está a pedido de um leitor desta página e do meu post. (Dentro da minha mente wiiiiiiiiiiiii)

Vamos falar um pouco sobre os "prós e contras" de estabelecer políticas de queda de saída, o que posso falar é que torna o trabalho muito mais tedioso e trabalhoso, porém o pró é que no nível da rede você terá segurança do que se você se sentasse para pensar, projetar e planejar bem as políticas, você terá um servidor muito mais seguro.

Para não divagar ou sair do assunto, vou explicar rapidamente para você com um exemplo como mais ou menos suas regras devem ser

iptables -A SAÍDA -o eth0 -p tcp –sport 80 -m estado - estado ESTABELECIDO -j ACEITAR
-A porque adicionamos a regra
-o refere-se ao tráfego de saída, então a interface é colocada se não for especificada porque corresponde a todos.
-esporte porto de origem, desempenha um papel importante porque na maioria dos casos não sabemos de que porta faremos o pedido, se assim for, poderíamos usar o dport
–Dport porta de destino, quando sabemos especificamente com antecedência que a conexão de saída deve ir apenas para uma porta específica. Tem que ser para algo muito específico, como um servidor mysql remoto, por exemplo.
-m state –state ESTABELECIDO Isso já é um adorno para manter as conexões já estabelecidas, poderíamos aprofundar em um post futuro
-d para falar de destino, se pudesse ser especificado, por exemplo ssh para uma máquina específica pelo seu ip

#!/bin/bash

# Limpamos tabelas iptables -F iptables -X # Limpamos NAT iptables -t nat -F iptables -t nat -X # tabela mangle para coisas como PPPoE, PPP e ATM iptables -t mangle -F iptables -t mangle -X # Políticas Acho que esta é a melhor maneira para iniciantes e # ainda não é ruim, explicarei a saída (saída) porque são conexões de saída #, a entrada descartamos tudo e nenhum servidor deve encaminhar. iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Manter estado. Tudo que já está conectado (estabelecido) deixamos assim iptables -A INPUT -m state --state ESTABLISHED, RELACIONADO -j ACCEPT
iptables -A SAÍDA -m estado --estado ESTABELECIDO, RELACIONADO -j ACEITAR
# Dispositivo de loop. iptables -A INPUT -i lo -j ACEITAR
# Saída de loopback de iptables -A SAÍDA -o lo -j ACEITAR

# http, https, não especificamos a interface porque # queremos que seja tudo iptables -A INPUT -p tcp --dport 80 -j ACEITAR iptables -A INPUT -p tcp --dport 443 -j ACEITAR
# partida
# http, https, não especificamos a interface porque
# queremos que seja para todos, mas se especificarmos a porta de saída
iptables -A SAÍDA -p tcp --sport 80 -j ACEITAR iptables -A SAÍDA -p tcp --sport 443 -j ACEITAR

# ssh apenas internamente e a partir deste intervalo de iptables do ip -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j ACEITAR
# output # ssh apenas internamente e a partir desta faixa de ip's
iptables -A SAÍDA -p tcp -d 192.168.xx / 24 -o $ intranet --sport 7659 -j ACEITAR
# monitoramento por exemplo se eles têm zabbix ou algum outro serviço snmp iptables -A INPUT -p tcp -s 192.168.1.1 -i $ intranet --dport 10050 -j ACEITAR
# partida
# monitoramento por exemplo se eles têm zabbix ou algum outro serviço snmp
iptables -A SAÍDA -p tcp -d 192.168.1.1 -o $ intranet --dport 10050 -j ACEITAR

# icmp, o ping depende de você iptables -A INPUT -p icmp -s 192.168.xx / 24 -i $ intranet -j ACEITAR
# partida
# icmp, bom ping é sua decisão
iptables -A SAÍDA -p icmp -d 192.168.xx / 24 -o $ intranet -j ACEITAR

#mysql com postgres é a porta 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACEITAR
# output - pergunta também feita por um usuário para fazer um # servidor de regras muito específico: 192.168.1.2 mysql: 192.168.1.3
#mysql com postgres é a porta 5432
iptables -A SAÍDA -p tcp -s 192.168.1.2 -d 192.168.1.3 --dport 3306 -o $ intranet -j ACEITAR

#sendmail bueeeh se você quiser enviar algum e-mail #iptables -A SAÍDA -p tcp --dport 25 -j ACEITAR # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # IP do servidor - o wan ip real de seu servidor LAN_RANGE = "192.168.xx / 21" # intervalo de LAN de sua rede ou vlan # IP's que nunca devem entrar na extranet, é para usar um pouco de # lógica se tivermos uma interface puramente WAN, nunca deveria insira # tipo de LAN de tráfego por meio dessa interface SPOOF_IPS = "0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16" # Ação padrão - a ser realizada quando qualquer regra corresponder a ACTION = "DROP" # Pacotes com o mesmo ip do meu servidor através do wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION
iptables -A SAÍDA -o $ extranet -s $ SERVER_IP -j $ ACTION

# Pacotes com intervalo de LAN para wan, coloco assim no caso de você ter # alguma rede em particular, mas isso é redundante com a seguinte # regra dentro do loop "for" iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION
iptables -A SAÍDA -o $ extranet -s $ LAN_RANGE -j $ ACTION

## Todas as redes SPOOF não permitidas pelo wan para ip em $ SPOOF_IPS do iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION
iptables -A SAÍDA -o $ extranet -s $ ip -j $ ACTION
feito

Na próxima revisão faremos range de portas e também estabeleceremos políticas organizadas por nomes, entre outras coisas ... Aguardo seus comentários e solicitações.


Seja o primeiro a comentar

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.