Server - Apache - 日志 - 使用 mod_security 記錄請求 body


  1. 概述

    1. 嘗試記錄 post 請求里的內容
  2. 背景

    1. 之前試過 dumpio 模塊
      1. 成功了
      2. 但是效果不好
    2. 這次決定嘗試下 mod_security
  3. 環境

    1. 虛擬機 - OS
      1. VirtualBox6.0
      2. CentOS7.2
    2. apache
      1. 2.4.6-90
      2. yum 安裝
    3. 宿主機 - OS
      1. Win10
    4. 網絡
      1. 虛擬機使用 橋接模式

1. 思路

  1. 概述

    1. 簡單思路
  2. 思路

    1. 校驗模塊
    2. 安裝模塊
    3. 理解配置
    4. 修改配置
    5. 驗證日志
  3. 書上

    1. 反正也說的很簡單, 我就略過了
      1. 反正最后也基本不會有啥用

1. 校驗模塊

  1. 概述

    1. 校驗當前 apache 加載的模塊
  2. 命令

    # 1. 顯示當前 httpd 加載的模塊
    # 2. 配合 grep 加載查看具體模塊
    > httpd -M | grep 'security'
    
  3. 結果

    1. 模塊沒有安裝
      1. 那就裝

2. 安裝模塊

  1. 概述

    1. 添加 mod_security
  2. 安裝 mod_security

    1. 概述

      1. 兩個方案
        1. 編譯安裝
        2. yum 安裝
    2. 編譯安裝

        1. 自己也裝上過, 但是感覺這塊還是不熟悉
    3. yum 安裝

      1. 使用的版本, 是 modsecurity2

      2. 命令

        # 記得使用 rpm 驗證
        > yum install -y mod_security mod_security-devel
        
  3. 重啟 apache

    1. 命令

      # 確保安裝成功后, 記得重啟 httpd
      > apachectl graceful
      

3. 理解配置

  1. 概述

    1. 簡單描述下 新增的配置項
  2. 配置文件

    1. /etc/httpd/conf/httpd.conf
      1. 沒有一點變化
    2. /etc/httpd/conf.d
      1. mod_security.conf
        1. 新增的配置文件
        2. 里面是 mod_security 的 主要配置
    3. /etc/httpd/conf.modules.d
      1. 10-mod_security.conf
        1. module 的導入文件
          1. 導入 mod_security 和其他相關模塊

4. 修改配置

  1. 概述
    1. 嘗試使用 mod_security 記錄 body 日志

1. 檢查加載

  1. 概述

    1. 檢查模塊是否加載
  2. 命令

    # 如果沒有發現 security2, 請確保安裝成功, 並嘗試重啟 httpd
    > http -M | grep 'security2_module'
    
  3. 疑問

    1. yum 一下, 重啟 httpd 就能用了?
      1. 是的沒錯...

2. 嘗試1: 直接開啟, 觀察反應

  1. 前提

    1. 之前步驟驗證通過
  2. 結果

    1. log 目錄下, 多了文件, 但是沒有內容
      1. modsec_audit.log
      2. modsec_debug.log
  3. 疑問

    1. 模塊加載了, 難道是 配置不對?
    2. 結果
      1. 得去查 mod_security 的相關文檔

