[NGINX] ModSecurity #1 如何在CentOS裡 加入Nginx ModSecurity

更新於 發佈於 閱讀時間約 6 分鐘

ModSecurity 是普遍應用之 公開網頁程式防火牆 ( 可 搭配 OWASP (Open Web Application Security Project) 維護的免費核心規則集 Core Rule Set CRS 初始設計 為 Apache HTTP Server 之模組 後續發展成 http 封包過濾軟體 亦支援 Microsoft IIS 、NGINX 等伺服器平台 。

raw-image
  1. 安裝相依套件
$ sudo yum install -y gcc-c++ pcre-devel zlib-devel make unzip git

2. 使用 yum 安裝必要工具

$ sudo yum install -y autoconf automake libtool

3. 安裝 ModSecurity

$ git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /tmp/ModSecurity
$ cd /tmp/ModSecurity

$ git submodule init
$ git submodule update

$ ./build.sh
$ ./configure
$ make #這裡會等好幾分鐘
$ sudo make install

4. 安裝 Nginx 開發套件

$ yum install -y nginx-devel

5. 下載 ngx_http_modsecurity_module

$ git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /tmp/ModSecurity-nginx

6. 下載 Nginx來重新編譯,但實際是用原本的nginx

# 先檢查版本
$ nginx -v

# 根據版本下載相對應的nginx版本,否則最後重啟nginx時會報錯
$ wget https://nginx.org/download/nginx-1.20.1.tar.gz
$ tar -xzvf nginx-1.20.1.tar.gz
$ cd nginx-1.20.1

7. 編譯 Nginx,加入 ModSecurity 模組

$ ./configure --with-compat --add-dynamic-module=/tmp/ModSecurity-nginx
$ make modules

8. 複製 ModSecurity 模組到 Nginx 的 modules 目錄下

# 需要先建立/etc/nginx/modules目錄
$ mkdir /etc/nginx/modules
$ sudo cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules/

9. 設定 Nginx 設定檔,加入 ModSecurity 的設定

# in /etc/nginx/nginx.conf

load_module /etc/nginx/modules/ngx_http_modsecurity_module.so;
http {
# …
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;
# …
}

10. 設定 ModSecurity 的規則檔案,要注意路徑

# 新增目錄及檔案
$ mkdir /etc/nginx/modsec
$ vim /etc/nginx/modsec/main.conf

# 在 /etc/nginx/modsec/main.conf 裡加入

# /etc/nginx/modsec/main.conf
SecRuleEngine On
# log位置
SecAuditLog /var/log/nginx/modsec_audit.log
SecAuditLogParts ABIJDEFHZ
# 輸出為JSON以便 解析
SecAuditLogFormat JSON

# 對於與規則匹配的任何請求, 將默認操作配置為”阻止”。
SecDefaultAction "phase:1, deny, log"

11. 完成後重新啟動 Nginx,要用restart 不能用reload

$ sudo systemctl restart nginx

備註:當遇到重啟nginx失敗時,可以先去看nginx error.log,如果是出現下面的錯誤訊息,應該就是selinux擋住了

dlopen() "/etc/nginx/modules/ngx_http_modsecurity_module.so" failed (/etc/nginx/modules/ngx_http_modsecurity_module.so: failed to map segment from shared object) in /etc/nginx/nginx.conf:13

解決方案可以是先寬鬆selinux(下面指令),之後再重啟一次就可以

$ setenforce 0

目前還沒加上rule,可以先測試是否能夠使用,會另外再開篇章說明



留言
avatar-img
留言分享你的想法!
avatar-img
Daniel 的沙龍
4會員
12內容數
所有文章都是將自已工作上的經驗,透過篇章的方式,希望能夠將技術白話文,讓想入門的工程師能夠清楚的理解, 出版的頻率會是幾個月一篇,也有可能是一星期好幾篇,就看當下是否有空閒產出。某些特定文章會希望以付費方式呈現,如果有什麼問題,歡迎大家隨時留言
Daniel 的沙龍的其他內容
2023/09/29
filebeat的作用就像是一隻看門狗(watch dog),當看門狗監測到任何風吹草動(log產生變化)時,就立即事件告訴主人(logstash)。
Thumbnail
2023/09/29
filebeat的作用就像是一隻看門狗(watch dog),當看門狗監測到任何風吹草動(log產生變化)時,就立即事件告訴主人(logstash)。
Thumbnail
2023/09/27
此篇我們會將Nginx log修改成為Logstash可以正確辨識的格式。
Thumbnail
2023/09/27
此篇我們會將Nginx log修改成為Logstash可以正確辨識的格式。
Thumbnail
2023/09/23
這系列要介紹如何使用ELK架構(Elastic)及Filebeat來監控nginx的access.log。我會針對每個步驟寫出一篇文章來介紹系統該如何設定,如果有錯誤的地方,也麻煩多多指教。
Thumbnail
2023/09/23
這系列要介紹如何使用ELK架構(Elastic)及Filebeat來監控nginx的access.log。我會針對每個步驟寫出一篇文章來介紹系統該如何設定,如果有錯誤的地方,也麻煩多多指教。
Thumbnail
看更多
你可能也想看
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
最近我在使用NextCloud遇到了一個問題,就是點進去應用程式商店頁面後,無法顯示常用的行事曆、任務、專案管理這些應用程式來安裝。 這是因爲使用紅帽系的發行版都會預設安裝SELinux軟體來提高系統安全性,所以因爲權限關係會擋住NextCloud執行,所以這個問題其實只要做相關SELinux配置
Thumbnail
最近我在使用NextCloud遇到了一個問題,就是點進去應用程式商店頁面後,無法顯示常用的行事曆、任務、專案管理這些應用程式來安裝。 這是因爲使用紅帽系的發行版都會預設安裝SELinux軟體來提高系統安全性,所以因爲權限關係會擋住NextCloud執行,所以這個問題其實只要做相關SELinux配置
Thumbnail
ModSecurity 是普遍應用之 公開網頁程式防火牆 ( 可 搭配 OWASP (Open Web Application Security Project) 維護的免費核心規則集 Core Rule Set CRS 初始設計 為 Apache HTTP Server 之模組 後續發展成 htt
Thumbnail
ModSecurity 是普遍應用之 公開網頁程式防火牆 ( 可 搭配 OWASP (Open Web Application Security Project) 維護的免費核心規則集 Core Rule Set CRS 初始設計 為 Apache HTTP Server 之模組 後續發展成 htt
Thumbnail
之前我已經成功在fedora架設nextcloud了,不過現在還無法讓其他台電腦連到NextCloud所以這部份需要設定的有 firewall(防火牆) Apache HTTP服務器的NextCloud網站設定文件 NextCloud配置文件。 請防火牆開放80port 顯示系統內建服務名稱
Thumbnail
之前我已經成功在fedora架設nextcloud了,不過現在還無法讓其他台電腦連到NextCloud所以這部份需要設定的有 firewall(防火牆) Apache HTTP服務器的NextCloud網站設定文件 NextCloud配置文件。 請防火牆開放80port 顯示系統內建服務名稱
Thumbnail
打包網頁 在部署網站之前,我們要先來打包我們的網頁前端專案 為什麼要打包呢?什麼是打包呢?這有點像是編譯,如果你寫過 C 應該講到這裡就理解為什麼要這樣做了 在網頁開發中網頁內容最原始就是直接用 html 下去寫,但一個成熟的開發者會善用框架來開發,不論是用 vue 或 react,樣式的部分也會從
Thumbnail
打包網頁 在部署網站之前,我們要先來打包我們的網頁前端專案 為什麼要打包呢?什麼是打包呢?這有點像是編譯,如果你寫過 C 應該講到這裡就理解為什麼要這樣做了 在網頁開發中網頁內容最原始就是直接用 html 下去寫,但一個成熟的開發者會善用框架來開發,不論是用 vue 或 react,樣式的部分也會從
Thumbnail
歷經千辛萬苦,終於要來架站啦!首先先來介紹我們的架站工具 Nginx,最常用的架站工具主要有兩個,Apache 和 Nginx Apache 的歷史悠久,使用的人數也最多,之前在選擇架站工具時,考量的點是 Apache 比較肥,設定也比較難寫,所以最後選擇 Nginx 作為我的架站工具 Nginx
Thumbnail
歷經千辛萬苦,終於要來架站啦!首先先來介紹我們的架站工具 Nginx,最常用的架站工具主要有兩個,Apache 和 Nginx Apache 的歷史悠久,使用的人數也最多,之前在選擇架站工具時,考量的點是 Apache 比較肥,設定也比較難寫,所以最後選擇 Nginx 作為我的架站工具 Nginx
Thumbnail
Recently, I add some useful settings for my nginx web server. I would like to take a note of some basic and useful settings of nginx. http server
Thumbnail
Recently, I add some useful settings for my nginx web server. I would like to take a note of some basic and useful settings of nginx. http server
Thumbnail
上一篇有提到﹝NGINX﹞低消耗高效能的原由,正來至於它優秀的架構設計,其架構主要包括:『模組化設計』、『事件驅動架構』、『請求多階段非同步處理』、『管理程式與多工程式設計』、『記憶體池設計』。 而這邊透過自己的理解,來專門介紹『模組化設計』,以此來幫助自己認識NGINX架構的內容。 核心模組:
Thumbnail
上一篇有提到﹝NGINX﹞低消耗高效能的原由,正來至於它優秀的架構設計,其架構主要包括:『模組化設計』、『事件驅動架構』、『請求多階段非同步處理』、『管理程式與多工程式設計』、『記憶體池設計』。 而這邊透過自己的理解,來專門介紹『模組化設計』,以此來幫助自己認識NGINX架構的內容。 核心模組:
Thumbnail
Development environment of Laravel. Nginx, php, mysql and centos 7
Thumbnail
Development environment of Laravel. Nginx, php, mysql and centos 7
Thumbnail
什麼是NGINX ﹝NGINX﹞是一款免費的開源軟體的非同步框架的Web Server
Thumbnail
什麼是NGINX ﹝NGINX﹞是一款免費的開源軟體的非同步框架的Web Server
Thumbnail
本筆記紀錄如何在Linux(CentOS 8)安裝Nginx, MySQL, PHP環境。...
Thumbnail
本筆記紀錄如何在Linux(CentOS 8)安裝Nginx, MySQL, PHP環境。...
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News