私はApacheを備えたサーバーを持っていますが、最近mod_security2をインストールしました。
私のApacheバージョンはApache v2.2.3であり、mod_security2.cを使用しています
これはエラーログからのエントリでした:
[Wed Mar 24 02:35:41 2010] [error]
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:47:31 2010] [error]
[client 202.75.211.90] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:47:49 2010] [error]
[client 95.228.153.177] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:48:03 2010] [error]
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
access_logからのエラーはここにあります:
202.75.211.90 - -
[29/Mar/2010:10:43:15 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - -
[29/Mar/2010:11:40:41 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - -
[29/Mar/2010:12:37:19 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
このようにmod_security2を設定してみました:
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecFilterSelective REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"
mod_security2のことは、SecFilterSelectiveを使用できず、エラーが発生することです。代わりに、次のようなルールを使用します。
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecRule REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"
これでも機能しません。私はもう何をすべきかわかりません。誰にもアドバイスがありますか?
アップデート1
mod_securityを使用してこの問題を解決できる人はいないことがわかります。これまでのところ、ip-tablesを使用するのがこれを行うための最良のオプションのように思えますが、ipは1日数回サーバーを変更するため、ファイルは非常に大きくなると思います。
私は2つの他の解決策を思いついた、誰かがそれらについて良いかどうかについてコメントすることができます。
私の頭に浮かぶ最初の解決策は、Apacheエラーログからこれらの攻撃を除外することです。これにより、他の緊急エラーが発生したときに簡単に見つけることができ、長いログを吐き出す必要がなくなります。
2番目のオプションの方が良いと思います。それは、正しい方法で送信されないホストをブロックすることです。この例では、w00tw00t攻撃はホスト名なしで送信されるため、正しい形式ではないホストをブロックできると思います。
更新2
答えをたどった後、私は次の結論に達しました。
Apacheのカスタムロギングを使用するには、いくつかの不必要なリソースが消費されます。本当に問題がある場合は、おそらく何も欠落していない完全なログを確認する必要があります。
ヒットを無視して、エラーログを分析するより良い方法に集中することをお勧めします。ログにフィルターを使用することは、これに適したアプローチです。
主題に関する最終的な考え
上記の攻撃は、少なくとも最新のシステムがあればマシンには届かないので、基本的に心配はありません。
エラーログとアクセスログの両方が非常に大きくなるため、しばらくしてから実際の攻撃からすべての偽の攻撃を除外することは困難です。
これが何らかの形で発生するのを防ぐと、リソースが消費されます。重要でないものにリソースを無駄にしないことをお勧めします。
現在使用しているソリューションはLinux logwatchです。ログの概要が送信され、それらはフィルタリングされてグループ化されます。これにより、重要なものと重要でないものを簡単に分離できます。
助けてくれてありがとう、そしてこの投稿が他の誰かにも役立つことを願っています。