[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
    本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
    Thumbnail
    本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
    Thumbnail
    這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
    Thumbnail
    這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
    Thumbnail
    5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
    Thumbnail
    5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
    Thumbnail
    《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
    Thumbnail
    《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
    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