インストール
- EPELリポジトリ
# yum install mod_security mod_security_crs
設定
/etc/httpd/conf.d/mod_security.conf (抜粋)
# Maximum request body size we will # accept for buffering #SecRequestBodyLimit 131072 SecRequestBodyLimit 5242880 SecRequestBodyNoFilesLimit 51200
-
/etc/httpd/modsecurity.d/modsecurity_localrules.conf
# Drop your local rules in here. # White List IP SecRule REMOTE_ADDR "@pmFromFile /etc/httpd/modsecurity.d/whitelist_ip.txt" \ "phase:1,id:'1000001',nolog,allow,ctl:ruleEngine=Off,ctl:auditEngine=Off" # White List URI SecRule REQUEST_URI "@pmFromFile /etc/httpd/modsecurity.d/whitelist_uri.txt" \ "phase:1,id:'1000002',nolog,allow,ctl:ruleEngine=Off,ctl:auditEngine=Off" # White List URI 2 SecRule REQUEST_URI "@rx ^\/Etc\/" \ "phase:1,id:'1000003',nolog,allow,ctl:ruleEngine=Off,ctl:auditEngine=Off" # White List Sub-Domain SecRule REQUEST_HEADERS:Host "@pmFromFile /etc/httpd/modsecurity.d/whitelist_subdomain.txt" \ "phase:1,id:'1000004',nolog,allow,ctl:ruleEngine=Off,ctl:auditEngine=Off" # ZmEu Attack / phpMyAdmin SecRule REQUEST_URI "@rx (?i)\/(php-?My-?Admin[^\/]*|mysqlmanager|myadmin|pma2005|pma\/scripts|w00tw00t[^\/]+)\/" \ "severity:alert,id:'0000013',deny,log,status:400,msg:'Unacceptable folder.',severity:'2'"
- mod_security-2.7.1 でエラーが出るから適当にid追加したけど、idの振り方のルールってどこにあるのかな?
ModSecurity: No action id present within the rule
- mod_security-2.7.1 でエラーが出るから適当にid追加したけど、idの振り方のルールってどこにあるのかな?
/etc/httpd/modsecurity.d/activated_rules/~deactivated_rules.conf
アルファベット順で最後に読み込ませるためにファイル名先頭に「~」を付けている。# Deactivated rules # id:950120 Possible Remote File Inclusion (RFI) Attack: Off-Domain Reference/Link SecRuleRemoveById 950120 # id:958291 Range: field exists and begins with 0. SecRuleRemoveById 958291 # id:960024 Meta-Character Anomaly Detection Alert - Repetative Non-Word Characters SecRuleRemoveById 960024 # id:981245 Detects basic SQL authentication bypass attempts 2/3 SecRuleRemoveById 981245
/etc/httpd/modsecurity.d/whitelist_ip.txt
mod_security による制限を行わない IP アドレスを列挙する。
コメントは行頭から「#」で始める。# localhost 127.0.0.1 # example.com xxx.xxx.xxx.xxx # example.net yyy.yyy.yyy.yyy
/etc/httpd/modsecurity.d/whitelist_uri.txt
mod_security による制限を行わない URI を列挙する。/cgi-bin/etc/PrintEnv.cgi /cgi-bin/etc/PrintEnv_txt.cgi /cgi-bin/etc/index.cgi /cgi-bin/etc/testCGI.cgi
/etc/httpd/modsecurity.d/whitelist_subdomain.txt
mod_security による制限を行わないホスト名を列挙する。# WebApp1 vh1.takeash.net
-
/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_20_protocol_violations.conf
- id:958291 "Range: 0-", mp4 等のストリーミングや分割ダウンロードが行われるファイルのダウンロードで引っかかる。
- /etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_40_generic_attacks.conf
- id:960024 "Repetative Non-Word Characters", 日本語等の非ラテン文字が引っかかる。
リンク
- http://modsecurity.org/
- hashdos攻撃をmod_securityで防御する(CentOS+yum編) - 徳丸浩の日記
- Attack by ZmEu - The Linux Page phpMyAdmin 脆弱性スキャンスクリプト対策
- 黒ぶちメガネのblog » mod_securityのホワイトリスト、ブラックリストの書き方メモ
- 禁煙できないSEの独り言: ModSecurity 2.5.12の導入
- (続)spammer対策 - ねこ様にもてあそばれる日々(2006-05-03)
- mod_securityでWebサーバを守る(第1回) - ソフテック
- Webアプリケーションに潜むセキュリティホール
- UNIX的なアレ:gihyo.jp出張所
- Webセキュリティの小部屋