ラージビッグバナー(970x90)

Linux

ModSecurityの特定のIPアドレスをホワイトリストに設定する方法!インストールからルールの作成まで!

更新日:

ビッグバナー(piglog)728px

ModSecurityとはオープンソースのWAF(Web Application Firewall)で、ApacheやNginxと連携して使用することができます。今回はCentOS/Apache の環境で、ModSecurityのインストールからブロックするルールの作成、ホワイトリストのルール作成、動作確認の方法までを紹介します。

ApacheとModSecurityのインストール

環境

  • CentOS 7.2
  • Apache 2.4.6
  • ModSecurity 2.7.3

インストール

yum で http と ModSecurity のインストールを行います。

インストール完了ですね。次は、ModSecurityの設定ファイルや使用するディレクトリ、ログファイルなどについて確認してみます。

設定ファイル、ディレクトリの確認

config系は /etc/httpd 配下をみてみます。

  • mod_security.conf
    ModSecurityの基本的な設定ファイルです。mod_ssl をインストールしている場合は ssl.conf なども他のconfigも設置されていると思います。
  • 10-mod_security.conf
    ModSecurityモジュールを有効にするためのファイルです。特に設定の必要はありません。
  • modsecurity.d
    ルールを記載したファイルを設置するディレクトリです。正確には後述する「/etc/httpd/modsecurity.d/activated_rules/」へ設置します。

ログの確認

  • modsec_audit.log
    監査ログです。リクエストの内容やルールにマッチした場合などに記録されます。
  • modsec_debug.log
    デバッグログです。

設定

ModSecurityの設定

今回は最低限の設定として、ModSecurityの動きを有効にするか否かの説明のみ記載します。

有効にする場合は「On」、監査のみにしたい(リクエストをブロックしない)場合は「DetectionOnly」を記載します。デフォルトは「On」となっているため動作させるためだけであれば設定変更の必要はありません。

ModSecurityのルールの作成

ModSecurityをインストールしただけではルールは存在しませんのでリクエストをチェックするルールを作成します。

ルールの保存ディレクトリは以下です。

作成するルール①
リクエストのURLが指定したものと合致したら405を返して拒否するルールを作成します。

SecDefaultAction はルールにマッチした場合のデフォルトの動きを指定します。SecRule はルールを指定しますので、今回はリクエストのURLにfooまたはbarが含まれる場合 を示しています。

作成するルール②
ホワイトリストのルールとしてチェックをスルーするIPアドレスを指定するルールを作成します。

range指定も可能です。

複数のIPアドレスを指定する場合はカンマ(,)区切りで指定可能です。

また、基本的なWAFのルール一式がOWASPという団体から Core Rule Set という名称で配布されていますので、あらかじめインストールしておくこともできます。

Apache起動

起動および自動起動の設定をしておきます。/foo/bar/は作成済みとして割愛します。

確認

では、実際にWebブラウザでアクセスして確認してみます。

ClientのIPアドレスが「172.16.10.100」の場合はアクセス可能、それ以外は405応答で拒否されれば正常に動いています。

まとめ

ModSecurityの設定は偽陽性の確認が大変ですが、あらかじめチェックをスルーして良いIPアドレスがわかっている場合は指定しておくと運用が楽になるかもしれません。

以上です。この記事がお役に立ちましたらシェアして頂けるとうれしいです。

レクタングル (大)

レクタングル (大)

リンクユニット(レスポンシブ)

-Linux
-, ,

Copyright© ぴぐろぐ , 2018 All Rights Reserved.