CentOS 7.9 安裝nginx + ModSecurity

閱讀時間約 11 分鐘

安裝官方 nginx

先在/etc/yum.repos.d新增一個nginx.repo的檔案

並加入以下內容

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

這樣在 yum install nginx 的時候就會是最新的stable version

安裝依賴套件

yum install -y epel-release
yum groupinstall -y 'Development Tools'

yum install -y git lmdb lmdb-devel libxml2 libxml2-devel pcre pcre-devel curl libcurl-devel GeoIP GeoIP-devel yajl yajl-devel

Compile Modsecurity Lib

先 clone

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

安裝

cd ModSecurity
git submodule init
git submodule update
./build.sh
./configure
make
make install

在 build.sh 的時候會出現像錯誤的訊息

fatal: No names found, cannot describe anything.
不用管他
#2024/08/14增加
./configure出現 gcc錯誤需更新gcc版本
yum -y install centos-release-scl
因為centos官方已經不在支援centos 7/8更新,需更換yum domain
sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo
sed -i s/^#.*baseurl=http/baseurl=https/g /etc/yum.repos.d/*.repo
sed -i s/^mirrorlist=http/#mirrorlist=https/g /etc/yum.repos.d/*.repo
yum -y install devtoolset-8
scl enable devtoolset-8 bash
gcc -v


下載 nginx 與 modsecurity-nginx connector

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

下載 nginx 的 source 之前要看自己的 nginx 版本

nginx -v

可以看到

目前stable版本是 1.12.1

所以就下載 1.12.1的source

wget https://nginx.org/download/nginx-1.12.1.tar.gz
tar zxvf nginx-1.12.1.tar.gz

進入source並compile mod security module

cd nginx-1.12.1
./configure --with-compat --add-dynamic-module=../ModSecurity-nginx
make modules
cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules

設定 modsecurity

在 /etc/nginx/nginx.conf 加入 load_module

load_module modules/ngx_http_modsecurity_module.so;

接下來就跟官方那邊教學會不一樣

我就按照之前我寫的那篇

把OWASP TOP 10的rule都加進去

Modsecurity 基本設定

mkdir /etc/nginx/conf/modsecurity
cp ModSecurity/modsecurity.conf-recommended /etc/nginx/conf/modsecurity/modsecurity.conf
git clone https://github.com/coreruleset/coreruleset.git
cp -r coreruleset/rules /etc/nginx/conf/modsecurity/
cp coreruleset/crs-setup.conf.example /etc/nginx/conf/modsecurity/crs-setup.conf


開啟Modsecurity

在要啟動 Modsecurity 的 server 區塊內

加入以下設定

server {
....
....
modsecurity on;
modsecurity_rules_file /etc/nginx/modsecurity.conf;
}

#2021/04/20註記 排除太嚴格的rules

server {
....
....

modsecurity_rules '
SecRuleRemoveById 941310 933210 931100 942100
';
}

最後記得把 /var/log/nginx 資料夾 owner 改成nginx

這樣發生問題 modsecurity才能寫log進去


僅為工作上的紀錄
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Jerry CHU的工作日誌 的其他內容
vi /etc/nginx/conf.d/default.conf # IPv4 allow 103.21.244.0/22; allow 103.22.200.0/22; allow 103.31.4.0/22; allow 104.16.0.0/13; allow 104.24.0.0/14;
vi /root/php-fpm.sh #!/bin/bash php_url="http://localhost/hscheck.php" RESULT='curl -I $php_url | grep "HTTP/1.1 502"' if [ -n "$RESULT" ]; then
vi /etc/nginx/conf.d/default.conf # IPv4 allow 103.21.244.0/22; allow 103.22.200.0/22; allow 103.31.4.0/22; allow 104.16.0.0/13; allow 104.24.0.0/14;
vi /root/php-fpm.sh #!/bin/bash php_url="http://localhost/hscheck.php" RESULT='curl -I $php_url | grep "HTTP/1.1 502"' if [ -n "$RESULT" ]; then
你可能也想看
Google News 追蹤
安裝 sudo apt update sudo apt upgrade ​sudo apt install g++-12 gcc-12 sudo apt install g++-11 gcc-11 驗證安裝​ gcc-12 --version 成功訊息​ gcc-12 (Ubuntu 12.3.
首先開啓終端機 切換成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
sudo apt update sudo apt install apache2 ======================檢視=====================  sudo systemctl status apache2
Thumbnail
這篇文章將會提供在伺服器上安裝憑證的步驟,包括下載憑證,設定php.ini以及重新啟動Web Server等。
Thumbnail
GitLab 是一個 DevOps、基於 Web 的免費開源平台 Git 儲存庫,為開發人員提供了所有必要的功能。它是一個用於開發 DevOps 應用程式的一體式平台。 GitLab 允許您執行原始碼管理、監控、安全性和專案規劃任務。 Update system packages: sudo
Update system packages sudo apt update && sudo apt upgrade -y Install additional dependencies sudo apt-get install wget software-properties-common
sudo apt-get install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6 安裝版本查找: http
Thumbnail
本教程將引導您在 Ubuntu 系統上啟用 SSH、配置防火牆規則以允許入站連接,並更改預設 SSH 連接埠以增強安全性。包括更新系統、安裝OpenSSH伺服器、更改連接埠、設定防火牆、檢查規則和重新啟動服務等步驟。
安裝 sudo apt update sudo apt upgrade ​sudo apt install g++-12 gcc-12 sudo apt install g++-11 gcc-11 驗證安裝​ gcc-12 --version 成功訊息​ gcc-12 (Ubuntu 12.3.
首先開啓終端機 切換成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
sudo apt update sudo apt install apache2 ======================檢視=====================  sudo systemctl status apache2
Thumbnail
這篇文章將會提供在伺服器上安裝憑證的步驟,包括下載憑證,設定php.ini以及重新啟動Web Server等。
Thumbnail
GitLab 是一個 DevOps、基於 Web 的免費開源平台 Git 儲存庫,為開發人員提供了所有必要的功能。它是一個用於開發 DevOps 應用程式的一體式平台。 GitLab 允許您執行原始碼管理、監控、安全性和專案規劃任務。 Update system packages: sudo
Update system packages sudo apt update && sudo apt upgrade -y Install additional dependencies sudo apt-get install wget software-properties-common
sudo apt-get install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6 安裝版本查找: http
Thumbnail
本教程將引導您在 Ubuntu 系統上啟用 SSH、配置防火牆規則以允許入站連接,並更改預設 SSH 連接埠以增強安全性。包括更新系統、安裝OpenSSH伺服器、更改連接埠、設定防火牆、檢查規則和重新啟動服務等步驟。