6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

オープンソースWAF ModSecurity

Posted at

ModSecurity

ModSecurity はオープンソースの WAF (Web Application Firewall) である。

インストール

EPEL リポジトリーからインストール

CentOS 6 以前では EPEL リポジトリーに、CentOS 7 では標準リポジトリーにパッケージが存在する。

yum install mod_security*
systemctl restart httpd

EPEL でインストールされるファイルは以下の通り。

/etc/httpd/conf.d/mod_security.conf
/etc/httpd/conf.modules.d/10-mod_security.conf
/etc/httpd/modsecurity.d
/etc/httpd/modsecurity.d/activated_rules
/usr/lib64/httpd/modules/mod_security2.so
/usr/share/doc/mod_security-2.7.3
/usr/share/doc/mod_security-2.7.3/CHANGES
/usr/share/doc/mod_security-2.7.3/LICENSE
/usr/share/doc/mod_security-2.7.3/NOTICE
/usr/share/doc/mod_security-2.7.3/README.TXT
/var/lib/mod_security

Atomic リポジトリーからインストール

CentOS 6 以前では EPEL リポジトリーに、CentOS 7 では標準リポジトリーにパッケージが存在するが 2.7.3 以前と古いので、最新版をパッケージでインストールするには Atomic リポジトリーからインストールする。バージョンは 2.9.1 になる。
ただし EPEL リポジトリーと違い、設定を自身で用意する必要がある。

curl -s http://www.atomicorp.com/installers/atomic | sh
yum install mod_security

Atomic でインストールされるファイルは以下の通り。

/etc/httpd/conf.d/00_mod_security.conf
/etc/httpd/modsecurity.d
/usr/lib64/httpd/modules/mod_security2.so
/usr/share/doc/mod_security-2.9.1
/usr/share/doc/mod_security-2.9.1/CHANGES
/usr/share/doc/mod_security-2.9.1/LICENSE
/usr/share/doc/mod_security-2.9.1/README.TXT
/usr/share/doc/mod_security-2.9.1/doc
/usr/share/doc/mod_security-2.9.1/doc/README.txt
/usr/share/doc/mod_security-2.9.1/doc/doxygen-apache.conf
/usr/share/doc/mod_security-2.9.1/doc/doxygen-iis.conf
/usr/share/doc/mod_security-2.9.1/doc/doxygen-logo.png
/usr/share/doc/mod_security-2.9.1/doc/doxygen-nginx.conf
/usr/share/doc/mod_security-2.9.1/doc/doxygen-standalone.conf
/usr/share/doc/mod_security-2.9.1/modsecurity.conf-recommended

Atomic での設定方法は検証中…

curl -L https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.0.0.tar.gz -o owasp-modsecurity-crs-3.0.0.tar.gz
tar xf owasp-modsecurity-crs-3.0.0.tar.gz

設定

modsec_audit.log に偽陽性の id が出力されるので SecRuleRemoveById として指定してやると除外される。

fgrep '[id "' /var/log/httpd/modsec_audit.log
出力例
Message: Access denied with code 403 (phase 2). Pattern match "^[\\d.:]+$" at REQUEST_HEADERS:Host. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "98"] [id "960017"] [rev "2"] [msg "Host header is a numeric IP address"] [data "192.168.56.101"] [severity "WARNING"] [ver "OWASP_CRS/2.2.6"] [maturity "9"] [accuracy "9"] [tag "OWASP_CRS/PROTOCOL_VIOLATION/IP_HOST"] [tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"] [tag "http://technet.microsoft.com/en-us/magazine/2005.01.hackerbasher.aspx"]
cat << "_EOF_" >> /etc/httpd/conf.d/mod_security_rule_remove.conf
SecRuleRemoveById 960017
_EOF_
systemctl restart httpd

正規の操作を繰り返しながら、つまずくたびに以下を実行するのでもいいかもしれない。

grep -o 'id "[0-9]*' /var/log/httpd/modsec_audit.log | uniq | sort | sed -e 's/id "/SecRuleRemoveById /' > /etc/httpd/conf.d/mod_security_rule_remove.conf
6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?