株式会社ヴァンデミックシステム

Blog

<スポンサーリンク>

公式サイトはこちら。
この通りにやれば動きます。
https://computingpost.medium.com/how-to-install-modsecurity-3-with-nginx-on-almalinux-9-cfc69fecc4b4

パッケージマネージャーデフォルトでないnginxをインストール

# インストール済みのnginxを削除
dnf remove nginx
dnf install dnf-utils -y

# nginxレポジトリを設定
tee /etc/yum.repos.d/nginx-mainline.repo<<EOF
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/9/x86_64/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF


tee /etc/yum.repos.d/nginx-stable.repo<<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/9/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF

# nginx インストールする
yum-config-manager --enable nginx-mainline
dnf -y install nginx

systemctl start nginx
systemctl enable nginx
nginx -v

nginxソースをダウンロードする
modsecurityをコンパイルするためにnginxのソースを落としてくる

# nginxソースダウンロード
mkdir /usr/local/src/nginx && cd /usr/local/src/nginx
wget http://nginx.org/download/nginx-1.25.3.tar.gz
tar xvzf nginx-1.25.3.tar.gz

# 解凍確認
ls

# ファイルが解凍されている
nginx-1.25.3  nginx-1.25.3.tar.gz

mod securityインストール

dnf install git -y

# mod
git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/
cd /usr/local/src/ModSecurity/

# epelインストール
dnf -y install epel-release
dnf -y install epel-next-release

# 依存モジュールをインストール
dnf install doxygen yajl-devel gcc-c++ flex bison yajl curl-devel zlib-devel pcre-devel autoconf automake git curl make libxml2-devel pcre-static pkgconfig libtool httpd-devel redhat-rpm-config wget curl openssl openssl-devel geos geos-devel geocode-glib-devel geolite2-city geolite2-country nano -y

# remiインストール
dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm -y

# 依存モジュールインストール
dnf --enablerepo=remi install GeoIP-devel -y

# gitsubmoduleを最新化する
git submodule init
git submodule update

# ビルドする
./build.sh
./configure
make
make install

ModSecurity-nginxをインストール

# modsecurity-nginxをダウンロード
git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /usr/local/src/ModSecurity-nginx/

# コンパイル
cd /usr/local/src/nginx/nginx-1.25.3/
./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx
make modules
cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules/

nginx.confにmodsecurityモジュールを読み込ませる

# nginx.confを編集
vim /etc/nginx/nginx.conf
# ngixn.confの先頭に追記
load_module modules/ngx_http_modsecurity_module.so;

# serverセクションに追記
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsec-config.conf;

# modsecurity.confをテンプレートからコピー
mkdir /etc/nginx/modsec/
cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf

# modsecurity.confを編集
vim /etc/nginx/modsec/modsecurity.conf
# 7行目を変更
SecRuleEngine DetectionOnly
# 246行目を変更
SecAuditLogParts ABCEFHJKZ

# modsec-config.confを編集
vim /etc/nginx/modsec/modsec-config.conf
# 以下を追記
include /etc/nginx/modsec/modsecurity.conf

# unicode.mappingをコピー
cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/

nginx起動

# nginxコンフィグチェック
nginx -t

# successfulと出ればOK
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

# nginx再起動
systemctl restart nginx

owaspzapルールセットを設定する

cd /etc/nginx/modsec

# version指定しても良いがstable版をインストールするとよい
wget https://github.com/coreruleset/coreruleset/archive/refs/tags/nightly.zip

# 解凍
unzip nightly.zip -d /etc/nginx/modsec

# コンフィグをテンプレからコピー
cp /etc/nginx/modsec/coreruleset-nightly/crs-setup.conf.example /etc/nginx/modsec/coreruleset-nightly/crs-setup.conf

# /etc/nginx/modsec/modsec-config.confを設定
vim /etc/nginx/modsec/modsec-config.conf
# 追記
include /etc/nginx/modsec/coreruleset-nightly/crs-setup.conf
include /etc/nginx/modsec/coreruleset-nightly/rules/*.conf

# コンフィグのsyntaxチェック
nginx -t 

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

# nginx再起動
systemctl restart nginx

動作確認
403Forbiddenが帰ってくるので動いている。

[root@mod-security ~]# curl localhost/index.html?exec=/bin/bash -I
HTTP/1.1 403 Forbidden
Server: nginx/1.25.3
Date: Mon, 08 Jan 2024 16:54:18 GMT
Content-Type: text/html
Content-Length: 153
Connection: keep-alive

<スポンサーリンク>

コメントを残す

Allowed tags:  you may use these HTML tags and attributes: <a href="">, <strong>, <em>, <h1>, <h2>, <h3>
Please note:  all comments go through moderation.

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)