BLOGTIMES
2006/06/17

mod_authz_iplist

  httpd 
このエントリーをはてなブックマークに追加

最近、spam対策やらなんやらで.htaccessに書いてある制限リストの量もかなり膨大になってきました。.htaccessは柔軟で便利なのですが、アクセスがあるたびにいちいち数百行の記述が読み込まれているはずなのでその負荷もかなり気になるところです。しかしながら、それ以上に困ってしまうのはこの.htaccessファイルが文法にシビアなこと。そのため、ちょっとでもおかしな記述をしようものなら、サイト全体がInternal Server Errorになってしまうこともしばしばです*1

これを何とかするための方策はないのかと色々探してみたところなんとなく◎で公開されているmod_authz_iplistというApacheモジュールががちょうど僕のニーズにマッチしているようだったので、早速導入してみました。

mod_authz_iplist - なんとなく◎

・ .htaccess での Deny / Allow の記述はリクエストがある度に読み込まれパースされるが, このモジュールでは規制リストはファイル更新が検出されるまでメモリ上にキープされるため, 特に記述する IP アドレスやホスト名が多い場合パフォーマンス面で有利になる.
・ 規制対象の IP アドレスやホスト名を動的に変更する場合, 規制リストが .htaccess とは別ファイルなので .htaccess を 直接書き換える場合よりもトラブルが発生しにくい.

コンパイル、インストールにはひと手間必要

公開されているのはmod_authz_iplist.cというモジュールのソースコードひとつだけなので、利用するには自力でコンパイルとインストールする必要があります。とりあえずapxsを使ってapxs -c mod_authz_iplist.cとしてみたら、`in6_addr_t' undeclaredと怒られてコンパイルできなかったので、ググってしらべたところ下記の要領でコンパイルとインストールが可能でした。

mod_authz_iplist.cのコンパイルとインストール

apxs -c -D in6_addr_t="struct\ in6_addr" mod_authz_iplist.c apxs -i mod_authz_iplist.la

インストール後の設定

その後、httpd.confにLoadModuleを追加。

httpd.confに追加した行(soの場所については適宜調整の必要あり)

LoadModule authz_iplist_module modules/mod_authz_iplist.so

最後にhttpd.confの制限対象となる<Directory>の中に下記の設定を書き込みます。

AuthzIPList Black /path/to/blacklist

最後に上記で指定したpathにブラックリストファイルを作ります。.htaccessなどと違って、先頭にDeny fromなどは必要ありません。1行1ipの要領で列挙していくだけでよいようです。

blacklist記述の例

192.168.1.0/24 192.168.2.0/24 192.168.3.0/24 192.168.4.0/24 192.168.5.0/24

ちなみにこのファイル、コメントはかけないようです。文字を書いたらhost指定だと解釈されてしまっていました。

  • *1: しかも、どこがどう間違っているのかということはほとんど教えてくれない。

トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/1464
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン