Red Hat Training
A Red Hat training course is available for RHEL 8
1.11.2. ModSecurity へのカスタムルールの追加
ModSecurity コアルールセット (CRS) に含まれるルールがシナリオに適合せず、追加の攻撃の可能性を防ぎたい場合は、カスタムルールを ModSecurity Web ベースアプリケーションファイアウォールで使用されるルールセットに追加できます。次の例は、単純なルールの追加を示しています。より複雑なルールを作成するには、ModSecurity Wiki Web サイトのリファレンスマニュアルを参照してください。
前提条件
- ModSecurity for Apache がインストールされ、有効になっている。
手順
任意のテキストエディターで
/etc/httpd/conf.d/mod_security.conf
ファイルを開きます。以下はその例です。# vi /etc/httpd/conf.d/mod_security.conf
SecRuleEngine On
で始まる行の後に、次のサンプルルールを追加します。SecRule ARGS:data "@contains evil" "deny,status:403,msg:'param data contains evil data',id:1"
前のルールでは、
data
パラメーターにevil
の文字列が含まれている場合、ユーザーによるリソースの使用を禁止しています。- 変更を保存し、エディターを終了します。
httpd
サーバーを再起動します。# systemctl restart httpd
検証
test.html
ページを作成します。# echo "mod_security test" > /var/www/html/test.html
httpd
サーバーを再起動します。# systemctl restart httpd
HTTP リクエストの
GET
変数に悪意のあるデータが含まれないtest.html
をリクエストします。$ curl http://localhost/test.html?data=good mod_security test
HTTP リクエストの
GET
変数に悪意のあるデータが含まれるtest.html
をリクエストします。$ curl localhost/test.html?data=xxxevilxxx <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access this resource.</p> </body></html>
/var/log/httpd/error_log
ファイルを確認し、param data containing an evil data
メッセージでアクセスを拒否するログエントリーを見つけます。[Wed May 25 08:01:31.036297 2022] [:error] [pid 5839:tid 139874434791168] [client ::1:45658] [client ::1] ModSecurity: Access denied with code 403 (phase 2). String match "evil" at ARGS:data. [file "/etc/httpd/conf.d/mod_security.conf"] [line "4"] [id "1"] [msg "param data contains evil data"] [hostname "localhost"] [uri "/test.html"] [unique_id "Yo4amwIdsBG3yZqSzh2GuwAAAIY"]
関連情報