mod_cidr_lookup使ってみた。

Apache, Webサーバ

09:02:02, by dozo Email , 165 words, 4858 views   Japanese (JP) del.icio.us

半年ぶり更新。

(ノ・・)ン。。。。。。(((●コロコロッ

ケータイサイトを作ると必ず考慮することになるIP制限
端末IDを使う会員制サイトを作る時はまずつけることになる。

一般的な方法はApacheのmod_access(デフォルトで装備)を利用する。
Order Deny,Allow
Deny from all
Allow from xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx
Allow from xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx
Allow from xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx

すべてのアクセスを拒否した後、
アクセス承認するIPアドレスの一覧を記述する。


ただ、毎回思うのが、
IPのメンテナンスってもうちょっとわかりやすくならないかなぁ。

IP一つに対してAllow Fromを一つずつ書いていくと、
縦長になって非常に見辛い。
かといって一つのAllow Fromに複数のIPを書くと
追加されたIPがすでに登録されたものかどうか探しにくい。

数ヶ月に一回ぐらいの作業なので、
それでも言いといわれればそれまでなのだが、
もうちょっとリスト化されてたりファイル化されていたりして欲しいところ。



最近、Klabがそう言ったものをリリースした。
mod_cidr_lookup(Apache License Version 2.0)
http://sourceforge.net/projects/modcidrlookup/
アクセス元IPアドレスから任意の環境変数を定義するApacheモジュール。
IPアドレスのメンテナンスする上でもファイル化されているのは素晴らしい。
SetEnvIfで利用出来るのであれば、
IP制限以外でも、
アクセス元IPごとにログを出し分けたり、
リライトしたりと用途は多い。



しかし、以前からこんなのはなかったのか?と疑問に思い探してみると、
やっぱりあった。
mod_ipenv(GPL)
http://mod-ipenv.sourceforge.net/ja/

こちらもアクセス元IPアドレスから任意の環境変数を定義するApacheモジュール。



どっちを使うか
軽く比較しながら内容を検証してみようかと。

[More:]


●インストール
mod_ipenv
# /usr/sbin/apxs -c -i mod_ipenv.c
mod_cidr_lookup
# /usr/sbin/apxs -c -i mod_cidr_lookup.c


●設定
mod_ipenv
SetEnvIp access/localhost.conf LOCAL
Order deny,allow
deny from all
allow from LOCAL

localhost.confには
#コメント
192.168.0.1
192.168.0.
192.168.0.0/255.255.255.0
192.168.0.0/24
host.example.com
.example.com


mod_cidr_lookup
CIDRFile "/etc/httpd/access/localhost"
SetEnvIf X_CLIENT_TYPE "^localhost" LOCAL
Order deny,allow
deny from all
allow from LOCAL

localhostには
192.168.0.1
192.168.0.0/24


●考察
設定方法に若干違いはあるものの、
「ファイルからIPを取り出し環境変数を設定する」
というところは全く同じ。

mod_cidr_lookupのメリット
  • ファイル指定にワイルドカードが使える
  • 高速動作
  • 将来性

ファイルを特定のディレクトリに置いておき、
ワイルドカードで指定出来るのは便利。

リブートが必要と言うことは、
Apacheロード時にファイルを読み込み、
それ以降はファイルを見ていないと言うこと。
なので、mod_ipenvよりmod_cidr_lookupの方が高速に動作すると思われる。
NASなどを利用してファイルを一本化する方法もこちらならOKだ。

あと、個人でやっている上、2006年で止まっているmod_ipenvと比べて、
こちらの方が将来性がありそう。


mod_ipenvのメリット
  • コメントアウト、不完全なIPやドメインが使える
  • ファイル名を考慮しなくてよい
  • リブート不要
  • .htaccessで利用可


使い勝手に関してはmod_ipenvの方に分がある。
不完全なIPとかはクローラー指定などで使うこともあるので、
これがあると便利。

環境変数とファイル名が連動していないので、
その後、正規表現で書き直さなくて済む。




一見すると使い勝手の良いmod_ipenvの方が良いかなと言う気はするが、
ファイル数、IPアドレスが多くなってくると遅くなりそう。
IPの格納したファイルは必ずサーバのローカルに置いておく必要があるので、
rsyncなどアップ方法は考慮が必要か。

mod_cidr_lookupを利用して負荷試験をしてみたが、
秒間10や20アクセスでは全然問題なく動作していた。
リリース当初不安定動作していたsetenvifの問題も最新バージョン(1.2)では解消されていた。
将来性を考えてしばらくmod_cidr_lookupを使ってみよう。



「コメントアウト、不完全なIPやドメイン」
というところは是非とも対応して欲しい。

Trackback address for this post:

http://hain.jp/htsrv/trackback.php/223

Comments, Trackbacks:

No Comments/Trackbacks for this post yet...

Leave a comment:

Your email address will not be displayed on this site.
Your URL will be displayed.

Allowed XHTML tags: <p, ul, ol, li, dl, dt, dd, address, blockquote, ins, del, span, bdo, br, em, strong, dfn, code, samp, kdb, var, cite, abbr, acronym, q, sub, sup, tt, i, b, big, small>
(Line breaks become <br />)
(Set cookies for name, email and url)
(Allow users to contact you through a message form (your email will NOT be displayed.))
This is a captcha-picture. It is used to prevent mass-access by robots.

Please enter the characters from the image above. (case insensitive)

powered by b2evolution

shinobi

Neighbors
Relative
Favorites

極論istの技術屋を始めて早幾年。 流れの速い業界の波にもまれながらも精一杯生きている様をとくとごらんあれ。

Archives
スポンサー

Latest bookmark
Search

Categories

Who's Online?
Misc
Syndicate this blog XML

Valid XHTML 1.0! Valid CSS! Valid RSS 2.0! Valid Atom 1.0!