O primeiro conjunto de regras primeiro permite todos os pacotes de entrada em suas portas 80 e 443. Em seguida, ele descarta TODOS os outros pacotes de entrada (exceto aqueles já aceitos).
O segundo conjunto de regras primeiro permite todos os pacotes de entrada nas portas 80 e 443. Em seguida, descarta conexões de entrada (excluindo 80 e 443 que já são aceitas), que são pacotes com somente o sinalizador SYN conjunto. Então, ele permite todos os pacotes recebidos.
A diferença aqui é o que acontece com suas conexões OUTGOING. No primeiro conjunto de regras, se você tentar se conectar a outro servidor, todos os pacotes enviados pelo servidor em resposta serão descartados para que você nunca receba dados. No segundo caso, esses pacotes serão permitidos, já que o primeiro pacote do servidor remoto terá SYN e ACK definidos e, portanto, passarão no teste SYN, e os pacotes a seguir não terão nenhum conjunto SYN e, portanto, passarão no teste.
Isso tem sido feito tradicionalmente usando conntrack
, que requer que o kernel rastreie todas as conexões no firewall, com um comando como
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
que corresponde ao pacote de entrada a uma conexão existente ou a uma conexão relacionada a alguma outra conexão existente (por exemplo, conexões de dados FTP). Se você não estiver usando FTP ou outros protocolos que usam várias portas aleatórias, o segundo conjunto de regras obtém basicamente o mesmo resultado sem a sobrecarga de rastrear e inspecionar essas conexões.