端くれプログラマの備忘録 ModSecurity [ModSecurity] 特定のルールだけを適用するには

[ModSecurity] 特定のルールだけを適用するには

Mod Securityをオンにしてみたいのだけど、一度に全部適用すると偽判定される可能性があるので、特定のルールだけ適用してMod Securityをしばらくテスト運用してみる。

デフォルトでは、ルールは以下ディレクトリに格納されている。

  • modsecurity.d/*.conf
    – modsecurity_crs_10_config.conf
  • modsecurity.d/activated_rules/*.conf
    – modsecurity_crs_20_protocol_violations.conf
    – modsecurity_crs_21_protocol_anomalies.conf
    – modsecurity_crs_23_request_limits.conf
    – modsecurity_crs_30_http_policy.conf
    – modsecurity_crs_35_bad_robots.conf
    – modsecurity_crs_40_generic_attacks.conf
    – modsecurity_crs_41_sql_injection_attacks.conf
    – modsecurity_crs_41_xss_attacks.conf
    – modsecurity_crs_42_tight_security.conf
    – modsecurity_crs_45_trojans.conf
    – modsecurity_crs_47_common_exceptions.conf
    – modsecurity_crs_48_local_exceptions.conf.example
    – modsecurity_crs_49_inbound_blocking.conf
    – modsecurity_crs_50_outbound.conf
    – modsecurity_crs_59_outbound_blocking.conf
    – modsecurity_crs_60_correlation.conf
  • modsecurity.d/local_rules/*.conf
    – modsecurity_localrules.conf

この中から、分かりやすいところでSQLインジェクションだけ適用してテスト運用する。

# vi /etc/httpd/conf.d/mod_security.conf
<IfModule mod_security2.c>
# Default recommended configuration
#SecRuleEngine DetectionOnly
SecRuleEngine On
...
# ModSecurity Core Rules Set and Local configuration
IncludeOptional modsecurity.d/*.conf
# IncludeOptional modsecurity.d/activated_rules/*.conf
IncludeOptional modsecurity.d/local_rules/*.conf

IncludeOptional modsecurity.d/activated_rules/modsecurity_crs_41_sql_injection_attacks.conf
</IfModule>

ログをクリアしておく。

# cd /var/log/httpd
# mkdir modsec_audit_old
# mv modsec_audit.log* modsec_audit_old

Apacheを再起動して設定を適用。

# service httpd restart

サイトが正しく表示されることを確認したら、テスト運用開始。