ModSecurityとは
ModSecurityはオープンソースのWeb Application Firewall(WAF)モジュール。
攻撃を検知するための基本的なルールセット、Core Rule Set (CRS)が準備されている。
インストール
CentOS6.5を想定
EPELリポジトリの追加
$ rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
EPELリポジトリを普段は使わないように/etc/yum.repos.d/epel.repo
の設定を変更
[epel]
.
.
.
enabled=0
ModSecurityのインストール
mod_securityとmod_security_crsをインストール
$ yum --enablerepo=epel install mod_security mod_security_crs
パッケージ名 | 概要 |
---|---|
mod_security | ModSecurity本体 |
mod_security_crs | ModSecurityのルールセット |
インストール完了後、service httpd restart
を実行することでModSecurityが有効になる
ModSecurityの確認
ModSecurityが正常に動作していることを確認する。
既存コンテンツの後ろに?union+select
をつけてアクセスをする。
http://example.jp/index.html?union+select
※URLについてはそれぞれの既存コンテンツを指定する
403 Forbiddenのエラーが返されればOK
また、/var/log/httpd/modsec_audit.log
にログが吐かれていることを確認する
設定
インストールすると/etc/httpd/conf.d/mod_security.conf
と/etc/httpd/modsecirty.d
が作成される。
-
/etc/httpd/conf.d/mod_security.conf
にはModSecurityの設定が書かれている -
/etc/httpd/modsecirty.d
にはルールセットが格納されている- mod_security.confから読み込まれている
初期状態は全て読み込むようになっている
- mod_security.confから読み込まれている
パラメータ
パラメータ | 内容 |
---|---|
SecRequestBodyLimit | ファイルアップロードのリクエストボディ上限値 |
SecRequestBodyNoFilesLimit | ファイルアップロード以外のリクエストボディの上限値(Content-Typeがapplication/x-www-form-urlencoded の場合にのみ有効) |
-
SecRequestBodyLimit
の値を2097152(=2MB)に変更する -
SecRequestBodyNoFilesLimit
を51200(=50KB)に変更する
変更後に再度、service httpd restart
を叩く。
設定の確認
設定がちゃんと反映されている場合、ファイルサイズが上限値以上(今回でいうと2MB以上)でアップロードを試みると、以下のレスポンスが返る
- ステータスコード413が返される
- Request Entity Too Largeページが表示される