Webサイトの安定稼働に向けて

Webサーバーのセキュリティー強化 これまで3回にわたり、Webサイトのユーザビリティ・アクセシビリティ向上を支援するサーバーサイドの機能を紹介しました。今回はそこから少し離れて、一般的なWebサーバー管理の事柄に触れたいと思います。

伊藤 千光

2008年9月26日 20:00

Webサーバーのセキュリティー強化

 これまで3回にわたり、Webサイトのユーザビリティ・アクセシビリティ向上を支援するサーバーサイドの機能を紹介しました。今回はそこから少し離れて、一般的なWebサーバー管理の事柄に触れたいと思います。

 Webサーバーの管理で最も重要な要素の1つがセキュリティーです。この連載で扱っている.htaccessの機能は比較的安全なものですが、それでも不注意でWebサイトに穴を開けてしまう可能性はあります。第2回(http://www.thinkit.co.jp/article/134/2/)でも共有キャッシュの誤った使用法による情報漏えいを紹介しましたが、それ以外にもさまざまなパターンがあります。

 セキュリティー・リスクのすべてを網羅するのは難しいのですが、以下で比較的簡単に実践できる一般的な注意点を5つ挙げておきます。

運用上の注意点

 1つ目は、「.htaccessの数を抑える」です。

 .htaccessは便利な機能ですが、無計画に使うと設定ファイルが分散してしまい、Webサイト全体の設定が把握しづらくなるという欠点があります。設定が把握できていないと、設定変更を繰り返すうちに誤った設定をしてしまいがちです。ディレクトリ構成を工夫して、できるかぎり.htaccessの数を減らすようにしましょう。

 2つ目は、「公開ディレクトリに余計なファイルは置かない」です。

 ほかの会社が管理していたWebサイトを引き継いだりすると、公開ディレクトリにバックアップファイルが大量に残っていたりします。これは非常にまずい習慣です。特にCGIやPHPを「.bak」などの拡張子で保存すると、スクリプトのソースがそのまま公開されることになります。開発作業は非公開の領域で行い、公開ディレクトリには余計なファイルを置かないようにしましょう。

 3つ目は、「ファイルのパーミッションに注意する」です。

 一般的なUNIX系OSでは、個々のファイルに対して所有者(U)、グループ(G)、ほかのユーザー(O)それぞれに読み込み(R)、書き込み(W)、実行(X)の3つの権限(パーミッション)を設定できます。このパーミッションを可能な限り制限することで、セキュリティーを高めることが可能です。例えば、CGIスクリプトや静的なHTMLファイルなどは所有者(もしくはグループ)のみに書き込み権限を与えることで、コンテンツの改ざんを防げる場合があります。

 4つ目は、「外部入力は可能な限り制限を設ける」です。

 第3回(http://www.thinkit.co.jp/article/134/3/)で紹介した「表示言語をCookieに保存する」設定では、認識する言語を日本語(ja)と英語(en)のみに制限しています(リスト1の赤の部分)。もしこのような制限を設けず、外部入力をそのままHTTPヘッダに挿入してしまうと、HTTPヘッダ・インジェクション(http://www.ipa.go.jp/security/vuln/vuln_contents/hhi.html)という攻撃を受ける場合があります。外部からの入力はすべて信頼できないという意識を持ち、可能な限りの制約を設定するようにしてください。

 5つ目は、「CGI実行許可などの設定は必要最低限のディレクトリに絞る」です。

 例えば、画像の添付が可能な掲示板などでファイルの拡張子を制限していないと、悪意のあるCGIスクリプトのアップロードを許す結果になります。そのような場合でもアップロード先ディレクトリでのCGI実行が禁止されていれば、スクリプトが実行されてしまう最悪の事態を回避できます。リスト2の内容をトップディレクトリの.htaccessに記述し、デフォルトでは各種機能を無効にするのがよいでしょう。

 また、SSIに関しては、第1回(http://www.thinkit.co.jp/article/134/1/)、第2回(http://www.thinkit.co.jp/article/134/2/)で使用している「Options +Includes」の代わりに「Options +IncludesNOEXEC」を使うことで、SSIによるコマンド実行を抑制できます。コマンド実行が必要なければ、後者を使いましょう。

 これらの注意点を意識するだけでも、セキュリティーはずいぶん向上するはずです。思い当たる点があれば、改善しましょう。

 次のページでは、ログの解析について解説します。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30