実用 Apache 2.0運用・管理術 最終回

接続数/帯域制限で無法なダウンローダを撃退

画像の直リンクやコンテンツの一括ダウンロードなど、サーバに負荷を掛ける迷惑行為は後を絶たない。今回は、これらへの対処法を紹介する。(編集部)

鶴長 鎮一(book@tsurunaga.jp)
2006/2/14

 本連載を締めくくるに当たり、今回はこれまでに紹介し切れなかった運用術や特殊な設定を取り上げます。

Refererを使った画像ファイルへの直リンク禁止

 URLさえ指定すれば、他サイト上の画像ファイルをあたかも自サイトのコンテンツであるかのように表示させることができます。こうした行為は著作権上の問題を内包するほか、画像などのファイルを転送するための負荷を他サイトのために負担させられることになります。Webサイト運営者として、こうした行為を禁止したいと思うのは当然のことでしょう。

 Webブラウザは、コンテンツのリクエスト情報中に参照元URLを埋め込むことができます。具体的には、HTTPリクエスト中のRefererヘッダを利用します。この仕組みを利用して、WebサーバにこのRefererヘッダを参照させ、指定されたURLやドメインが含まれているか否かによってコンテンツ転送の可否を決定することができます。これにより、画像など特定のコンテンツが他サイトのHTMLファイルから直接参照されるのを防ぐことができます。

# 参照元URLとして許可するドメインの設定
SetEnvIf Referer example\.com authoritative_site
SetEnvIf Referer example\.jp authoritative_site

# 単一のファイルタイプを指定する場合
<Files *.gif>
    order deny,allow
    Deny from all
    Allow from env=authoritative_site
</Files>

# 正規表現を使って複数のファイルタイプを指定する場合
<FilesMatch "\.(gif|jpe?g|png)$">
    order deny,allow
    Deny from all
    Allow from env=authoritative_site
</FilesMatch>
httpd.conf

 SetEnvIfディレクティブを使い、HTTPリクエストのRefererヘッダに「example.com」や「example.jp」が含まれるものには、環境変数「authoritative_site」を設定します。環境変数名は任意のもので構いません。ただし、「authoritative_site」以外に変更する場合は<Files>や<FilesMatch>ディレクティブも併せて変更する必要があります。

 <Files>および<FilesMatch>ディレクティブでは、指定された拡張子のファイルのリクエストに対して環境変数authoritative_siteが設定されているか否かを調べ、設定されている場合のみレスポンスを返します。

 Refererは必ず正しいものが送られてくるとは限りません。偽装されたり、Refererヘッダが削除されている場合もあります。クライアントがどの参照元からアクセスしているかを知られないためのプライバシ保護を目的にした対策の場合もあり、一概にクライアントの不備と決め付けることはできません。ほかにも、Googleキャッシュのようにテキストファイルのみキャッシュし、画像ファイルは元URLのままというケースでも、今回ここで施した制限に引っ掛かります。以上のように、Refererヘッダを使った制限は完全ではありません。この対策を実施する際は、このことも十分に考慮しておきましょう。

CGIが使用するリソースの制限

 Apacheの運用でしばしば厄介になるのが、CGIやSSIなどの動的コンテンツの管理です。静的コンテンツのように単純にリソースを見積もることができないこともあり、CGIの過剰稼働でサーバがほかのリクエストを処理できなくなるといった事態も珍しくありません。

 そこで、プロセスが利用するサーバリソースを制限します。Apache 2.0では、RLimitCPU/RLimitMEM/RLimitNPROCディレクティブを利用することでサーバリソースを制限できます。

RLimitCPU 60
CPU占有時間を60秒に設定

RLimitMEM 31457280
メモリ使用量を30Mbytes(30×1024×1034)に設定

RLimitNPROC 10
起動されたプロセスがさらに起動可能なプロセス数の上限を10に設定

 RLimit系ディレクティブで制限できるのは、Apacheの子プロセスであるhttpdプロセスからフォークされたCGIスクリプトのようなものに限定されます。mod_perlやmod_phpを使用したCGIやPHPスクリプトは、この設定が効かないことに注意しましょう。

1/4

Index
実用 Apache 2.0運用・管理術
 第8回 接続数/帯域制限で無法なダウンローダを撃退
Page 1
 Refererを使った画像ファイルへの直リンク禁止
 CGIが使用するリソースの制限
  Page 2
 Webブラウザの設定によるコンテンツ切り替え
  単純なコンテントネゴシエーション
  コンテントネゴシエーションによる多言語サイトの実現
  Page 3
 mod_bwshareによる接続数/帯域制限
  mod_bwshareとは
  mod_bwshareのインストールと設定
  Page 4
 mod_limitipconnによる接続数制限
  mod_limitipconnのインストールと設定

連載 実用 Apache 2.0運用・管理術


 Linux Squareフォーラム サーバ構築・運用関連記事
連載:Heartbeatでかんたんクラスタリング(連載中)
オープンソースソフトウェアの「Heartbeat」を使ってHAクラスタを実現し、サービスを「落とさない」仕組みを実現します
特集:Apache 2.2でWebサイトをパフォーマンスアップ!
最新安定版Apache 2.2は、何が変わったのか? 最新のApacheを新機能の使い方とともに解説する
連載:実用 Apache 2.0運用・管理術(全8回)
本連載では、Apache 2.0の運用や管理方法を解説する。まず必須設定と基本的なセキュリティ対策を行い今後の運用に備える
連載:実用 BIND 9で作るDNSサーバ(全15回)
本連載では、BIND 9の構築/運用方法を解説していく。実際に役立つことを目的に、セキュリティや大規模運用などのテーマを取り上げていく
連載:実用qmailサーバ運用・管理術(全14回)
本連載を通して、qmailによるメールサーバの高度な構築・運用・管理術を紹介。SPAM対策やML管理からサーバでのウイルスチェックなどまで
特集:Samba 3.0の全貌 改訂版
Samba 3.0リリースから8カ月。ここであらためて、Samba 3.0系列の新機能、インストール方法、国際化の現状を解説する

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します

TechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ



- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH