RHEL 6.7 DNSサーバーがあり、特定のドメインを含むパケットをドロップしようとしています。たとえば、DNSサーバーの1つがランダムサブドメイン攻撃に参加しました。外部ホストまたは他のDNSサーバーが私たちにクエリを送信し、サーバーは特定のホスト名に対して独自の再帰クエリを開始します。照会されたすべてのホスト名は無効でランダムであり、存在しません。 tcpdumpでは、これらのクエリの1つは次のとおりです。
123.123.123.123.54729 > 140.205.228.52.53: [bad udp cksum 0x3701 -> 0x0d53!] 37401 A? llij.x99moyu.net. (34)
この例では、DNS サーバーは 123.123.123.123 アドレスであり、ルックアップは他の DNS サーバーに接続して処理されます。私たちは、RRLまたは再帰クライアントの速度制限をサポートしていない古いバージョンのBINDを実行しています。 iptablesで速度制限を試しましたが、目的の結果が得られませんでした。今、私はiptablesを使った文字列マッチングを調べていますが、まだ成功していません。まったく動作しないようです。私がグーグルしたところによると、これは非常に単純なようです。これはiptablesのルールです。
-A INPUT -p udp --dport 53 -m string --algo bm --string x99moyu.net. -j DROP
これがiptablesコマンドの外観です。
#iptables -L -vxn
0 0 DROP udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 STRING match "x99moyu.net." ALGO name bm TO 65535
このルールはx99moyu.netを介してサーバーに入ってくるすべてのパケットを破棄する必要があります。ドメインが存在します(パケットのどこにでも)。しかし、これはうまくいきません。この規則はINPUTチェーンの最上位にあるので、これがまず適用されるべきであることを知っています。フィールドの終わりのピリオドを取り除き、前にピリオドを入れてみましたが、それもできませんでした。私も --string x99moyu.net を置いてみました。 --algoの前にありますが、何の効果もありません。 kmpアルゴリズムも試してみましたが、役に立ちませんでした。
私が間違っていることを教えてくれて助けるためのiptables文字列パターンマッチング経験がある人はいますか?