
実用 Apache 2.0運用・管理術 最終回
接続数/帯域制限で無法なダウンローダを撃退
| 画像の直リンクやコンテンツの一括ダウンロードなど、サーバに負荷を掛ける迷惑行為は後を絶たない。今回は、これらへの対処法を紹介する。(編集部) |
鶴長 鎮一(book@tsurunaga.jp)
2006/2/14
本連載を締めくくるに当たり、今回はこれまでに紹介し切れなかった運用術や特殊な設定を取り上げます。
Refererを使った画像ファイルへの直リンク禁止
URLさえ指定すれば、他サイト上の画像ファイルをあたかも自サイトのコンテンツであるかのように表示させることができます。こうした行為は著作権上の問題を内包するほか、画像などのファイルを転送するための負荷を他サイトのために負担させられることになります。Webサイト運営者として、こうした行為を禁止したいと思うのは当然のことでしょう。
Webブラウザは、コンテンツのリクエスト情報中に参照元URLを埋め込むことができます。具体的には、HTTPリクエスト中のRefererヘッダを利用します。この仕組みを利用して、WebサーバにこのRefererヘッダを参照させ、指定されたURLやドメインが含まれているか否かによってコンテンツ転送の可否を決定することができます。これにより、画像など特定のコンテンツが他サイトのHTMLファイルから直接参照されるのを防ぐことができます。
# 参照元URLとして許可するドメインの設定 |
| 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
|
|
||||||||
|
||||||||
| 連載 実用 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系列の新機能、インストール方法、国際化の現状を解説する |
|
|
TechTargetジャパン
- クライアントがアクセスできる範囲を制限する (2012/2/10)
今回は、サーバ上のファイルの扱いに関係する設定項目について解説します - 新しい記事も入っていて安心しました (2012/2/7)
Linux Squareのアクセスランキングを公開します。定番の記事ばかりでなく、連載中の記事もよろしくお願いいたします - エラーメッセージをどう扱うか? (2012/2/2)
今回は、スクリプト実行時にエラーが発生したことを知らせるメッセージの扱い方を説明します - ファイルのアップロードを制限する (2012/1/30)
HTTPクライアントがアップロードしてくるファイルの扱いについて解説します。そもそも受け入れる必要があるのか? ということのほかにも、いろいろ設定が必要です
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
