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"
ファイルを保存したら、Apacheを再起動。以上。
他にも、サーバの環境によっては.htaccessで制御できる場合もあります。参考サイトは以下。
しかし、日本語の情報が少ないなぁ…。
コメント