iptablesを使用して成功したTCP接続をなりすますことは可能ですか?

iptablesを使用して成功したTCP接続をなりすますことは可能ですか?

通常、IP テーブルを使用すると、トラフィックを破棄または拒否します。 TCPの場合、iptablesはsynを再送信しますが、接続するのを忘れる方法はありますか?

答え1

xtables-addons目標を持ってTARPITマニュアルページ):

TARPIT は、
着信 TCP 接続をキャプチャして保存するためにローカル接続固有のリソースを使用しません。

TARPITはTCPレベルでのみ機能し、完全にアプリケーションに依存しません。モジュールはTCP要求に応答し、リスニングサーバーのように動作しますが、ACKまたはRSTを送信する以外はデータを送信しません。着信パケットは無視され、ドロップされます。

Debian/Ubuntu では、パッケージは次のようになります。xtables-addons-common

答え2

RSTパケットを挿入でき、関連ホストに特異的でカスタマイズされたファイアウォール構成がない場合、RSTは接続を閉じることがあります。別のアプローチは、接続を受け入れて、何とか状態項目を削除することです。

...
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp --syn -m tcp --dport 22 -j ACCEPT
...

ロギング(ログスキャナを介して動作するなど)または他のモジュールがインストールされている可能性がありますsec.plconntrack-tools

conntrack -D -s 192.0.2.42

192.0.2.42 SSH経由で接続した後、このIPのステータステーブルエントリを削除します。

答え3

Synを再送信しましたが、接続するのを忘れましたか?

これはSYN / ACKを生成しますが、接続を追跡しないことを意味します。

あまりそうではありません。


最初にすべきこと:なぜ?

SYNが閉じたポートに送信されたら、次の操作を行います。

SYNが次の場合開いているポートの次:

  • サーバー(サービス)が適切であると判断された要求を処理できるようにします。

  • SYNPROXYヘルプサーバーを使用してください。

    SYNPROXYを使用したSYNフラッドの軽減

    これは実際にはSYN-ACK Flood DDoS攻撃からサーバーを保護する試みです。これはあなたが要求したものと同じではなく、可能ではありません。両方のエンティティ(サーバーとiptables)が同時に同じパケットに対してSYN / ACKで応答することはできません。どちらかです。

しかし、SYNPROXYはスマートです。動作方法(およびその他):

SYNPROXY を使用すると、クライアントは SYNPROXY に透過的に接続されます。したがって、クライアントとSYNPROXYの間に3方向TCPハンドシェイクが最初に発生します。

  • クライアントはサーバ A に TCP SYN を送信します。

  • ファイアウォールからこのパケットが到着すると、UNTRACKEDとしてマークされます。

  • 次に、UNTRACKED TCP SYN パケットを SYNPROXY に提供します。

  • SYNPROXYはこの情報を取得し(サーバーAとして)TCP SYN + ACK(追跡されません)で応答します。

  • クライアントは、SYNPROXYにも提供されるTCP ACK(iptablesにINVALIDまたはUNTRACKEDとしてマークされています)で応答します。

  • クライアントがSYNPROXYに接続すると、SYNPROXYは自動的に物理サーバーとの3方向TCPハンドシェイクを開始してSYNパケットをなりすまし、実際のサーバーが元のクライアントが接続しようとしていることを知ります。

  • SYNPROXY は TCP SYN を物理サーバー A に送信します。これは、OUTPUTチェーンで発生するiptablesの新しい接続です。パケットの送信元 IP はクライアントの IP です。

  • 物理サーバーAはクライアントにSYN + ACKを応答します。

  • SYNPROXYはこのメッセージを受信し、ACKでサーバーに応答します。これで、接続がESTABLISHEDとしてマークされました。

  • 接続が確立されると、SYNPROXYはクライアントとサーバー間のトラフィックを残します。

したがって、SYNPROXY はあらゆるタイプの TCP トラフィックに使用できます。コンテンツ自体を妨げないため、暗号化されていないトラフィックと暗号化されたトラフィックの両方に使用できます。

と言った…

サーバーのないポートではSYNPROXYを設定できません(動作しません)。

したがって、閉じたポートの場合はサーバーが必要です。偽のサーバーかもしれませんが、とにかくサーバーです。

Python - Scapy - すべてのポートを開いた状態で表示

関連:

Syn Cookieなどいいえ働く

関連情報