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:
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.
Resumindo, somente as máquinas da rede estão com permissão para acessar a porta 53.