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

閱讀時間約 5 分鐘
ModSecurity 是普遍應用之 公開網頁程式防火牆 ( 可 搭配 OWASP (Open Web Application Security Project) 維護的免費核心規則集 Core Rule Set CRS 初始設計 為 Apache HTTP Server 之模組 後續發展成 http 封包過濾軟體 亦支援 Microsoft IIS 、NGINX 等伺服器平台 。
  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,可以先測試是否能夠使用,會另外再開篇章說明

4會員
12Content count
所有文章都是將自已工作上的經驗,透過篇章的方式,希望能夠將技術白話文,讓想入門的工程師能夠清楚的理解, 出版的頻率會是幾個月一篇,也有可能是一星期好幾篇,就看當下是否有空閒產出。某些特定文章會希望以付費方式呈現,如果有什麼問題,歡迎大家隨時留言
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
本文介紹了在中國大陸申辦手機號和銀聯卡所需的準備事項,包括臺胞證、中國大陸住址、實名制手機、臺灣住址等,並分享了申辦的經驗。
在這個快速變遷的數位時代,「部落格寫作網路賺錢方法」已成為一個引人注目且充滿潛力的主題。部落格早已不再僅是個人的文字紀錄空間,更是一個線上創業的據點,成為分享知識、建立品牌、實現夢想的重要平台。這本指南將帶領讀者深入探討部落格寫作如何成為一種有益可圖的事業,不僅滿足寫作的樂趣,更能開啟賺錢的大門。
Thumbnail
經常在社群上看到有人詢問為什麼我的「網站名稱」是網址?要如何修改出現在搜尋結果頁上的網站名稱?因此,本篇文章將解釋什麼是網站名稱、如何撰寫及新增網站名稱。
恒生银行(股票代码:0013.HK)作为香港四大银行之一,以其强大的跨境金融服务和专业的财富管理著称。恒生银行不仅与汇丰集团紧密合作,在香港及中国大陆市场均有广泛的业务覆盖。 恒生银行作为汇丰集团的成员之一,专注于为香港和中国大陆客户提供全面的银行服务。其优势在于汇丰全球网络的支持,客户可以方便地
Thumbnail
在雲端建立AKS後,運行後有許多Container會被外部服務呼叫使用。但我們知道當我們佈署到AKS,如果要被外面服務呼叫,就要在YAML將Type設定成Loadbalance,一旦這樣設定,就會變成每個Container就會多出一個對外的IP,Container變多了,對外IP就會擴增很快,也不好
Thumbnail
保護後端重要資訊 在 django 專案中我們會把設定都寫在 settings.py 內,包含了 SECRET_KEY 等機密資訊,通常專案都會做版本控制上 git,但把這些機密資訊也上 git 是很不好的一件事,畢竟 github 也是曾經被駭過的,所以最好是把這些不想讓別人知道的資訊寫在另外一個
Thumbnail
打包網頁 在部署網站之前,我們要先來打包我們的網頁前端專案 為什麼要打包呢?什麼是打包呢?這有點像是編譯,如果你寫過 C 應該講到這裡就理解為什麼要這樣做了 在網頁開發中網頁內容最原始就是直接用 html 下去寫,但一個成熟的開發者會善用框架來開發,不論是用 vue 或 react,樣式的部分也會從
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
I’m sure that I would forget it again after a few months, so let’s take note of it. Installation We need to use homebrew to install certbot. renew
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
本文介紹了在中國大陸申辦手機號和銀聯卡所需的準備事項,包括臺胞證、中國大陸住址、實名制手機、臺灣住址等,並分享了申辦的經驗。
在這個快速變遷的數位時代,「部落格寫作網路賺錢方法」已成為一個引人注目且充滿潛力的主題。部落格早已不再僅是個人的文字紀錄空間,更是一個線上創業的據點,成為分享知識、建立品牌、實現夢想的重要平台。這本指南將帶領讀者深入探討部落格寫作如何成為一種有益可圖的事業,不僅滿足寫作的樂趣,更能開啟賺錢的大門。
Thumbnail
經常在社群上看到有人詢問為什麼我的「網站名稱」是網址?要如何修改出現在搜尋結果頁上的網站名稱?因此,本篇文章將解釋什麼是網站名稱、如何撰寫及新增網站名稱。
恒生银行(股票代码:0013.HK)作为香港四大银行之一,以其强大的跨境金融服务和专业的财富管理著称。恒生银行不仅与汇丰集团紧密合作,在香港及中国大陆市场均有广泛的业务覆盖。 恒生银行作为汇丰集团的成员之一,专注于为香港和中国大陆客户提供全面的银行服务。其优势在于汇丰全球网络的支持,客户可以方便地
Thumbnail
在雲端建立AKS後,運行後有許多Container會被外部服務呼叫使用。但我們知道當我們佈署到AKS,如果要被外面服務呼叫,就要在YAML將Type設定成Loadbalance,一旦這樣設定,就會變成每個Container就會多出一個對外的IP,Container變多了,對外IP就會擴增很快,也不好
Thumbnail
保護後端重要資訊 在 django 專案中我們會把設定都寫在 settings.py 內,包含了 SECRET_KEY 等機密資訊,通常專案都會做版本控制上 git,但把這些機密資訊也上 git 是很不好的一件事,畢竟 github 也是曾經被駭過的,所以最好是把這些不想讓別人知道的資訊寫在另外一個
Thumbnail
打包網頁 在部署網站之前,我們要先來打包我們的網頁前端專案 為什麼要打包呢?什麼是打包呢?這有點像是編譯,如果你寫過 C 應該講到這裡就理解為什麼要這樣做了 在網頁開發中網頁內容最原始就是直接用 html 下去寫,但一個成熟的開發者會善用框架來開發,不論是用 vue 或 react,樣式的部分也會從
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
I’m sure that I would forget it again after a few months, so let’s take note of it. Installation We need to use homebrew to install certbot. renew