-
概述
- 嘗試記錄 post 請求里的內容
-
背景
- 之前試過 dumpio 模塊
- 成功了
- 但是效果不好
- 這次決定嘗試下 mod_security
- 之前試過 dumpio 模塊
-
環境
- 虛擬機 - OS
- VirtualBox6.0
- CentOS7.2
- apache
- 2.4.6-90
- yum 安裝
- 宿主機 - OS
- Win10
- 網絡
- 虛擬機使用 橋接模式
- 虛擬機 - OS
1. 思路
-
概述
- 簡單思路
-
思路
- 校驗模塊
- 安裝模塊
- 理解配置
- 修改配置
- 驗證日志
-
書上
- 反正也說的很簡單, 我就略過了
- 反正最后也基本不會有啥用
- 反正也說的很簡單, 我就略過了
1. 校驗模塊
-
概述
- 校驗當前 apache 加載的模塊
-
命令
# 1. 顯示當前 httpd 加載的模塊 # 2. 配合 grep 加載查看具體模塊 > httpd -M | grep 'security'
-
結果
- 模塊沒有安裝
- 那就裝
- 模塊沒有安裝
2. 安裝模塊
-
概述
- 添加 mod_security
-
安裝 mod_security
-
概述
- 兩個方案
- 編譯安裝
- yum 安裝
- 兩個方案
-
編譯安裝
- 略
- 自己也裝上過, 但是感覺這塊還是不熟悉
- 略
-
yum 安裝
-
使用的版本, 是 modsecurity2
-
命令
# 記得使用 rpm 驗證 > yum install -y mod_security mod_security-devel
-
-
-
重啟 apache
-
命令
# 確保安裝成功后, 記得重啟 httpd > apachectl graceful
-
3. 理解配置
-
概述
- 簡單描述下 新增的配置項
-
配置文件
- /etc/httpd/conf/httpd.conf
- 沒有一點變化
- /etc/httpd/conf.d
- mod_security.conf
- 新增的配置文件
- 里面是 mod_security 的 主要配置
- mod_security.conf
- /etc/httpd/conf.modules.d
- 10-mod_security.conf
- module 的導入文件
- 導入 mod_security 和其他相關模塊
- module 的導入文件
- 10-mod_security.conf
- /etc/httpd/conf/httpd.conf
4. 修改配置
- 概述
- 嘗試使用 mod_security 記錄 body 日志
1. 檢查加載
-
概述
- 檢查模塊是否加載
-
命令
# 如果沒有發現 security2, 請確保安裝成功, 並嘗試重啟 httpd > http -M | grep 'security2_module'
-
疑問
- yum 一下, 重啟 httpd 就能用了?
- 是的沒錯...
- yum 一下, 重啟 httpd 就能用了?
2. 嘗試1: 直接開啟, 觀察反應
-
前提
- 之前步驟驗證通過
-
結果
- log 目錄下, 多了文件, 但是沒有內容
- modsec_audit.log
- modsec_debug.log
- log 目錄下, 多了文件, 但是沒有內容
-
疑問
- 模塊加載了, 難道是 配置不對?
- 結果
- 得去查 mod_security 的相關文檔
3. 嘗試2: 修改配置
-
配置 SecAuditLogRelevantStatus
-
概述
- 配置 安全審計日志 關注的返回狀態
-
默認值
# 文檔上說, 是記錄 4XX, 5XX 中除了 404 以外的值 # 文檔里說的是 正則, 但是它給的表達式, 我是真的沒看懂... SecAuditLogRelevantStatus "^(?:5|4(?!04))"
-
嘗試
# 暫時造不出 4xx, 5xx, 我改下配置試試 # 改完記得重啟服務器 SecAuditLogRelevantStatus "200"
-
-
結果
-
日志如下
--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--
-
結果
- 日志很清楚
- 記錄下的信息, 很多
- A
- 訪問時間
- 訪問 ip
- 源端口
- 目的 ip
- 目的端口
- B
- 請求頭部
- C
- 請求 body
- F
- 響應頭部
- E
- 響應 body
- H
- 其他信息
- Z
- 未知
- A
- 形式
- 相比 dumpio, 也好很多
- 內容清晰明了
- 而且還和 error 日志分開, 便於分析整理
- 相比 dumpio, 也好很多
- 記錄下的信息, 很多
- 日志很清楚
-
5. 日志驗證
- 概述
- 上一部分一起講了, 這里就不再復述
2. 屏蔽 mod_security
-
概述
- 嘗試 屏蔽 mod_security 模塊
-
想法
- 模塊感覺很不錯
- 但是如果不需要, 我也想把它關了
-
嘗試: 干掉 conf.module.d 里的 配置文件
-
命令
> mv 10-mod_security.conf 10-mod_security.conf.bak > apachectl graceful
-
驗證
# 驗證成功, 模塊沒有被加載 > httpd -M | grep security
-
-
后續
- 如果有需要, 會整理下 mods_ecurity 的相關配置
- 那個正則真的看的我蒙蔽, 是不是需要復習一下了...
其他
-
ref
-
編譯安裝
- 感覺這塊真的是 完全不會
- 以后有需要再看吧
-
正則
- 那個正則讓我一臉懵逼
- 回頭復習
- 那個正則讓我一臉懵逼
-
模塊安裝
- 感覺
- 書上寫的並不靠譜
- 思路
- yum 安裝
- 優點
- 方便. yum 好后, 直接重啟 apache 就行
- 缺點
- 版本無法指定
- 優點
- 編譯安裝
-
前提
- yum 沒有模塊
- yum 版本不對
-
優點
- 靈活
-
缺點
- 流程復雜
- 主要是我不熟悉
- 編譯有點慢
- 還是我的缺點, 電腦不好...
- 流程復雜
-
- 選擇
- 如果沒有特殊要求, 我願意先使用 yum 來安裝
- 嘗試一下使用
- 順便找找 不足
- 而且安裝, 維護也比較方便
- 如果沒有特殊要求, 我願意先使用 yum 來安裝
- yum 安裝
- 感覺
-
其他
- 這些日志, 如果多起來, 絕對令人頭痛
- 看來那些管理日志的工具, 還真的學一學
- 這些日志, 如果多起來, 絕對令人頭痛