WAF★ModSecurityのログファイル

2021年10月7日

ログファイルってだいたい何書いてあるかよくわからなかったりします。ここではModSecurityのログファイルの重要そうな所をピックアップして見ていこうと思います。

ModSecurityのログファイル

ModSecurityのログファイルはmodsec_audit.logという名前です。場所は次の通りです。

  • /var/log/httpd/modsec_audit.log

modsec_audit.logの中身

modsec_audit.logの中身を確認してみましょう。

--dbbe8534-A--
[09/Apr/2020:10:54:19 +0900] Xo6AS9Nyh38cvvC9mQ7G7AAAAAA 192.168.33.1 53301 192.168.33.13 80
--dbbe8534-B--
GET / HTTP/1.1
Host: 192.168.33.13
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: ja,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1

--dbbe8534-F--
HTTP/1.1 403 Forbidden
Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
ETag: "2d-432a5e4a73a80"
Accept-Ranges: bytes
Content-Length: 45
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

--dbbe8534-H--
Message: Access denied with code 403 (phase 2). Pattern match "^[\\d.:]+$" at REQUEST_HEADERS:Host. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "98"] [id "960017"] [rev "2"] [msg "Host header is a numeric IP address"] [data "192.168.33.13"] [severity "WARNING"] [ver "OWASP_CRS/2.2.9"] [maturity "9"] [accuracy "9"] [tag "OWASP_CRS/PROTOCOL_VIOLATION/IP_HOST"] [tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"] [tag "http://technet.microsoft.com/en-us/magazine/2005.01.hackerbasher.aspx"]
Apache-Error: [file "apache2_util.c"] [line 271] [level 3] [client 192.168.33.1] ModSecurity: Access denied with code 403 (phase 2). Pattern match "^[\\\\\\\\d.:]+$" at REQUEST_HEADERS:Host. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "98"] [id "960017"] [rev "2"] [msg "Host header is a numeric IP address"] [data "192.168.33.13"] [severity "WARNING"] [ver "OWASP_CRS/2.2.9"] [maturity "9"] [accuracy "9"] [tag "OWASP_CRS/PROTOCOL_VIOLATION/IP_HOST"] [tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"] [tag "http://technet.microsoft.com/en-us/magazine/2005.01.hackerbasher.aspx"] [hostname "192.168.33.13"] [uri "/"] [unique_id "Xo6AS9Nyh38cvvC9mQ7G7AAAAAA"]
Action: Intercepted (phase 2)
Stopwatch: 1586397259078580 16807 (- - -)
Stopwatch2: 1586397259078580 16807; combined=954, p1=772, p2=99, p3=0, p4=0, p5=82, sr=419, sw=1, l=0, gc=0
Producer: ModSecurity for Apache/2.9.2 (http://www.modsecurity.org/); OWASP_CRS/2.2.9.
Server: Apache/2.4.41 (IUS) OpenSSL/1.0.2k-fips
Engine-Mode: "ENABLED"

--dbbe8534-Z--

ログ内の区切りの先頭に"–*******-A–“のような表記があります。これがそれぞれのログ内の分類を表しておりその意味が下記の表の通りになります。

分類説明
A監査ログヘッダ
Bリクエストヘッダ
Cリクエストボディ
D未実装
E中間的なレスポンスボディ
F最終的なレスポンスボディ
G未実装
Hログ(本文)
Uリクエストボディ
Jアップロードされたファイルの情報
Kマッチしたルールの情報
Zログの終了

ボリュームが大きすぎて何を見たらわかりませんが、ログの中で見るべき重要な箇所はHの中のMessagefileidmsgです。その部分を取り出して見ましょう。

--dbbe8534-H--
Message: Access denied with code 403 (phase 2). Pattern match "^[\\d.:]+$" at REQUEST_HEADERS:Host.
[file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_21_protocol_anomalies.conf"]
[id "960017"][msg "Host header is a numeric IP address"]

これによると、

Message(エラー内容)は"アクセス拒否"

file(ルールファイル)は"modsecurity_crs_21_protocol_anomalies.conf"で引っかかった

id(このルールが適用されたid)は"960017″

msg(ルールが適用された理由)には"(ドメインではなく)数字のIPアドレスでアクセスされた為"だとあります。

もしこのセキュリティルールが不要ならばIDを指定してルールを適用しないようにすることができます。そのやり方をみてみましょう。

ルールファイルについての詳しい内容はこちらを参照してください。

ログによるapache(httpd.conf)の設定例

ログ内容を確認して、ModSecurityのルールが本当に必要かどうか確認して不要なら除外処理をhttpd.confに設定してみましょう。

①ブラウザで閲覧確認

ブラウザを開いて対象ディレクトリのサイトが正しく表示されるか確認しましょう。

②DetectionOnlyで起動

まずはModSecurityをDetectionOnly(検出のみ)モードで動かします。httpd.conf内に次のように記載します。

<Directory "/home/www/html">
    # mod_security(CRS)
    SecRuleEngine DetectionOnly
</Directory>

httpd.confを編集したらhttpdを再起動します。

systemctl restart httpd

③ログの確認

次にブラウザから対象ページを開いてください。ログが出力されているので確認します。

ログの場所は次の通りです。

vi /var/log/httpd/modsec_audit.log

中身はこんな風になっています。

--d59dc305-A--
[11/Apr/2020:12:28:20 +0900] XpE5VNnLrIPLl2efszrq6QAAAAA 192.168.33.1 54257 192.168.33.13 80
--d59dc305-B--
GET / HTTP/1.1
Host: 192.168.33.13
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: ja,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1

--d59dc305-F--
HTTP/1.1 200 OK
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

--d59dc305-E--

--d59dc305-H--
Message: Warning. Pattern match "^[\\d.:]+$" at REQUEST_HEADERS:Host. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "98"] [id "960017"] [rev "2"] [msg "Host header is a numeric IP address"] [data "192.168.33.13"] [severity "WARNING"] [ver "OWASP_CRS/2.2.9"] [maturity "9"] [accuracy "9"] [tag "OWASP_CRS/PROTOCOL_VIOLATION/IP_HOST"] [tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"] [tag "http://technet.microsoft.com/en-us/magazine/2005.01.hackerbasher.aspx"]
Message: Warning. Operator LT matched 5 at TX:inbound_anomaly_score. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_60_correlation.conf"] [line "33"] [id "981203"] [msg "Inbound Anomaly Score (Total Inbound Score: 3, SQLi=0, XSS=0): Host header is a numeric IP address"]
Apache-Error: [file "apache2_util.c"] [line 271] [level 3] [client 192.168.33.1] ModSecurity: Warning. Pattern match "^[\\\\\\\\d.:]+$" at REQUEST_HEADERS:Host. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "98"] [id "960017"] [rev "2"] [msg "Host header is a numeric IP address"] [data "192.168.33.13"] [severity "WARNING"] [ver "OWASP_CRS/2.2.9"] [maturity "9"] [accuracy "9"] [tag "OWASP_CRS/PROTOCOL_VIOLATION/IP_HOST"] [tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"] [tag "http://technet.microsoft.com/en-us/magazine/2005.01.hackerbasher.aspx"] [hostname "192.168.33.13"] [uri "/"] [unique_id "XpE5VNnLrIPLl2efszrq6QAAAAA"]
Apache-Error: [file "apache2_util.c"] [line 271] [level 3] [client 192.168.33.1] ModSecurity: Warning. Operator LT matched 5 at TX:inbound_anomaly_score. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_60_correlation.conf"] [line "33"] [id "981203"] [msg "Inbound Anomaly Score (Total Inbound Score: 3, SQLi=0, XSS=0): Host header is a numeric IP address"] [hostname "192.168.33.13"] [uri "/index.php"] [unique_id "XpE5VNnLrIPLl2efszrq6QAAAAA"]
Apache-Handler: application/x-httpd-php
Stopwatch: 1586575700721275 12580 (- - -)
Stopwatch2: 1586575700721275 12580; combined=1488, p1=532, p2=743, p3=2, p4=86, p5=125, sr=179, sw=0, l=0, gc=0
Response-Body-Transformed: Dechunked
Producer: ModSecurity for Apache/2.9.2 (http://www.modsecurity.org/); OWASP_CRS/2.2.9.
Server: Apache/2.4.41 (IUS) OpenSSL/1.0.2k-fips
Engine-Mode: "DETECTION_ONLY"

--d59dc305-Z--

--14aeac31-A--
[11/Apr/2020:12:28:25 +0900] XpE5WdnLrIPLl2efszrq6gAAAAA 192.168.33.1 54257 192.168.33.13 80
--14aeac31-B--
GET /favicon.ico HTTP/1.1
Host: 192.168.33.13
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Accept: image/webp,*/*
Accept-Language: ja,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive

--14aeac31-F--
HTTP/1.1 404 Not Found
Content-Length: 196
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1

--14aeac31-E--

--14aeac31-H--
Message: Warning. Pattern match "^[\\d.:]+$" at REQUEST_HEADERS:Host. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "98"] [id "960017"] [rev "2"] [msg "Host header is a numeric IP address"] [data "192.168.33.13"] [severity "WARNING"] [ver "OWASP_CRS/2.2.9"] [maturity "9"] [accuracy "9"] [tag "OWASP_CRS/PROTOCOL_VIOLATION/IP_HOST"] [tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"] [tag "http://technet.microsoft.com/en-us/magazine/2005.01.hackerbasher.aspx"]
Message: Warning. Operator LT matched 5 at TX:inbound_anomaly_score. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_60_correlation.conf"] [line "33"] [id "981203"] [msg "Inbound Anomaly Score (Total Inbound Score: 3, SQLi=0, XSS=0): Host header is a numeric IP address"]
Apache-Error: [file "apache2_util.c"] [line 271] [level 3] [client 192.168.33.1] ModSecurity: Warning. Pattern match "^[\\\\\\\\d.:]+$" at REQUEST_HEADERS:Host. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "98"] [id "960017"] [rev "2"] [msg "Host header is a numeric IP address"] [data "192.168.33.13"] [severity "WARNING"] [ver "OWASP_CRS/2.2.9"] [maturity "9"] [accuracy "9"] [tag "OWASP_CRS/PROTOCOL_VIOLATION/IP_HOST"] [tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"] [tag "http://technet.microsoft.com/en-us/magazine/2005.01.hackerbasher.aspx"] [hostname "192.168.33.13"] [uri "/favicon.ico"] [unique_id "XpE5WdnLrIPLl2efszrq6gAAAAA"]
Apache-Error: [file "apache2_util.c"] [line 271] [level 3] [client 192.168.33.1] ModSecurity: Warning. Operator LT matched 5 at TX:inbound_anomaly_score. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_60_correlation.conf"] [line "33"] [id "981203"] [msg "Inbound Anomaly Score (Total Inbound Score: 3, SQLi=0, XSS=0): Host header is a numeric IP address"] [hostname "192.168.33.13"] [uri "/favicon.ico"] [unique_id "XpE5WdnLrIPLl2efszrq6gAAAAA"]
Stopwatch: 1586575705346050 1720 (- - -)
Stopwatch2: 1586575705346050 1720; combined=1213, p1=284, p2=777, p3=0, p4=57, p5=95, sr=25, sw=0, l=0, gc=0
Response-Body-Transformed: Dechunked
Producer: ModSecurity for Apache/2.9.2 (http://www.modsecurity.org/); OWASP_CRS/2.2.9.
Server: Apache/2.4.41 (IUS) OpenSSL/1.0.2k-fips
Engine-Mode: "DETECTION_ONLY"

--14aeac31-Z--

内容はいっぱいありますが、上述の通り見るべきポイントはHの項目の中の次の4つです。

  • — H — の中のMessage
  • — H — の中のfile
  • — H — の中のid
  • — H — の中のmsg

ログを細かく見てみると次のように書いてあります。

  • Message: Warning. Pattern match “^[\d.:]+$" at REQUEST_HEADERS:Host.
  • file “modsecurity_crs_21_protocol_anomalies.conf"
  • id “960017"
  • msg “Host header is a numeric IP address"
  • Message: Warning. Operator LT matched 5 at TX:inbound_anomaly_score.
  • file “modsecurity_crs_60_correlation.conf"
  • id “981203"
  • msg “Inbound Anomaly Score (Total Inbound Score: 3, SQLi=0, XSS=0): Host header is a numeric IP address"

それぞれのルールに適用されたルールファイルとidが示されていてメッセージ(Messageとmsg)を読むと何となくブロック処理された理由がわかります。これらを参考にルールが本当に必要かどうか判断します。必要ならこのままでOK、不要なら除外します。ここでは除外の処理をします。

④ルールの除外処理

ログを確認して除外すべきidが確認出来たら、そのidをhttpd.confに記載します。記載場所は上記と同じで次のように記載します。

<Directory "/home/www/html">
    # mod_security(CRS)
    SecRuleEngine On
    SecRuleRemoveById 960017 981203
</Directory>

SecRuleEngineをDetectionOnly→Onに変えてModSecurityを通常起動し、次に除外すべきルールのidを記載します。

httpd.confを編集したら再起動です。

systemctl restart httpd

これでブラウザを開いて正常にウェブページが開いていれば完成です。

WAFModSecurity

Posted by Bright_Noah