ModSecurity初期設定

提供:MDWiki
移動: 案内, 検索

まえおき

FreeBSD 8.2 にインストールした httpd 2.2.21 および mod_security 2.5.13 を想定する。ModSecurity の設定ファイルは、/usr/local/etc/apache22/modsecurity ディレクトリに全て入れているものとした。また、httpd.conf の設定内容は、

LoadFile /usr/local/lib/libxml2.so
LoadModule security2_module /usr/local/libexec/apache22/mod_security2.so
<IfModule security2_module>
    Include /usr/local/etc/apache22/modsecurity/*.conf
</IfModule>

となっている。

initial.conf

ModSecurity自体のグローバル設定を格納する。最初は CRS (OWASP ModSecurity Core Rule Set) から抜き出した以下の項目を有効にする。

SecDebugLog /home/philsci/www/logs/mod_security.log
SecDebugLogLevel 9
SecComponentSignature "core ruleset/2.2.2"
SecDefaultAction "phase:2,deny,log"
SecAction "phase:1,id:'981207',t:none,nolog,pass, \
setvar:tx.critical_anomaly_score=5, \
setvar:tx.error_anomaly_score=4, \
setvar:tx.warning_anomaly_score=3, \
setvar:tx.notice_anomaly_score=2"
SecAction "phase:1,id:'981208',t:none,nolog,pass,setvar:tx.inbound_anomaly_score_level=5"
SecAction "phase:1,id:'981209',t:none,nolog,pass,setvar:tx.outbound_anomaly_score_level=4"
SecAction "phase:1,id:'981210',t:none,nolog,pass,setvar:tx.paranoid_mode=0"
SecAction "phase:1,id:'981211',t:none,nolog,pass,setvar:tx.max_num_args=255"
SecAction "phase:1,id:'981212',t:none,nolog,pass, \
setvar:'tx.allowed_methods=GET HEAD POST OPTIONS', \
setvar:'tx.allowed_request_content_type=application/x-www-form-urlencoded multipart/form-data text/xml application/xml application/x-amf', \
setvar:'tx.allowed_http_versions=HTTP/0.9 HTTP/1.0 HTTP/1.1', \
setvar:'tx.restricted_extensions=.asa/ .asax/ .ascx/ .axd/ .backup/ .bak/ .bat/ .cdx/ .cer/ .cfg/ .cmd/ .com/ .config/ .conf/ .cs/\
 .csproj/ .csr/ .dat/ .db/ .dbf/ .dll/ .dos/ .htr/ .htw/ .ida/ .idc/ .idq/ .inc/ .ini/ .key/ .licx/ .lnk/ .log/ .mdb/ .old/ .pass/ .pdb/ .pol/\
 .printer/ .pwd/ .resources/ .resx/ .sql/ .sys/ .vb/ .vbs/ .vbproj/ .vsdisco/ .webinfo/ .xsd/ .xsx/', \
setvar:'tx.restricted_headers=/Proxy-Connection/ /Lock-Token/ /Content-Range/ /Translate/ /via/ /if/'"
SecRule REQUEST_HEADERS:Content-Type "text/xml" \
        "chain,phase:1,id:'981053',t:none,t:lowercase,pass,nolog"
        SecRule REQBODY_PROCESSOR "!@streq XML" "ctl:requestBodyProcessor=XML"
SecRule REQUEST_HEADERS:User-Agent "^(.*)$"\
 "phase:1,id:'981217',t:none,pass,nolog,t:sha1,t:hexEncode,setvar:tx.ua_hash=%{matched_var}"
SecRule REQUEST_HEADERS:x-forwarded-for "^\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b"\
 "phase:1,id:'981225',t:none,pass,nolog,capture,setvar:tx.real_ip=%{tx.1}"
SecRule &TX:REAL_IP "!@eq 0" "phase:1,id:'981226',t:none,pass,nolog,initcol:global=global,initcol:ip=%{tx.real_ip}_%{tx.ua_hash}"
SecRule &TX:REAL_IP "@eq 0"  "phase:1,id:'981218',t:none,pass,nolog,initcol:global=global,initcol:ip=%{remote_addr}_%{tx.ua_hash}"

# anti brute force attack
#SecAction "phase:1,id:'981214',t:none,nolog,pass, \
#setvar:'tx.brute_force_protected_urls=/login.jsp /partner_login.php', \
#setvar:'tx.brute_force_burst_time_slice=60', \
#setvar:'tx.brute_force_counter_threshold=10', \
#setvar:'tx.brute_force_block_timeout=300'"

# DoS protection
#SecAction "phase:1,id:'981215',t:none,nolog,pass, \
#setvar:'tx.dos_burst_time_slice=60', \
#setvar:'tx.dos_counter_threshold=100', \
#setvar:'tx.dos_block_timeout=600'"

これで httpd -k restart してみて、ウェブアクセスに問題がないことを確認し、ログも確認しておく。





リンク

個人用ツール
名前空間
変種
操作
案内
ツールボックス