netfilterは、FTPの帯域外データ接続を制御接続に関連した状態にどのように追跡できますか?

netfilterは、FTPの帯域外データ接続を制御接続に関連した状態にどのように追跡できますか?

このURIの記事https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security_guide/sect-security_guide-firewalls-iptables_and_connection_tracking

RELATED - 新しい接続を要求しますが、既存の接続の一部であるパケットです。たとえば、FTPはポート21を使用して接続を確立しますが、データは他のポート(通常はポート20)から送信されます。

netfilter接続追跡メカニズムが帯域外ftpデータ接続トラフィックを制御接続状態にあるとマークできることRELATEDを示しますftp。次の質問があります。

1)デフォルトポート以外のポートを使用してデータ接続が確立されている場合は、同様の追跡操作を実行できますか?

2)もしそうなら、データ接続タプル(dst_ip、dst_prt、src_ip、src_prt)を見つけるためにFTPメッセージを通過しますか?私はこれが実装するにはあまりにも非現実的であることを知っています。それでは実際にこれをどうしますかnetfliter

ベストアンサー1

データ接続タプル(dst_ip、dst_prt、src_ip、src_prt)を見つけるためにFTPメッセージを通過しますか?私はこれが実装するにはあまりにも非現実的であることを知っています。

はい、それはまさにそのことです。なぜこれがそんなに非現実的だと思いますか?

ここでコードを直接見ることができます。 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/net/netfilter/nf_conntrack_ftp.c

編集:さて、後であなたの意見を聞いてみると、今あなたが何を意味するのか理解しているようです。

カーネルは、各TCP接続の最初の数パケットの先頭のみを分析してFTP制御接続のように見えることを確認し、さらに分析するために実際のFTP制御接続にのみフラグを立てます。 FTPのように見える接続のみがデータ接続タプルに対して監視されます。

しかし、数年前、この種の完全自動化された追跡が悪意のある目的で悪用される可能性があることが判明しました。したがって、最新のカーネルでは、それを必要とするプロトコルに対してiptables接続トレースヘルパールールを明示的に設定する必要があります。つまり、FTP接続にデフォルト以外の宛先ポートを使用する場合は、そのルールをカスタマイズする必要があります。ただし、Tracking Assistantを受信するインターフェイス、ポート、接続先/方向を完全に制御できるようになりました。

一般的なFTPの接続追跡ヘルパールールは次のとおりです。

iptables -t raw -A PREROUTING -p tcp --dport 21 -j CT --helper ftp

ファイアウォールが特定のインバウンドポートへの接続のみを許可する場合は、INPUTおよび/またはFORWARDチェーンで次の規則を使用してインバウンドアクティブFTP接続を許可する必要があります。

iptables -A FORWARD -m conntrack --ctstate RELATED -m helper --helper ftp -p tcp --dport 1024: -j ACCEPT

デフォルト以外のポートで制御接続を使用するデータ接続の場合は、ポート2121の制御接続に属するデータ接続を許可するなど、規則を少し変更する必要があります。

iptables -A FORWARD -m conntrack --ctstate RELATED -m helper --helper ftp-2121 -p tcp --dport 1024: -j ACCEPT

ところで、利用可能ないくつかの接続追跡ヘルパーモジュールがあります。

  • ftp明らかにFTPプロトコルの場合です。
  • ircインターネットリレーチャットプロトコルに使用されます。ポート番号はさまざまです。
  • netbios-nsWannaCryワームがSMB 1.0プロトコル(以前のNetBIOSスタイルのWindowsファイル共有に使用されていた)に致命的な欠陥があることを証明したので、もはや必要ありません。標準ポートは137/UDPです。
  • snmp単純なネットワーク管理プロトコルの場合、標準ポート161 / UDP。
  • RASおよびQ.931h.323ビデオ会議サブプロトコル(以前のMicrosoft NetMeetingなど)。ポートはそれぞれ1719/UDPおよび1720/TCPです。
  • sipSIPインターネットテレフォニープロトコルに使用されます。標準ポート5060はTCPとUDPをサポートします。
  • saneSANEスキャナソフトウェア用のネットワークプロトコル、標準ポート6566 / TCP。
  • pptpRFC2637 VPNの一形態であるポイントツーポイントトンネリングプロトコル。
  • tftpNATを介してTFTP接続を転送する必要がある場合。
  • amandaAmandaバックアップソフトウェアで使用されるネットワークプロトコル。

おすすめ記事