安裝官方 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進去