LoginSignup
3
4

More than 5 years have passed since last update.

ModSecurityでPOSTのサイズ制限をする

Last updated at Posted at 2015-06-24

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から読み込まれている
      初期状態は全て読み込むようになっている

パラメータ

パラメータ 内容
SecRequestBodyLimit ファイルアップロードのリクエストボディ上限値
SecRequestBodyNoFilesLimit ファイルアップロード以外のリクエストボディの上限値(Content-Typeがapplication/x-www-form-urlencodedの場合にのみ有効)
  • SecRequestBodyLimitの値を2097152(=2MB)に変更する
  • SecRequestBodyNoFilesLimitを51200(=50KB)に変更する

変更後に再度、service httpd restartを叩く。

設定の確認

設定がちゃんと反映されている場合、ファイルサイズが上限値以上(今回でいうと2MB以上)でアップロードを試みると、以下のレスポンスが返る

  • ステータスコード413が返される
  • Request Entity Too Largeページが表示される
3
4
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
3
4