==== Regras iptables ==== Ates de aplicarmos regras as cadeias é sempre bom aplicar essa regra, ainda mais se estivermos conectado por ssh, caso contrario perdemos a conexão com o servidor. # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # iptables --append INPUT --match state --state ESTABLISHED,RELATED --jump ACCEPT # iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # iptables --append OUTPUT --match state --state ESTABLISHED,RELATED --jump ACCEPT # iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # iptables --append FORWARD --match state --state ESTABLISHED,RELATED --jump ACCEPT Fechando as políticas básicas # iptables --policy INPUT DROP # iptables --policy OUTPUT DROP # iptables --policy FORWARD DROP Liberando o acesso à interface loopback: # iptables --append INPUT --in-interface lo --destination 127.0.0.1 --jump ACCEPT # iptables --append OUTPUT --out-interface lo --destination 127.0.0.1 --jump ACCEPT Liberando a entrada de pacotes ICMP Echo Reply e a saída de pacotes ICMP Echo Request: # iptables --append INPUT --protocol icmp --icmp-type 0 --jump ACCEPT # iptables --append OUTPUT --protocol icmp --icmp-type 8 --jump ACCEPT Regra para utilizar o programa mtr, que é um programa similar ao traceroute: # iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT Liberando a conexão por ssh # iptables --append INPUT --match state --state NEW --match tcp --protocol tcp -s 192.0.2.0/24 --dport 1024:65535 --sport 22 --jump ACCEPT # iptables --append OUTPUT --match state --state NEW --match tcp --protocol tcp --dport 22 -d 192.0.2.0/24 --sport 1024:65535 --jump ACCEPT * --sport, --source-port: Opção para definir porta origem. * --dport, --destination-port: Opção para definir porta destino. Resolução de nomes # iptables --append INPUT --match state --state NEW --match udp --protocol udp -s 192.0.2.100/32 --dport 1024:65535 --sport 53 --jump ACCEPT # iptables --append OUTPUT --match state --state NEW --match udp --protocol udp --dport 53 -d 192.0.2.100/32 --sport 1024:65535 --jump ACCEPT Compartilhando a internet # iptables -A FORWARD -s 192.168.200.0/24 -d 0/0 -j ACCEPT # iptables -A FORWARD -s 0/0 -d 192.168.200.0/24 -j ACCEPT # iptables --table nat --append POSTROUTING --source 192.168.200.0/24 --out-interface eth1 --jump MASQUERADE Temo que lembra de permitindo o encaminhamento de pacotes no kernel # echo 1 > /proc/sys/net/ipv4/ip_forward ou alterando o arquivo sysctl.conf para # vim /etc/sysctl.conf [...] net.ipv4.ip_forward = 1 [...] * eth1: interface que está conectada a internet Para acompanhar as atividade do nat por meio do arquivo de kernel: # tail -f /proc/net/ip_conntrack Redirecionamento de porta # iptables -t nat -A PREROUTING -p tcp -s 0/0 -d 200.100.50.99 --dport 22 -j DNAT --to 192.168.200.2:52000 Resumindo a regra, todos os pacotes tcp que vierem de qualquer origem com destino o IP válido do nosso Firewall, na porta 22, vai ser redirecionado para o host interno 192.168.200.2 na porta 22. Listando as regras # iptables -nvL --line-number # iptables --list --line-number --verbose # iptables -t nat -nL