CentOS 7 ModSecurity 2.9.2のソースファイルからのインストール

動作確認環境

  • 仮想環境 VMware Workstation Player 14.1.1
  • OS Windows 10 Pro 64bit

仮想環境

  • OS CentOS 7.4 (1708) minimalインストール
  • メモリ 2GB
  • HDD 250GB

前提条件

  • gcc 7.3.0
  • cmake 3.11.0
  • MySQL 5.7.21
  • OpenSSL 1.1.0.h
  • Apache 2.4.33
  • PHP 7.2.4

mod_unique_id導入

/usr/local/srcディレクトリに移動する。

cd /usr/local/src

ソースファイルをダウンロードする。

wget 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の導入と設定 - よくわからないエンジニア


目次

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.