ModSecurityでホワイトリスト・ブラックリストを追加

無料のWAFの「ModSecurity」でホワイトリストとブラックリストを設定する方法を説明します。「ModSecurity」のインストール方法は「無料のWAF(Web Application Firewall)のModSecurityを導入」の記事を参照して下さい

mod_security.conf にホワイトリストとブラックリストを追加

ModSecurityの設定ファイルである"mod_security.conf"を編集します。このファイルは通常、Webサーバーの設定ディレクトリ内に存在します。私の環境では「/etc/httpd/conf.d/mod_security.conf」にあります

設定ファイル(mod_security.conf)に、ホワイトリスト・ブラックリストのIPアドレスを追加する場合は以下のようになります。

$ sudo vim /etc/httpd/conf.d/mod_security.conf

<IfModule mod_security2.c>
  SecPcreMatchLimit 1000
  SecPcreMatchLimitRecursion 1000
  SecRule TX:/^MSC_/ "!@streq 0" \
    "id:'200004',phase:2,t:none,deny,msg:'ModSecurity internal error flagged: %{MATCHED_VAR_NAME}'"

# ホワイトリストのルール
  SecRule REMOTE_ADDR "@ipMatch x.x.x.x" "phase:1,nolog,allow,id:123"

# ブラックリストのルール
  SecRule REMOTE_ADDR "@ipMatch x.x.x.x,y.y.y.y,z.z.z.z" "phase:1,deny,id:12345"
</IfModule>

ホワイトリストのルール では、上記のIPアドレスx.x.x.xをホワイトリストに追加しています。
nologオプションはログの出力を無効化して、allowはリクエストを許可するためのアクションで指定しています。id:123はルールのID番号で、必要に応じて変更して下さい

ブロックリストのルール では、複数のIPアドエスを追加する場合は、上記のx.x.x.x、y.y.y.y、z.z.z.zのように追加したいIPアドレスをカンマ区切りで指定します。id:12345は、ルールのID番号で、必要に応じて変更して下さい

設定を変更したら、Apacheを再起動して下さい

$ sudo service httpd restart

ブラックリストを外部ファイルでIPアドレス追加する

設定ファイル(mod_security.conf)に直接ブラックリストのIPアドレスを追加するのではなく、ブラックリストのIPアドレスを下記のように一つのファイルに列挙して管理する方法を以下となります

$ vim /etc/httpd/modsecurity.d/local_rules/ip_list.txt

192.168.0.10
192.168.0.20
192.168.0.30
192.168.0.40

・設定ファイルを開きいて、"SecRule REMOTE_ADDR “@pmFromFile ~"のように、「pmFromFile」のパラメータを利用して、外部ファイルからパターンを読み込むようにします。

$ sudo vim /etc/httpd/conf.d/mod_security.conf
<IfModule mod_security2.c>
  SecRule REMOTE_ADDR "@pmFromFile /etc/httpd/modsecurity.d/local_rules/ip_list.txt" "phase:1,id:2,deny,msg:'Blacklisted IP'"
</IfModule>

・外部ファイルにIPアドレスを記載していきます

$ vim /etc/httpd/modsecurity.d/local_rules/ip_list.txt
192.168.0.10
192.168.0.20
192.168.0.30
192.168.0.40

・設定を変更したらApacheを再起動します

$ sudo service httpd restart

 

LinuxCentOS 7,CentOS 8,CentOS 9

Posted by admin