[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,可以先測試是否能夠使用,會另外再開篇章說明

為什麼會看到廣告
avatar-img
4會員
12內容數
所有文章都是將自已工作上的經驗,透過篇章的方式,希望能夠將技術白話文,讓想入門的工程師能夠清楚的理解, 出版的頻率會是幾個月一篇,也有可能是一星期好幾篇,就看當下是否有空閒產出。某些特定文章會希望以付費方式呈現,如果有什麼問題,歡迎大家隨時留言
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
安裝官方 nginx 先在/etc/yum.repos.d新增一個nginx.repo的檔案 並加入以下內容 [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgc
Thumbnail
  在開始操作Web Service之前,要先做一些前置作業IIS的安裝,再開始建置Web Service相關內容,最後就是連線測試。   IIS(Internet Information Services)是網際網路資訊服務,可以讓網站使用HTTP/HTTPS、FTP/FTPS、SMTP 等等的
首先開啓終端機 切換成su帳號 sudo -i 安裝Apache dnf install httpd 新增Apache配置檔 vim /etc/httpd/conf.d/nextcloud.conf 將以下內容貼上後存檔(:wq) <VirtualHost *:80> Docu
Thumbnail
GitLab為程式碼管理倉庫,且從8.0開始提供CI/CD。 安裝 更新套件索引 sudo apt update 安裝postfix sudo apt install ca-certifi​cates curl openssh-server postfix 切換目錄 cd /t
NIST資訊安全框架(NIST Cybersecurity Framework)是美國國家標準與技術研究所(National Institute of Standards and Technology)所提出的一套資訊安全架構標準......
Thumbnail
這篇文章將會提供在伺服器上安裝憑證的步驟,包括下載憑證,設定php.ini以及重新啟動Web Server等。
Thumbnail
本教程將引導您在 Ubuntu 系統上啟用 SSH、配置防火牆規則以允許入站連接,並更改預設 SSH 連接埠以增強安全性。包括更新系統、安裝OpenSSH伺服器、更改連接埠、設定防火牆、檢查規則和重新啟動服務等步驟。
Thumbnail
本篇將分享關於nginx ingress controller的基本操作,包括預先準備、流程、實際操作、將domain name 映射到Ingress LB IP、部署Demo App 驗證以及結論。
Thumbnail
env 環境變數的設定,通常是為為了 server 而設定的,能快速的切換狀態,但現在的網頁開始,前端的範圍逐漸往後端靠近,所以在設定,也會有 client 的變數會想要在 .env 的情況。此篇就是以 nuxt 為實作,分享此內容 前端架構 最常見的 front 架構,就是把專案 buil
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
安裝官方 nginx 先在/etc/yum.repos.d新增一個nginx.repo的檔案 並加入以下內容 [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgc
Thumbnail
  在開始操作Web Service之前,要先做一些前置作業IIS的安裝,再開始建置Web Service相關內容,最後就是連線測試。   IIS(Internet Information Services)是網際網路資訊服務,可以讓網站使用HTTP/HTTPS、FTP/FTPS、SMTP 等等的
首先開啓終端機 切換成su帳號 sudo -i 安裝Apache dnf install httpd 新增Apache配置檔 vim /etc/httpd/conf.d/nextcloud.conf 將以下內容貼上後存檔(:wq) <VirtualHost *:80> Docu
Thumbnail
GitLab為程式碼管理倉庫,且從8.0開始提供CI/CD。 安裝 更新套件索引 sudo apt update 安裝postfix sudo apt install ca-certifi​cates curl openssh-server postfix 切換目錄 cd /t
NIST資訊安全框架(NIST Cybersecurity Framework)是美國國家標準與技術研究所(National Institute of Standards and Technology)所提出的一套資訊安全架構標準......
Thumbnail
這篇文章將會提供在伺服器上安裝憑證的步驟,包括下載憑證,設定php.ini以及重新啟動Web Server等。
Thumbnail
本教程將引導您在 Ubuntu 系統上啟用 SSH、配置防火牆規則以允許入站連接,並更改預設 SSH 連接埠以增強安全性。包括更新系統、安裝OpenSSH伺服器、更改連接埠、設定防火牆、檢查規則和重新啟動服務等步驟。
Thumbnail
本篇將分享關於nginx ingress controller的基本操作,包括預先準備、流程、實際操作、將domain name 映射到Ingress LB IP、部署Demo App 驗證以及結論。
Thumbnail
env 環境變數的設定,通常是為為了 server 而設定的,能快速的切換狀態,但現在的網頁開始,前端的範圍逐漸往後端靠近,所以在設定,也會有 client 的變數會想要在 .env 的情況。此篇就是以 nuxt 為實作,分享此內容 前端架構 最常見的 front 架構,就是把專案 buil