web-dev-qa-db-ja.com

文字列によるTCPDumpおよびIPTablesDROP

tcpdump -nlASX -s 0 -vvv port 80を使用すると、次のようになります。

14:58:55.121160 IP (tos 0x0, ttl 64, id 49764, offset 0, flags [DF], proto TCP (6), length 1480)
    206.72.206.58.http > 2.187.196.7.4624: Flags [.], cksum 0x6900 (incorrect -> 0xcd18), seq 1672149449:1672150889, ack 4202197968, win 15340, length 1440
        0x0000:  4500 05c8 c264 4000 4006 0f86 ce48 ce3a  E....d@[email protected].:
        0x0010:  02bb c407 0050 1210 63aa f9c9 fa78 73d0  .....P..c....xs.
        0x0020:  5010 3bec 6900 0000 0f29 95cc fac4 2854  P.;.i....)....(T
        0x0030:  c0e7 3384 e89a 74fa 8d8c a069 f93f fc40  ..3...t....i.?.@
        0x0040:  1561 af61 1cf3 0d9c 3460 aa23 0b54 aac0  .a.a....4`.#.T..
        0x0050:  5090 ced1 b7bf 8857 c476 e1c0 8814 81ed  P......W.v......
        0x0060:  9e85 87e8 d693 b637 bd3a 56ef c5fa 77e8  .......7.:V...w.
        0x0070:  3035 743a 283e 89c7 ced8 c7c1 cff9 6ca3  05t:(>........l.
        0x0080:  5f3f 0162 ebf1 419e c410 7180 7cd0 29e1  _?.b..A...q.|.).
        0x0090:  fec9 c708 0f01 9b2f a96b 20fe b95a 31cf  ......./.k...Z1.
        0x00a0:  8166 3612 bac9 4e8d 7087 4974 0063 1270  .f6...N.p.It.c.p

IPTablesを使用して文字列を介してブロックするには何をプルしますか。または、共通点がある攻撃をブロックするためのより良い方法はありますか?

質問:そのIPパケットから任意の部分を選択して、それを文字列と呼ぶことはできますか?

iptables -A INPUT -m string --alog bm --string attack_string -j DROP

言い換えると、場合によっては、TTL = xxxで禁止し、攻撃のTTLが同じである場合にそれを使用できます。確かにいくつかの正当なパケットをブロックしますが、それがボックスを維持することを意味する場合は、攻撃がなくなるまで機能しますが、IPTablesでブロックするパケット内の他の一般的なものを見つける方法を学びたいと思います

1
Tiffany Walker

iptables -A INPUT -m string --alog bm --string attack_string -j DROP


このアイデアにはいくつかの問題があります。

まず、関連する ドキュメント を確認する必要があります。

この試合は注意して使用してください。多くの人が、DROPターゲットとともに、この一致を使用してワームを阻止したいと考えています。これは大きな間違いです。これは、IDS回避方法によって無効になります。

同様に、多くの人がこの一致を、文字列POSTを含むHTTPパケットをドロップしてPOSTまたはGETなどのHTTPの特定の関数を停止する手段として使用しています。これを理解してくださいさらに、Word POSTのHTMLコンテンツは、前者の方法では削除されます。この一致は、ユーザーランドの興味深いパケットをキューに入れることができるように設計されています。より良い分析、それだけです。これに基づいてパケットをドロップすると、IDS回避方法によって無効になります。


-stringディレクティブの実際の目的は、IDSシステムで処理するためにパケットを別のキューまたはチェーンに配置することです。レイヤー7情報を全体的/動作的に解釈するように、または署名マッチングを使用して、「不良」と判断されたらドロップするように設計されていません。したがって、第2に、-stringディレクティブはユースケースに対して十分に洗練されておらず、保持したいパケットをドロップしてしまう可能性があります。

また、-stringにフィードできる文字列がパケットに含まれていないことにも気付くでしょう。 TCPDumpで示されるパケットは、(おそらく)ASCIに変換されると読み取れなくなります。 -string引数は、実際には、パケットに文字列が含まれているHTTPPostコマンドなどを探すために設計されています。 iptablesを署名マッチングIDSシステムとして使用するというアイデアを実行したい場合は、マッチング機能を使用して特定のビットパターンを検索することをお勧めします。

第3に、そして最も重要なこととして、サービス拒否に関係するパケットがマシンに到達し、ファイアウォールによって処理されるまでに、損傷はすでに発生しています。サービス拒否攻撃を大幅に軽減するには、アップストリームプロバイダーと協力して、サーバーに到達する前にトラフィックをブロックします

2
user62491