- blogs:
- cles::blog

mod_authz_iplist

最近、spam対策やらなんやらで.htaccessに書いてある制限リストの量もかなり膨大になってきました。.htaccessは柔軟で便利なのですが、アクセスがあるたびにいちいち数百行の記述が読み込まれているはずなのでその負荷もかなり気になるところです。しかしながら、それ以上に困ってしまうのはこの.htaccessファイルが文法にシビアなこと。そのため、ちょっとでもおかしな記述をしようものなら、サイト全体がInternal Server Errorになってしまうこともしばしばです*1。
これを何とかするための方策はないのかと色々探してみたところなんとなく◎で公開されているmod_authz_iplistというApacheモジュールががちょうど僕のニーズにマッチしているようだったので、早速導入してみました。
・ .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のコンパイルとインストール
† インストール後の設定
その後、httpd.confにLoadModuleを追加。
httpd.confに追加した行(soの場所については適宜調整の必要あり)
最後にhttpd.confの制限対象となる<Directory>の中に下記の設定を書き込みます。
最後に上記で指定したpathにブラックリストファイルを作ります。.htaccessなどと違って、先頭にDeny fromなどは必要ありません。1行1ipの要領で列挙していくだけでよいようです。
blacklist記述の例
ちなみにこのファイル、コメントはかけないようです。文字を書いたらhost指定だと解釈されてしまっていました。
- *1: しかも、どこがどう間違っているのかということはほとんど教えてくれない。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/1464
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110648)
3 . 年次の人間ドックへ(110279)
4 . 2023 年分の確定申告完了!(1つめ)(109816)
5 . 三菱鉛筆がラミーを買収(109719)