[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
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
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
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
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News