3. 嘗試2: 修改配置

  1. 配置 SecAuditLogRelevantStatus

    1. 概述

      1. 配置 安全審計日志 關注的返回狀態
    2. 默認值

      # 文檔上說, 是記錄 4XX, 5XX 中除了 404 以外的值
      # 文檔里說的是 正則, 但是它給的表達式, 我是真的沒看懂...
      SecAuditLogRelevantStatus "^(?:5|4(?!04))"
      
    3. 嘗試

      # 暫時造不出 4xx, 5xx, 我改下配置試試
      # 改完記得重啟服務器
      SecAuditLogRelevantStatus "200"
      
  2. 結果

    1. 日志如下

      --26b87c3b-A--
      [10/Mar/2020:14:10:07 +0800] XmcvP-Q2Il5IiC7G9bslrQAAAAA 192.168.2.6 51334 192.168.2.6 80
      --26b87c3b-B--
      POST /hello.html HTTP/1.1
      User-Agent: curl/7.29.0
      Host: 192.168.2.6
      Accept: */* 
      Content-Length: 16
      Content-Type: application/x-www-form-urlencoded
      
      --26b87c3b-C--
      {"key": "value"}
      --26b87c3b-F--
      HTTP/1.1 200 OK
      Last-Modified: Fri, 06 Mar 2020 16:37:46 GMT 
      ETag: "f-5a03245f92c80"
      Accept-Ranges: bytes
      Content-Length: 15
      Content-Type: text/html; charset=UTF-8
      
      --26b87c3b-E--
      
      --26b87c3b-H--
      Stopwatch: 1583820607575206 624 (- - -)
      Stopwatch2: 1583820607575206 624; combined=37, p1=25, p2=10, p3=0, p4=0, p5=2, sr=0, sw=0, l=0, gc=0
      Response-Body-Transformed: Dechunked
      Producer: ModSecurity for Apache/2.9.2 (http://www.modsecurity.org/).
      Server: Apache/2.4.6 (CentOS)
      Engine-Mode: "ENABLED"
      
      --26b87c3b-Z--
      
    2. 結果

      1. 日志很清楚
        1. 記錄下的信息, 很多
          1. A
            1. 訪問時間
            2. 訪問 ip
            3. 源端口
            4. 目的 ip
            5. 目的端口
          2. B
            1. 請求頭部
          3. C
            1. 請求 body
          4. F
            1. 響應頭部
          5. E
            1. 響應 body
          6. H
            1. 其他信息
          7. Z
            1. 未知
        2. 形式
          1. 相比 dumpio, 也好很多
            1. 內容清晰明了
            2. 而且還和 error 日志分開, 便於分析整理

5. 日志驗證

  1. 概述
    1. 上一部分一起講了, 這里就不再復述

2. 屏蔽 mod_security

  1. 概述

    1. 嘗試 屏蔽 mod_security 模塊
  2. 想法

    1. 模塊感覺很不錯
    2. 但是如果不需要, 我也想把它關了
  3. 嘗試: 干掉 conf.module.d 里的 配置文件

    1. 命令

      > mv 10-mod_security.conf 10-mod_security.conf.bak
      > apachectl graceful
      
    2. 驗證

      # 驗證成功, 模塊沒有被加載
      > httpd -M | grep security
      
  4. 后續

    1. 如果有需要, 會整理下 mods_ecurity 的相關配置
    2. 那個正則真的看的我蒙蔽, 是不是需要復習一下了...

其他

  1. ref

    1. yum 安裝
    2. Reference Manual (v2.x)
  2. 編譯安裝

    1. 感覺這塊真的是 完全不會
    2. 以后有需要再看吧
  3. 正則

    1. 那個正則讓我一臉懵逼
      1. 回頭復習
  4. 模塊安裝

    1. 感覺
      1. 書上寫的並不靠譜
    2. 思路
      1. yum 安裝
        1. 優點
          1. 方便. yum 好后, 直接重啟 apache 就行
        2. 缺點
          1. 版本無法指定
      2. 編譯安裝
        1. 前提

          1. yum 沒有模塊
          2. yum 版本不對
        2. 優點

          1. 靈活
        3. 缺點

          1. 流程復雜
            1. 主要是我不熟悉
          2. 編譯有點慢
            1. 還是我的缺點, 電腦不好...
      3. 選擇
        1. 如果沒有特殊要求, 我願意先使用 yum 來安裝
          1. 嘗試一下使用
          2. 順便找找 不足
          3. 而且安裝, 維護也比較方便
  5. 其他

    1. 這些日志, 如果多起來, 絕對令人頭痛
      1. 看來那些管理日志的工具, 還真的學一學


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM