特定のOUTBOUND接続を許可する

1
2022.03.07

ssh(139.162.206.137)を介してリモートホストに接続しようとしましたが、iptablesが接続をブロックします。これは私の実際のiptables構成です

[[email protected] ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere             match-set IPs_countries src
DROP       all  --  anywhere             anywhere             match-set IPs_blacklist src
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  81.51.151.22.dyn.user.ono.com  anywhere             tcp dpt:6556
ACCEPT     tcp  --  81.51.151.22.dyn.user.ono.com  anywhere             tcp dpt:12800
ACCEPT     tcp  --  81.51.151.22.dyn.user.ono.com  anywhere             tcp dpt:12801
ACCEPT     icmp --  81.51.151.22.dyn.user.ono.com  anywhere             icmp echo-request
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
DROP       all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

ブロックポリシーはありませんiptablesサービスを停止すると、正しく接続できます。アウトバウンド接続で何が起こったのですか?

前もって感謝します

回答
1
2022.03.08

ファイアウォールはアウトバウンド接続をブロックしていません(OUTPUTテーブルにはルールがなく、デフォルトで許可されています)。

この問題は、サーバーからの戻りパケットがドロップされている可能性があります。つまり、INPUTテーブルに問題があります。

私の推測では、最初の2つのルールの1つが、ssh接続の機能を妨げていると思います。それらは「stateRELATED、ESTABLISHED」ルールの後に来るはずなので、最後にそれらのブロックを使用してルールを並べ替える必要があります。

別の方法として、SSHで接続しようとしているマシンの特定の例外があります。

  iptables -I INPUT -p tcp -s X.X.X.X -j ACCEPT

そのホストからのトラフィックを受け入れるため、または

 iptables -I INPUT -p tcp -s X.X.X.X -p tcp --sport 22 -j ACCEPT

そのIPからのSSHトラフィックに制限します。