SSH 接続ポートをサーバーに転送するように iptables を構成する

SSH 接続ポートをサーバーに転送するように iptables を構成する

私のネットワークトポロジは次のとおりです。

インターネット---------ファイアウォール------------サーバー

0.0.0.0/0-----172.8.45.140および192.168.1.1-----192.168.1.2

リモートクライアント(インターネット)からサーバー(192.168.1.2)に着信SSH接続を転送するには、iptablesを使用してファイアウォールを構成する必要があります。 192.168.1.2 のサーバーにリモートでアクセスするために、クライアントでデフォルトで実行されます。ssh [email protected]

ファイアウォールには通信用の2つのNICがあります。

172.8.45.140(公開)はens33インターフェースにあります。

192.168.1.1(プライベート)はens37インターフェースにあります。

サーバーのプライベート IP は 192.168.1.2 で、SSH にデフォルトのポート 22 ではなくポート 54045 を使用するように構成されます。

ファイアウォールのiptablesが設定され、INPUTチェーンとFORWARDチェーンの両方がDROPポリシーに変更され、OUTPUTチェーンにはまだデフォルトのポリシーACCEPTがあります。

Chain INPUT (policy DROP)

target     prot opt source               destination         

Chain FORWARD (policy DROP)

target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination

ファイアウォールの背後にあるWebサーバーにWeb要求を転送する方法を詳しく説明するオンラインガイドを見ました。以下を参照してください。

https://www.systutorials.com/port-forwarding-using-iptables/

https://www.digitalocean.com/community/tutorials/how-to-forward-ports-through-a-linux-gateway-with-iptables

https://wikileaks.org/ciav7p1/cms/page_16384684.html

このチュートリアルに従って、/etc/sysctl.confファイルを介してファイアウォールでポート転送を有効にし、次の規則を試しました。

最初の試み

入力ポリシーと転送ポリシーは削除され、出力ポリシーは受け入れられます。

sudo iptables -A PREROUTING -t nat -i ens33 -p tcp --dport 22 -j DNAT --to 192.168.1.2:54045

sudo iptables -A FORWARD -p tcp -d 192.168.1.2 --dport 54045 -j ACCEPT

結果:SSH操作がタイムアウトしました。また、INPUT ポリシーと FORWARD ポリシー ACCEPT に疲れ、まだ作業タイムアウトが発生しました。

2回目の試み

入力ポリシーと転送ポリシーは削除され、出力ポリシーは受け入れられます。

sudo iptables -A FORWARD -i ens33 -o ens37 -p tcp --syn --dport 22 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -i ens33 -o ens37 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A FORWARD -i ens37 -o ens33 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

sudo iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 54045 -j DNAT --to-destination 192.168.1.2

sudo iptables -t nat -A POSTROUTING -o ens37 -p tcp -d 192.168.1.2 -j SNAT --to-source 192.168.1.1

結果:SSH操作がタイムアウトしました。また、INPUT および FORWARD ポリシーに疲れて ACCEPT 接続が拒否されました。

3回目の試み

入力、転送、および出力ポリシーを受け入れます。

sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination 192.168.1.2:54045

sudo iptables -t nat -A POSTROUTING -j MASQUERADE

結果:これは機能しますが、FORWARDチェーンのポリシーがACCEPTの場合にのみ可能です。ファイアウォールを介して接続する唯一の時間です。チェーン FORWARD を DROP に変更すると、SSH 接続時間が再び超過します。

私はこれが迷彩に関連しているか、FORWARDポリシーDROPに関連していると思います。

私の質問は私が何を見落としていますか?これは私が私を振り返って逃したものかもしれません。親切にしてくれて助けてくれてありがとう。

答え1

あなたに必要なものターゲットNAT。壊れたルールをすべて削除し、これら2つを使用してください。うまくいくでしょう。頑張ってください!

$ sudo iptables -t nat -A PREROUTING -p tcp -i ens33 --dport 22 -j DNAT --to-destination 192.168.1.2:54045
$ sudo iptables -t nat -A POSTROUTING -j MASQUERADE

関連情報