WAF(Web Application Firewall ) のModSecurity導入したら、Wordpress、MovableTypeでエラーになった・・・・

 

ルールをキビしくしたからって事もあると思うけど、ルールをゆるくするのも違うと思うし・・・・・

 

まず、EPEL リポジトリの追加してからインストール

EPEL リポジトリ追加方法

https://centossrv.com/epel.shtml

 

ModSecurity導入

https://www.websec-room.com/2013/11/17/1019

ここに、IPAのWAF導入の仕方等のリンクもあります。

 

 

簡単にルールを適用外にするには、httpd.confの、Wordpress等を入れたディレクトリ(例えばwordpressディレクトリ)に以下を追記します。

<Directory "/var/www/html/wordpress">

<IfModule mod_security2.c>

   SecRuleEngine Off

</IfModule>

</Directory>

 

これで外れますが、何のためにWAFを導入したかわけのわからない事になります。

 

上記は検証環境とかでよいとは思いますが、外に公開する場合は、だめな方法です。

 

上記ははしょったやり方ですが、実際、ちゃんと動作させてやる場合、自分の場合ですが、まずセキュリティのルールを設定します。と言ってもデフォルトをちょっと変えただけです。

これも、https://www.websec-room.com/2013/12/06/1237を参照に クロスサイト・スクリプティングと SQL インジェクションだけにした場合の話です。そして、ログで、何が弾かれたか確認することを含めて、SecRuleEngine DetectionOnlyを設定します。

[root@localhost ~]# vi /etc/httpd/conf.d/mod_security.conf

<IfModule mod_security2.c>

    # ModSecurity Core Rules Set configuration

        IncludeOptional modsecurity.d/*.conf

      IncludeOptional modsecurity.d/activated_rules/*.conf

    Include modsecurity.d/activated_rules/modsecurity_crs_41_xss_attacks.conf

    Include modsecurity.d/activated_rules/modsecurity_crs_41_sql_injection_attacks.conf

    # Default recommended configuration

    #SecRuleEngine On

   SecRuleEngine DetectionOnly     ←Wordpress動作確認の為


 

 

その後、apahceを再起動し、wordpressにアクセスしてから、ログを確認します。

[root@localhost ~]#less /var/log/httpd/modsec_audit.log   ←ログ

~~~~~~~~~~~~~~~~~~~~

---e50d3d00-H--

Message: Warning. Pattern match "([\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\+\\=\\{\\}\\[\\]\\|\\:\\;\"\\'\\\xc2\xb4\\\xe2\x80\x99\\\xe2\x80\x98\\`\\<\\>].*?){4,}" at ARGS_NAMES:data[wp-refresh-post-nonces][post_id]. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_41_sql_injection_attacks.conf"] [line "159"] [id "981173"] [rev "2"] [msg "Restricted SQL Character Anomaly Detection Alert - Total # of special characters exceeded"] [data "Matched Data: - found within ARGS_NAMES:data[wp-refresh-post-nonces][post_id]: data[wp-refresh-post-nonces][post_id]"] [ver "OWASP_CRS/2.2.9"] [maturity "9"] [accuracy "8"] [tag "OWASP_CRS/WEB_ATTACK/SQL_INJECTION"]

Apache-Handler: application/x-httpd-php

Stopwatch: 1487313950994609 694681 (- - -)

Stopwatch2: 1487313950994609 694681; combined=10787, p1=165, p2=10609, p3=3, p4=1, p5=8, sr=63, sw=1, l=0, gc=0

Response-Body-Transformed: Dechunked

Producer: ModSecurity for Apache/2.7.3 (http://www.modsecurity.org/); OWASP_CRS/2.2.9.

Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips mod_auth_gssapi/1.4.0 mod_auth_kerb/5.4

Engine-Mode: "DETECTION_ONLY"

 

ここで確認するにはIDです。このIDを確認後、このIDを例外処置にする設定をします。

[root@localhost wp_4_2_2]# vi /etc/httpd/conf.d/mod_security.conf<IfModule mod_security2.c>
    # ModSecurity Core Rules Set configuration
        IncludeOptional modsecurity.d/*.conf
    #coment out
    #   IncludeOptional modsecurity.d/activated_rules/*.conf
    Include modsecurity.d/activated_rules/modsecurity_crs_41_xss_attacks.conf

~~~~省略~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    SecAuditLogType Serial
    SecAuditLog /var/log/httpd/modsec_audit.log
    SecArgumentSeparator &
    SecCookieFormat 0
    SecTmpDir /var/lib/mod_security
    SecDataDir /var/lib/mod_security
#wordpress 追加
SecRuleRemoveById 981173



</IfModule>

 

 

他の物も確認し、追記していきます。ちなみにphpmyadminを引っかかりますので、相当なIDを追記する必要があります。