Firewall com Iptables: direto ao assunto (RHEL5 e Fedora)
Sou novo por aqui e venho colocar a disposição um artigo sobre firewall. Quando comecei a usar Linux testei muitas distribuições, mas a que mais achei estável foi a Red Hat Enterprise, que foi a distribuição utilizada para testar o aqui proposto.
regras de entrada (INPUT)
Bom, vamos começar.
Primeiro vamos zerar todas as regras que vem por padrão:
# iptables -F
Segundo vamos bloquear entrada(INPUT), encaminhamento(FORWARD) e saída(OUTPUT).
# iptables -P INPUT DROP (bloqueia entrada)
# iptables -P FORWARD DROP (bloqueia encaminhamento)
# iptables -P OUTPUT DROP (bloqueia saída)
Obs: Recomendo que a entrada(INPUT) jamais, JAMAIS fique em ACCEPT, agora as demais ficam a critério de empresa para empresa.
Terceiro, depois de ter bloqueado tudo vamos agora dar permissões as portas e serviços que precisam estar abertas.
Vamos liberar serviços de entrada:
# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT (aceita conexões estabelecidas)
# iptables -A INPUT -i lo -j ACCEPT (aceita localhost 127.0.0.1)
# iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT (aceita ssh)
# iptables -A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT (aceita postgresql)
Obs: Essas 2 regras (ssh e postgresql) estão liberadas para toda a internet e rede, só libere portas e serviços para a internet que tenha certeza.
# iptables -A INPUT -s 192.168.0.0/255.255.255.0 -d 192.168.0.254 -p tcp -m tcp --dport 3128 -j ACCEPT (aceita Squid somente para rede)
# iptables -A INPUT -s 192.168.0.0/255.255.255.0 -d 192.168.0.254 -p tcp -m tcp --dport 445 -j ACCEPT (aceita samba somente para rede)
# iptables -A INPUT -s 192.168.0.0/255.255.255.0 -d 192.168.0.254 -p tcp -m tcp --dport 139 -j ACCEPT (aceita samba somente para rede)
# iptables -A INPUT -s 192.168.0.0/255.255.255.0 -d 192.168.0.254 -p udp -m udp --dport 53 -j ACCEPT (aceita DNS somente para rede)
Vou explicar rapidamente o que significa uma regra qualquer. Vamos pegar a regra do DNS:
Essa linha esta falando o seguinte:
Primeiro vamos zerar todas as regras que vem por padrão:
# iptables -F
Segundo vamos bloquear entrada(INPUT), encaminhamento(FORWARD) e saída(OUTPUT).
# iptables -P INPUT DROP (bloqueia entrada)
# iptables -P FORWARD DROP (bloqueia encaminhamento)
# iptables -P OUTPUT DROP (bloqueia saída)
Obs: Recomendo que a entrada(INPUT) jamais, JAMAIS fique em ACCEPT, agora as demais ficam a critério de empresa para empresa.
Terceiro, depois de ter bloqueado tudo vamos agora dar permissões as portas e serviços que precisam estar abertas.
Vamos liberar serviços de entrada:
# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT (aceita conexões estabelecidas)
# iptables -A INPUT -i lo -j ACCEPT (aceita localhost 127.0.0.1)
# iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT (aceita ssh)
# iptables -A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT (aceita postgresql)
Obs: Essas 2 regras (ssh e postgresql) estão liberadas para toda a internet e rede, só libere portas e serviços para a internet que tenha certeza.
# iptables -A INPUT -s 192.168.0.0/255.255.255.0 -d 192.168.0.254 -p tcp -m tcp --dport 3128 -j ACCEPT (aceita Squid somente para rede)
# iptables -A INPUT -s 192.168.0.0/255.255.255.0 -d 192.168.0.254 -p tcp -m tcp --dport 445 -j ACCEPT (aceita samba somente para rede)
# iptables -A INPUT -s 192.168.0.0/255.255.255.0 -d 192.168.0.254 -p tcp -m tcp --dport 139 -j ACCEPT (aceita samba somente para rede)
# iptables -A INPUT -s 192.168.0.0/255.255.255.0 -d 192.168.0.254 -p udp -m udp --dport 53 -j ACCEPT (aceita DNS somente para rede)
Vou explicar rapidamente o que significa uma regra qualquer. Vamos pegar a regra do DNS:
iptables -A INPUT -s 192.168.0.0/255.255.255.0 -d 192.168.0.254 -p udp -m udp --dport 53 -j ACCEPT
Essa linha esta falando o seguinte:
- iptables, aceite a conexão de entrada do protocolo udp da origem 192.168.0.0 com destino no ip 192.168.0.254 na porta 53.