シナリオ:iptables
DPI エンジンが Netfilter キューを監視しているホスト用のルールを作成しました。ファイアウォール ルールは、トラフィックが特定ipset
のホストから来ているかどうかに応じて、このホストに着信するトラフィックを異なる Netfilter キューにエンキューします。
チェーンではFORWARD
、すべての接続がそれぞれ異なるキューに入れられますNFQUEUES
。DPI エンジンは、iptables によって送信されたパケットをユーザー空間キューで監視し、禁止された接続が見つかった場合は、パケットに特別な値でマークを付けます。DPI エンジンは、禁止されたパケットをスタックに再挿入します。チェーンでは、POSTROUTING
接続にその特別な値でマークされているかどうかを確認し、マークされている場合は、DROP
それらを削除し、
すべて正常に動作していますが...
問題: DPIエンジンは良いですが、完璧ではありません。時々、
- 禁止されていると識別されるべきトラフィックが禁止されていると識別されていないため、ブロックされません。
- 禁止されたトラフィックはブロックされますが、すぐにはブロックされません。その間に、禁止された接続によって、
RELATED
禁止としてマークされていない別の接続 (conntrack マシンによると ) が開かれる可能性がありますが、関連する接続もブロックしたいと思います。
2 番目のケースは、私が対処したいケースです。ケース 2 の例として、DPI エンジンが YouTube をブロックしたいが、すぐにはブロックできないとします。YouTube 接続は、DPI エンジンから SSL としてラベル付けされた別の接続を開くことができます。DPI エンジンは最終的に YouTube をブロックしますが、SSL 接続は自由に使用できます。どの接続が SSL 接続を開いたかに関係なく、DPI エンジンに SSL 接続をブロックするように指示することはできません。
考慮事項: で説明したようにシナリオ連鎖的にやってくるパケットはPOSTROUTING
0(デフォルト値なのでDPIエンジンは何もしない)でマークされるか、特別な値(DPIエンジンが禁止された接続を検知してマークした)でマークされる。
iptables -t mangle -A POSTROUTING -m mark --mark DROPVALUE -j DROP
ほとんどの場合は十分ですが、問題セクションでは、禁止されている接続に関連するが、DPIエンジンではそのようには認識されないと書きました。禁止された接続によって作成された場合でも、そのプロトコルはブラックリストに登録されていないため、禁止されているとは見なされません。。ブラックリストに登録できないSSL
ので、これが正しいです。HTTPS
RELATED
禁止されている接続への接続をブロックする必要があります。RELATED
また、ESTABLISHED
(私が正しく理解していれば) 特定の接続を参照するのではなく、禁止されている接続を参照する必要があります。
質問RELATED
:ドロップする(またはすでにドロップされている)接続への接続をドロップすることは可能ですかiptables
? または、 での何らかのハックconntrack
が必要ですか?
ご提案がありましたら、よろしくお願いいたします。
答え1
誤解していますRELATED
。これは、単一のアドレスが確立する可能性のあるすべての接続に使用されるわけではありません。これは、FTP 制御接続に関連付けられた FTP データ ストリームや、オープン接続に関連付けられた ICMP エラー メッセージなど、実際に関連するデータにのみ使用されます。実際に と一致する接続はほとんどありませんRELATED
。