Ambos os conjuntos de regras têm problemas, e eu não usaria nenhum deles como estão.
No primeiro conjunto, a primeira regra permite novo tráfego de entrada para a porta de destino 22 de qualquer lugar. Isso não é um problema.
O primeiro problema é que a segunda regra permite novo tráfego de entrada para a porta de destino 22 de uma sub-rede específica. Isso é completamente redundante, já que a primeira regra permitiu o tráfego de qualquer lugar.
Meu palpite é que você leu algum tutorial que usou essas regras como exemplos (mutuamente exclusivos), aconselhando-o a selecionar um ou outro, mas não ambos.
O segundo problema é que outra regra é necessária antes dessa regra para tornar o firewall totalmente stateful, e essa regra está faltando aqui. Sem essa regra, somente o pacote SYN seria permitido e a conexão nunca seria concluída.
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
O segundo conjunto de regras tem um problema semelhante. Eu não sei quem originalmente escreveu este conjunto de regras, mas ele foi amplamente copiado em toda a Internet. Parece ter sido escrito por alguém que não estava familiarizado com firewalls stateful em geral, ou iptables em particular.
Neste conjunto de regras, a regra de entrada permite tráfego de entrada novo e estabelecido para a porta de destino 22 de qualquer lugar. Em seguida, a regra de saída permite o tráfego estabelecido da porta de origem 22 para qualquer lugar. Isso é essencialmente um espelho da primeira regra e algo como isso é necessário se sua política padrão no tráfego de saída for descartá-lo ou rejeitá-lo.
O problema é que essas regras de saída se tornam redundantes muito rapidamente, o que leva a problemas de desempenho, bem como problemas de compreensão para os seres humanos que precisam ler as regras mais tarde. Se você estiver descartando o tráfego de saída, apenas uma regra será necessária para o tráfego de saída estabelecido (correspondendo ao tráfego de entrada permitido) em qualquer porta, independentemente de quantas portas de entrada você permitir.
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Para um firewall de host em que a política de entrada padrão é negar tráfego e a política de saída padrão é permitir tráfego, a maioria das regras estará na tabela INPUT. É suficiente ter a regra stateful e, em seguida, regras para abrir as portas para qualquer tráfego que você precisar.
Por exemplo, para permitir conexões ssh e http:
-P INPUT DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
Se você também está negando o tráfego de saída por padrão, também é necessário permitir o tráfego de retorno para essas conexões de entrada permitidas.
-P OUTPUT DROP
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
E isso é um firewall tão simples e efetivo quanto o iptables pode ser.