Apacheを使う大きな魅力のうちの1つが、さまざまなモジュールによって提供されている豊富な機能でしょう。本連載でも、Apacheに標準で付属しているモジュールを紹介してきました。
しかし、Apacheで利用することのできるモジュールは標準で付属できるものだけでなくサードパーティ製のものも利用することができます。標準モジュールだけでは実現しない機能がある……とお悩みの方は是非サードパーティ製のモジュールを試してみましょう。
今回は、知っておくと便利なサードパーティ製のモジュールを一部紹介したいと思います。
mod_securityでセキュリティ向上を
どれだけ気を配っていても、Webアプリケーションの脆弱性は出てしまうもの。となると、前段のApacheで怪しいアクセスをはじいてしまえばある程度は安全に利用することができそうですね。そういった発想から生まれたモジュールが、mod_securityです。
下記のサイトから、「modsecurity-Apache_2.5.9.tar.gz」というファイルをダウンロードしてください(2009年7月11日時点最新バージョン)。
mod_securityのインストール
それではインストールしてみましょう。一部必要なライブラリがありますので、インストールしてから実施します。debian/centosそれぞれに表記してありますので、お使いのディストリビューションごとに選択してください。
さて、必要なライブラリのインストールが完了したら今度はmod_securityのインストールへ移りましょう。なお、${APACHE_SRC_DIR}はApacheのソースコードが展開してあるディレクトリを意味しています。
それではモジュールが正常にインストールできたら、確認をしてみましょう。
上記のファイルが生成されていれば成功です。
また、設定ファイルのサンプルが同梱されていますのでこちらもconf以下にコピーしておきます。
上記のファイルが正常にコピーされていれば完了です。
mod_securityの設定方法
それではmod_securityを設定しましょう。
mod_security自体の設定は非常に難解なのですが、それぞれのサンプルが用意されています。こちらをベースに修正していくのがよいでしょう。
まずは手っ取り早い方法として、以下の2行を追記してください。
これで基本的なmod_securityのルールが適用されます。ただし、これでセキュリティが万全になった、というわけではありません。当然ながら、本来ならアプリケーションで実装すべき部分です。あくまで万が一の保険のときのためと考えておきましょう。
また、設定ファイルを見ていただくとわかると思いますがかなり複雑な正規表現が入っています。そのためパフォーマンスの劣化につながる可能性もありますので、利用する場所も限定して使うと良いでしょう。
mod_geoipを使ってアクセスする国判定
アクセスする国別に言語を切り替えるということを行っているサイトは多々ありますが、多くの場合がブラウザの送信してくる、AcceptLanguageがベースとなっています。
表示の切り替えに関しては問題はありませんが、どこの国からどれだけアクセスされているのかをちゃんと把握したいケースもあるでしょう。そのときに効果的なモジュールが、mod_geoipというモジュールです。
製品版もありますが、フリーで使えるバージョンも用意されていますので利用してみましょう。なお、Apache用モジュールの他に、Cライブラリと辞書が必要になりますので一緒にダウンロードしておいてください。
下記のサイトから、「GeoIP-1.4.6.tar.gz」「downlomod_geoip2_1.2.5.tar.gz」「GeoIP.dat.gz」の3つもファイルをダウンロードしてください(2009年7月11日時点最新バージョン)。
mod_geoipのインストール
それではmod_geoipをインストールしましょう。まずは、Cのライブラリからインストールします。
Cライブラリが正常にインストールできたら、次はApacheのモジュールのインストールにとりかかりましょう。
それではモジュールが正常にインストールされたかどうか、確認をしてみましょう。
上記のファイルが生成されていれば成功です。
それでは最後にGeoIPのデータベースとなるファイルをCopyしておきましょう。
これで準備は完了です。
mod_geoipのセットアップ
それではmod_geoipを設定してみましょう。今回は、アクセスしてきた国をaccess_logに書き込むための設定を入れてみます。下記の設定を、httpd.confに追記してください。
非常に簡単な設定ですね。これは、GeoIPのモジュールを有効にすることで“GEOIP_COUNTRY_CODE”という環境変数が利用できるようになったためです。あとは、LogFormatの中で環境変数をLogとして記録する設定を入れるだけで簡単にLogに記録することができます。これをアプリケーション内で利用したい場合は、環境変数を読むだけで簡単に使うことができます。
なお、プライベートIPアドレスでアクセスしている場合は判定できませんので注意してください。
サードパーティ製のモジュールの注意点
さて、今回は2つのモジュールを紹介してきました。どちらもちょっと変わったモジュールではありますが非常に便利な機能をそなえています。ただし、あくまでサードパーティ製であることは踏まえたうえで利用しましょう。
今回紹介したモジュールはどちらも開発に企業がかかわっているので、それなりに信頼はできると思います。
しかしながら、中には個人で作成して公開している人もいますので、注意が必要です。
ある程度は自分で責任をもって運用できる場合に、利用をするようにしましょう。