Apache httpd : mod_security の設定2024/02/01 |
[mod_security] モジュールを有効にして、Web Application Firewall (WAF) を設定します。 |
|
[1] | [mod_security] をインストールします。 |
root@www:~ # pkg install -y ap24-mod_security
|
[2] | [mod_security] を有効化します。 |
root@www:~ #
vi /usr/local/etc/apache24/modules.d/280_mod_security.conf # 全てコメント解除 LoadModule unique_id_module libexec/apache24/mod_unique_id.so LoadModule security2_module libexec/apache24/mod_security2.so Include /usr/local/etc/modsecurity/*.conf
root@www:~ #
vi /usr/local/etc/modsecurity/modsecurity.conf # 7行目 : デフォルトはブロックせずにロギングのみ行う検知モード [SecRuleEngine DetectionOnly] # ブロックする場合は [SecRuleEngine On] に変更 SecRuleEngine DetectionOnly ..... ..... |
[3] |
セキュリティルールの書式は以下の通りです。
⇒ SecRule VARIABLES OPERATOR [ACTIONS]
各パラメータの種類は非常に多いため、詳細は以下の公式ドキュメントを参照ください。
https://github.com/SpiderLabs/ModSecurity/wiki |
[4] | セキュリティルールの設定を例示します。 |
root@www:~ #
vi /usr/local/etc/modsecurity/localrules.conf # ルールにマッチした時のデフォルトアクションを定義 # レスポンスボディフェーズで処理を停止しログを記録して 406 を返す SecDefaultAction "phase:2,deny,log,status:406" # リクエスト URI に [etc/passwd] が含まれる SecRule REQUEST_URI "etc/passwd" "id:'500001'" # リクエスト URI に [../] が含まれる SecRule REQUEST_URI "\.\./" "id:'500002'" # 引数に [<SCRIPT] (小文字含む) が含まれる SecRule ARGS "<[Ss][Cc][Rr][Ii][Pp][Tt]" "id:'500003'" # 引数に [SELECT FROM] (小文字含む) が含まれる SecRule ARGS "[Ss][Ee][Ll][Ee][Cc][Tt][[:space:]]+[Ff][Rr][Oo][Mm]" "id:'500004'" service apache24 restart
|
[5] | 設定した文字列を含めてアクセスすると、ブロックモードでは、以下のようにアクセス拒否されます。 |
[6] | [mod_security] のログは以下の場所に保管されています。パターンマッチした場合は以下のようなログが記録されます。 |
root@www:~ # cat /var/log/modsec_audit.log --0db23374-A-- [01/Feb/2024:14:03:53.922429 +0900] ZbsmOZG1oaXNG3gprGLB8wAAAAM 10.0.0.5 65030 10.0.0.31 443 --0db23374-B-- GET /?q=%3Cscript%3E HTTP/1.1 Host: www.srv.world Connection: keep-alive sec-ch-ua: "Not A(Brand";v="99", "Microsoft Edge";v="121", "Chromium";v="121" sec-ch-ua-mobile: ?0 sec-ch-ua-platform: "Windows" Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Sec-Fetch-Site: none Sec-Fetch-Mode: navigate Sec-Fetch-User: ?1 Sec-Fetch-Dest: document Accept-Encoding: gzip, deflate, br Accept-Language: ja,en;q=0.9,en-GB;q=0.8,en-US;q=0.7 ..... ..... |
Sponsored Link |