web-dev-qa-db-ja.com

iptablesを使用してsshを転送する

私はそれを行う方法についていくつかのチュートリアルを見つけましたが、それらのどれも機能しませんでした:/

私のセットアップ:

ファイアウォール-インターネットから到達可能-eth0:xxx.xxx.xxx.xxx(パブリックIP)-eth1:192.168.1.1

サーバー-ファイアウォールから到達可能-eth0:192.168.1.5

ポート22でファイアウォールに接続できるようにしたいので、ポート2222の着信接続を192.168.1.5:22に転送したいと思います。

fIREWALLからSERVERへのpingとsshが機能します。 SERVERからFIREWALLへのpingとsshも同様に機能します(ただし、ログインは公開鍵でのみ許可され、SERVERは許可されません...)

どこからでもpingとsshを使用して、ファイアウォールが機能します。

IP転送が有効になっている:

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

Iptables-rulesを投稿しても、どのルールも機能せず(PREROUTING、POSTROUTING、FORWARD ...を使用)、他のルールがないため、あまり意味がありません。

はい、ファイアウォールは何もブロックしません。しかし、これは(まだ)セキュリティに関するものではありません。

最初のページで見つけたものをすべて試しました: https://www.google.de/search?q=iptables+forward+ssh

助言がありますか?

よろしく、イェンス

[〜#〜] update [〜#〜]Khaledのiptablesコマンドを使用した後のtcpdump -n -i anyの出力は次のとおりです。

15:42:33.852718 IP home-ip.56008 > firewall-public-ip.2222: Flags [S], seq 1141341765, win 14600, options [mss 1460,sackOK,TS val 871214 ecr 0,nop,wscale 7], length 0
15:42:33.852752 IP home-ip.56008 > 192.168.1.5.22: Flags [S], seq 1141341765, win 14600, options [mss 1460,sackOK,TS val 871214 ecr 0,nop,wscale 7], length 0

2行目には... IP 192.168.1.1.45678> 192.168.1.5.22 ..のようなものがあると思います。

私のssh-clientが複数回接続を試みると、これらの2行が数回繰り返されます。しかし、答えはありません。

2回目の更新サーバー(192.168.1.5)のルートは ここ です。ルートを追加しました

public-firewall-ip  255.255.255.255      192.168.1.1     192.168.1.5       1

しかし、これは効果がありません。サーバー上でWin XP cygwinのsshdがインストールされた状態で実行されます。ファイアウォールからサーバーへのsshは正常に機能するため、これについては前に説明しませんでした。しかし、ルーティングに関しては、Windowsが多少制限されているように感じます。 。

サーバーにWiresharkをインストールし、結果を数分で貼り付けます。

サーバー上のトレースサーバー上のトレースは、ポート22に到着するSYNと、ホームIPに送信されるSYN、ACKを示しています。エラーがあると思います。 ACKは、マスカレードされるよりもファイアウォールに送信される必要があります。これは、離脱パッケージでは、送信元IP /ポートが192.168.1.5:22になっているためです。これがNATの背後にある自宅のラップトップに到達する方法はありません...または方法はありますか?

3
Jens

トラフィックがファイアウォールを通過することを許可し、IP転送を有効にしている場合は、ポート2222でSSHトラフィックを転送するために1つのNATルールが必要です。次のようなもので機能します。

$ iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.5:22

更新:

ネットワークスニファは、このような問題をデバッグするときの友です。ファイアウォールマシンでtcpdumpを実行して、着信する要求をキャッチでき、同じ要求がファイアウォールマシンを離れる必要があるかどうかを確認できます。

3
Khaled