動作確認環境
事情によりバージョンをダウングレードしました。新しいバージョンでも動作するはずです。
- 仮想環境 VMware Workstation Player 12.5.9
- OS Windows 10 Pro 64bit
仮想環境
- OS CentOS 7.4 (1708) minimalインストール
- メモリ 2GB
- HDD 250GB
前提条件
- gcc 8.1.0
- cmake 3.11.4
- MySQL 5.7.22
- OpenSSL 1.1.0.h
- Apache 2.4.33
- PHP 7.2.6
mod_unique_id導入
/usr/local/src
ディレクトリに移動する。
cd /usr/local/src
ソースファイルをダウンロードする。
wget http://www-eu.apache.org/dist//httpd/httpd-2.4.33.tar.gz
ダウンロードしたファイルを展開する。
tar zxvf httpd-2.4.33.tar.gz
Apacheのインストールディレクトリ配下のmodules/metadata
に移動し、以下を実行する。
cd httpd-2.4.33/modules/metadata
/usr/local/apache2/bin/apxs -cia mod_unique_id.so
Apacheを再コンパイル・インストール
Apacheを停止する。
systemctl stop httpd
展開したディレクトリに移動する。
cd /usr/local/src/httpd-2.4.33
再コンパイル・インストールする。
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr-1.6.3 --with-apr-util=/usr/local/apr-util-1.6.1 --with-pcre=/usr/local/pcre-8.42 --enable-http2 --enable-ssl --with-ssl=/usr/local/openssl --enable-so --enable-mods-shared=all --enable-mpms-shared=all
make
make install
ModSecurityをインストール
/usr/local/src
ディレクトリに移動する。
cd /usr/local/src
ソースファイルをダウンロードする。
wget https://github.com/SpiderLabs/ModSecurity/releases/download/v2.9.2/modsecurity-2.9.2.tar.gz
ダウンロードしたファイルを展開する。
tar xzvf modsecurity-2.9.2.tar.gz
展開したディレクトリに移動する。
cd modsecurity-2.9.2
コンパイル・インストールする。
./configure --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr-1.6.3 --with-apu=/usr/local/apr-util-1.6.1
make
make install
mod_security2.so
は/usr/local/apache2/modules/
に作成されている。
mod_security2.so
のパーミッションを変更する。
chmod 755 /usr/local/apache2/modules/mod_security2.so
modsecurity.conf
をコピーする。
cp modsecurity.conf-recommended /usr/local/apache2/conf/modsecurity.conf
modsecurity.conf
のパーミッションを変更する。
chmod 644 /usr/local/apache2/conf/modsecurity.conf
Apacheのインストールディレクトリに移動する。
cd /usr/local/apache2
modsecurity.d
ディレクトリを作成し、移動する。
mkdir modsecurity.d
cd modsecurity.d
gitリポジトリからowasp-modsecurity-crsw
をコピーする。
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs
owasp-modsecurity-crs
ディレクトリに移動する。
cd owasp-modsecurity-crs
crs-setup.conf
をコピーする。
cp crs-setup.conf.example crs-setup.conf
REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example
及びRESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example
のファイル名を変更する。
mv rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
mv rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
unicode.mapping
をコピーする。
cp /usr/local/src/modsecurity-2.9.2/unicode.mapping /usr/local/apache2/conf/unicode.mapping
apache2ディレクトリの所有者、グループを変更する。
chown -R apache:apache /usr/local/apache2/
httpd.conf
を編集する。
vi ../../conf/httpd.conf
以下の内容をLoadModule~
が書かれた一番下の行に追記する。
LoadModule security2_module modules/mod_security2.so
<IfModule security2_module>
<IfModule unique_id_module>
SecRuleEngine On
SecRequestBodyAccess On
SecDebugLog logs/modsec_debug.log
SecDebugLogLevel 3
SecTmpDir /tmp/
SecUploadDir /tmp/
SecDataDir /tmp/
SecAuditEngine On
SecAuditEngine RelevantOnly
SecAuditLogType concurrent
SecAuditLogParts ABIDEFGHZ
SecAuditLogStorageDir /var/log/mod_security/data
SecAuditLog logs/audit_log
Include modsecurity.d/owasp-modsecurity-crs/crs-setup.conf
Include modsecurity.d/owasp-modsecurity-crs/rules/*.conf
</IfModule>
</IfModule>
Apacheを起動する。
systemctl start httpd
動作確認
ログにaudit_log
が作成されていればModSecurity
が動作している。
またブラウザでhttp://サーバのIPアドレス?union+select
にアクセスし、Forbidden
と表示されれば動作している。
modsec_debug.log
には以下のようなログが残される。
[20/Mar/2018:16:48:40 +0900] [192.168.10.100/sid#eae3d0][rid#7f31b80d49f0][/][1] Audit log: Failed to create subdirectories: /var/log/mod_security/data/20180320/20180320-1648 (Permission denied)
参考
ModSecurity: Open Source Web Application Firewall
Releases · SpiderLabs/ModSecurity · GitHub
ModSecurity2のインストール | OpenGroove
CentOS7 apacheにmod_securityの導入と設定 - よくわからないエンジニア