ModSecurityで、特定のIPアドレスをホワイトリストに入れる。

ウェブアプリケーションファイアウォール(WAF)のひとつ、ModSecurityです。

ウェブサイトのセキュリティ対策には持ってこい。様々な攻撃を結構厳しめに判定してアクセスを拒否してくれます。

が、例えばWordPressやMovable Typeの編集ページで記事を書いて、それを保存しようとしたときに、書いた記事内の特定の文字列に対して「怪しい…。攻撃だ」と(誤)反応して処理を拒否、

403 Forbidden

エラーを出して、操作が完了できない…という事象が発生したりします。

こんなときは、ModSecurityの設定を弄ることによって、

  • 特定のページ/ディレクトリをModSecurityの保護対象から外す。
  • 誤反応を生じさせる検査ルールを検査リストから除外する。
  • 特定のホスト/IPアドレスからのアクセスを検査対象から外す。

…などの回避策を講じることが可能です。

幸いうちの自宅回線は、長時間モデムの電源を落としたりしない限り、ほぼ固定IPアドレスで運用できるので、セキュリティの面から見ていちばんマシそうな「特定のIPアドレスをホワイトリストに入れて検査対象から外す」という方針でいこうと思います。

うちのウェブサーバのシステムは、

  • CentOS 7.x
  • Apache2.x
  • ModSecurity2.x
  • cPanel/WHMによる管理

…という具合で、ModSecurityの設定ファイルは、

/etc/apache2/conf.d/modsec/modsec2.user.conf

にあります。

環境によっては、

/etc/apache2/conf.d/modsec2/whitelist.conf

とか、その辺りにあるかもしれません。

ターミナルで上記設定ファイルを開きます。

$ sudo nano /etc/apache2/conf.d/modsec/modsec2.user.conf

で、ファイルの末尾に以下を追加。xxx.xxx.xxx.xxx は実際のIPアドレスに置き換えます。

SecRule REMOTE_ADDR "@ipMatch xxx.xxx.xxx.xxx" "phase:1,id:200000001,nolog,allow"

自分のIPアドレスを知るには、例えば…

WhatIsMyIPAdress

などのサイトを利用してみてください。

ファイルを保存したら、Apacheを再起動。以上。

他にも、サーバの環境によっては.htaccessで制御できる場合もあります。参考サイトは以下。

しかし、日本語の情報が少ないなぁ…。

カテゴリ: