Eu tenho que contradizer a resposta anterior. Esta configuração não é segura. Basicamente fazendo
:FORWARD ACCEPT
-A FORWARD -i eth0 -j ACCEPT
Você está permitindo que todo o tráfego externo seja encaminhado para o interior. Então você não precisa das entradas PREROUTING.
Portanto, se eu for um invasor na mesma sub-rede que seu IP público (alguém usando o mesmo ISP na mesma região). Se eu conectar uma máquina diretamente no ISP, para obter um de seus IPs públicos, posso criar uma rota como
ip route add 192.168.0.0/24 via <your_public_ip>
(posso obter o seu IP público apenas procurando na internet por outras pessoas na minha sub-rede)
Então, posso fazer curl http://192.168.0.201:548
e seu firewall terá prazer em encaminhar essa solicitação para sua máquina em sua rede local. Na verdade, eu seria capaz de analisar sua rede fazendo:
nmap -sn -T4 192.168.0.0/24
E gostaria de obter uma lista de todos os IPs em funcionamento na sua rede.
Então, para cada um que eu poderia fazer:
nmap -sS -T4 192.168.0.201
E eu pegaria a lista de portas abertas. Eu verifiquei isso criando duas VMs e simulando um roteador e uma máquina cliente na qual eu estava executando um servidor Nginx. Eu era capaz de acessar a partir do lado "WAN" do servidor Nginx no lado "LAN", embora não houvesse regra PREROUTING permitindo isso. Também consegui varrer o lado "LAN" e, assim, apenas 1 VM estava funcionando: -)
O que você precisa fazer é:
:FORWARD DROP
-A FORWARD -i eth1 -o eth1 -j ACCEPT
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -m conntrack --ctstate RELATED,ESTABLISHED,DNAT -j ACCEPT
As regras acima eliminarão todo o encaminhamento por padrão. Observe que, se você precisar de encaminhamento entre outras interfaces, precisará adicionar as entradas. Então as outras regras fazem:
- aceitar o encaminhamento do lado da LAN para o lado da LAN (esse é opcional, mas você pode ter alguma configuração que exija isso. Por exemplo, minha interface LAN é uma ponte de rede feita de várias interfaces, assim como eu preciso disso regra)
- aceitar encaminhamento de LAN para WAN
- aceitar o encaminhamento da WAN para a LAN somente se os pacotes forem aceitos no PREROUTING e enviados para o destino DNAT, ou se forem de uma conexão estabelecida ou relacionada a ele (pense nos pacotes ICMP relacionados à conexão)
No entanto, a outra resposta está correta: você está expondo o DNS à Internet e isso é incomum. Além disso, expor a porta 22 e a porta 80 talvez não seja a melhor ideia. Olhe on-line, há muitas maneiras de melhorar sua configuração aqui, como limitar a taxa e usar um IPS (até mesmo simples como o fail2ban) e, especialmente, endurecer o SSH e alternar para HTTPS.
Descartar pacotes de um espaço IP privado provavelmente não é necessário, mas descartar pacotes inválidos ainda é uma coisa boa. De qualquer forma, assim que você usa o conntrack, ele está "marcando" os pacotes do invlid, então por que não usar esse recurso e evitar rotear os pacotes que serão descartados posteriormente pelo seu aplicativo. Apenas mate-os.
Observação final : quando você não sabe como testar seu próprio firewall, deve usar uma distribuição de firewall (por exemplo, ipfire, OPNsense, etc.) ou pelo menos um software em seu Linux caixa que pode fazer isso out-of-the-box (por exemplo, shorewall). Você tem as vantagens de que seria mais fácil obter uma configuração segura, no entanto, é claro que tem a desvantagem de não aprender o iptables. Se é para aprender iptables, então use primeiro uma configuração de firewall real para o roteador em seu "roteador de produção". Jogue com o iptables na máquina ou em uma configuração da VM, faça outras perguntas aqui, por exemplo, sobre como testar e verificar seu firewall. Depois de provar isso, coloque-o em "prod". :-) É assim que eu procedi, então eu apenas declaro isso como um conselho construtivo.