要塞SSHサーバーを作成しています。 IP テーブルで次のルールを使用すると、サーバーに正しく接続できます。
参加ルール
- 私のクライアントIPのポート22からのトラフィックを許可します。
- 他のすべてのトラフィックをブロック
アウトバウンドルール
- 私のクライアントIPへのすべてのトラフィックを許可します。
- 他のすべてのトラフィックをブロック
私の理解は、有効なクライアントが呼び出すと、サーバーがSSH接続を完了するためにアウトバウンドポートをランダムに選択することです。
- システムはどの範囲の整数からこのポートを選択しますか?
- 使用するポート範囲をシステムに通知できますか?
ベストアンサー1
あなたの理解が間違っています:-)。クライアントは「tcp-high port」を選択して、サーバ宛先ポート22へのトラフィックを開始します。サーバーは、クライアントが開始したソースポートに応答します。
たとえば、クライアントは、サーバ宛先ポート 22 に接続するために送信元ポートとしてポート 12345 を選択します。サーバーは、ポート 22 からポート 12345 のクライアントにトラフィックを送信しようとします。
tcp-highポート範囲は> 1024〜65535です。
したがって、クライアントへのRELATEDおよびESTABLISHEDトラフィックを許可する必要があります。たとえば、
IPTABLES -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
上記のルールは「残りのすべてをブロック」ルールの前になければなりません。