web-dev-qa-db-ja.com

FTPリクエストを別のIPに転送する方法は?

_VMware: 10.10.10.1_、linux in VMware (Guest): 10.10.10.128、_honeypot on Guest: 10.10.10.15_、およびWindows (Host): 192.168.1.11があります。 Hostからhoneypotに直接FTP要求を送信でき、接続が確立されます。次に、FTPリクエストをGuestに送信し、これらをhoneypotに転送します。これらのルールをiptablesGuestに入れます。

_iptables -t nat -A PREROUTING -p tcp --dport 21 -j DNAT --to-destination 10.10.10.15:21
iptables -t nat -A POSTROUTING -p tcp -s 10.10.10.15 --sport 21 -j SNAT --to-source 10.10.10.128
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
_

しかし、私は望ましい結果を得ることができません。私に何ができる?

honeypotが実行中の場合、pingからHostを取得できますが、pingからGuestを取得できません。結果は次のとおりです。

_Destination Host Unreachable
_

どこが悪いの?

7
ThisIsMe

FTP要求を転送する場合は、ポート21だけを転送することはできません。FTPは2つ以上の接続を使用します。

  • コマンドを送信する1つの接続、ポート21
  • FTPサーバーがデータを転送するために決定した可変ポート番号の1つ以上の接続

したがって、FTP接続を転送したい場合は、サーバー構成を調べて、FTPサーバーがクライアント接続を受け入れるために使用するポート範囲を確認する必要があります(クライアントがFTPサーバーに「パッシブモード」で接続していると想定)。
したがって、ポート21 +「パッシブポート」の範囲で定義されているすべてのポートを転送する必要があります。

しかし、これで十分ではありません。データ転送接続を開くために接続するIPをFTPクライアントに指示するのはFTPサーバーであり、通常これはサーバーIPです。
FTPサーバーは、接続の転送に使用しているサーバーを認識していません。

したがって、彼の「パブリックIP」はFTPサーバーのIPではなく、クライアントからのFTP接続を受け入れる(および転送する)サーバーのIPであることをFTPサーバーに伝える必要もあります。

1
Max