少し前にmod_dosdetectorを導入しましたが、それとはまた別件でmod_security入れることになったので記事にします。
目次
mod_securityとは
オープンソースのWAFです。SQLインジェクションなどの脆弱性をついた攻撃からWebサイトを守るために導入します。
当方環境ではapacheに導入してみようと思います。
mod_securityのインストール
早速、インストールしていきます。
# cd /usr/local/src/ # ls # wget https://www.modsecurity.org/tarball/2.9.1/modsecurity-2.9.1.tar.gz # tar xvfz modsecurity-2.9.1.tar.gz # cd modsecurity-2.9.1/ # ./configure --prefix=/usr/local/modsecurity-2.9.1 --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/src/httpd-2.4.25/srclib/apr --with-apu=/usr/local/src/httpd-2.4.25/srclib/apr-util # make # make install # cd /usr/local/ # ln -s modsecurity-2.9.1 modsecurity
すんなり入りました。configureでエラーが出た時は、pcre-develをyumで突っ込んで下さい。
ルールセットの導入
mod_securityはこのまま入れただけではあんまり意味がなく、攻撃を攻撃と判断するためのルールが必要になります。このルールセットもオープンソースで用意されているので、こちらも一緒に導入します。
# # cd /usr/local/apache2/conf/ # git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git # cp -p owasp-modsecurity-crs/crs-setup.conf.example owasp-modsecurity-crs/crs-setup.conf # mkdir -p /var/log/mod_security/data # chown -R httpd:httpd /var/log/mod_security
こんな感じでしょうかね?
apacheの設定
最後にapacheの設定です。httpd.conf辺りに以下を追記します。
# vim /usr/local/apache2/conf/httpd.conf LoadModule security2_module modules/mod_security2.so LoadModule unique_id_module modules/mod_unique_id.so <IfModule security2_module> <IfModule unique_id_module> SecRuleEngine On SecRequestBodyAccess On SecDebugLog /var/log/mod_security/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 /var/log/mod_security/audit_log Include conf/owasp-modsecurity-crs/crs-setup.conf Include conf/owasp-modsecurity-crs/rules/*.conf </IfModule> </IfModule>
とりあえず動いているか確認したいので、これでapacheを再起動します。
該当URLに"http://****?union+select" でアクセスした際にForbiddenが表示されればちゃんと導入されています。
眠たいので今日はここまで。。。