web-dev-qa-db-ja.com

Apacheで「ModSecurity:Access denied」のログを停止するにはどうすればよいですか?

LinuxサーバーでApacheをセットアップし、mod_securityを有効にしました。次のような行がいくつかあります。

SecRule REQUEST_URI "^/*admin" drop,phase:1

私のウェブサイトには/adminがなく、ボットやハッカーに404ページを提供するためにサーバーリソースを無駄にしたくないためです。

/adminなどのページにアクセスするたびに、Apacheアクセスログに、コンテンツが0バイトのHTTP 301ステータスが返されたことがわかります(これはまさに私が望むものです)。ただし、ApacheエラーログにModSecurity: Access denied with connection close (phase 1). Pattern match "^/*admin" at REQUEST_URI.行も記録されます。

Mod_securityがこれらの接続ドロップをアクセスログに追加し続けることができますが、エラーログには何も追加しない方法はありますか?

2
user28412

ModSecurityのドキュメントから log が指定されていないことを確認してください:

説明:ルールの成功した一致を記録する必要があることを示します。

例:

SecAction phase:1,id:117,pass,initcol:ip=%{REMOTE_ADDR},log

このアクションは、Apacheerror logファイルとModSecurity監査ログへの一致を記録します。

代わりに nolog を指定してください:

説明errorおよび監査ログの両方にルールの一致が表示されないようにします。

SecRule REQUEST_HEADERS:User-Agent "Test" allow,nolog,id:121

Nologはnoauditlogを意味しますが、nolog、auditlogを使用して前者をオーバーライドできます。

2
dan