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がこれらの接続ドロップをアクセスログに追加し続けることができますが、エラーログには何も追加しない方法はありますか?
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を使用して前者をオーバーライドできます。