アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » ADMINISTRATOR STAGE » 連載 » UNIX的なアレ:gihyo.jp出張所 » 第9回 知っておきたいApacheの基礎知識 その5

UNIX的なアレ:gihyo.jp出張所

第9回 知っておきたいApacheの基礎知識 その5

前回はユーザにコンテンツを返すためのDocumentRootの設定をしてきました。今回はDocumentRootの設定に引き続き,各種ディレクトリやファイルへの設定をする方法を紹介していきたいと思います。

この設定をいれることで,DocumentRoot内で一部のファイルに対してアクセス制限をかけたりすることができるようになります。

よく使われる設定

それでは,まず頻繁に使用される設定を紹介していきたいと思います。

項目Optionsの設定
記述Options Indexes FollowSymLinks
説明Optionsの引数に,使用をしたいOptionをスペース区切りで追記していく。上記はIndexesとFollowSymlinksという機能を使用した場合の設定例。
項目Allow Overrideの設定
記述AllowOverride None
説明.htaccessで設定を上書きするかどうかの設定。Noneで上書きができない状態となっている。
項目アクセス制限の設定
記述Order allow,deny
Allow from all
Deny from example.com
説明アクセス制限をかけるための設定。Orderは,Allow/Denyの順番をどちらから先にかけるかを設定することができる。allow,deny はブラックリスト方式,deny,allow はホワイトリスト方式のアクセス制限をかける際に使用をする。Allow from, Deny fromはそれぞれ受け入れるホストと許可をするホストを記述する。

その他にも設定可能な項目はたくさんありますが,頻繁に利用されるものをここで記載いたしました。

さまざまなディレクティブ

各ディレクトリやファイルに対して設定を行う方法はapacheでは3種類あります。

それぞれの役割をまとまると下表のとおりになっています。

 ディレクティブ

ディレクティブ名説明
Directory ディレクティブOSのディレクトリからみた構造にマッチする
Files ディレクティブファイル名にマッチする
Location ディレクティブURLとして送られてきた文字列にマッチする

それではサンプルのhttpd.confを例にとってひとつずつ説明をしていきましょう。

Directory ディレクティブ

httpd.confのサンプルの,65行目~70行目の部分で使用しています。

<Directory "/usr/local/apache2/htdocs">   # Directoryディレクティブの設定
    Options Indexes FollowSymLinks        # Indexes,FollowSymLinksの設定
    AllowOverride None                    # .htaccessでの設定の上書きを許可しない
    Order allow,deny                      # allow/denyを適用する順番
    Allow from all                        # すべてのユーザからのアクセスを許可する
</Directory>                              # Directoryディレクティブの終了

これはOSから見た/usr/local/apache2/htdocs以下のディレクトリに対して,<Directory "/usr/local/apache2/htdocs">から</Directory>までに記載されている設定を適用する,という意味になります。

指定したディレクトリ以下には,すべて適用されるという点には注意してください。

上記の場合ですと,「Allow from all」というようにすべてのユーザからのアクセスを許可しているので,対象のディレクトリ以下はすべて見ることができる設定となっています。

Files ディレクティブ

httpd.confのサンプルの,75行目~78行目の部分で使用しています。

<FilesMatch "^\.ht">   # FilesMatchディレクティブの設定
    Order allow,deny   # allow/denyを適用する順番
    Deny from all      # すべてのユーザからのアクセスを拒否する
</FilesMatch>          # FilesMatchディレクティブの終了

Filesディレクティブでは,ファイル名を指定します。上記の場合は,正規表現が利用できるFilesMatchを使用していますので,「^.ht」にマッチするファイルへのアクセスが拒否されている設定です。

.htaccessなどのアクセス制限ファイルは,ユーザーからは直接見れる必要はありません。そのため,このような設定が入れることでアクセスの制限をかけるようにしています。

Location ディレクティブ

httpd.confのサンプルの,224行目~228行目の部分で使用しています(サンプルではコメントアウトされています)。

<Location /server-status>      # Locationディレクティブの設定
    SetHandler server-status   # server-statusの設定
    Order deny,allow           # deny/allowを適用する順番
    Deny from all              # すべてのユーザからのアクセスを拒否する
</Location>                    # Locationディレクティブの終了

Locationディレクティブは,ユーザからのリクエストURLに対して設定をかけることができます。たとえば,http://servername/index.htmlというリクエストがきた場合は,「/index.html」がLocationディレクティブにマッチします。

上記の例ですと,http://servername/server-statusというリクエストが来た場合はすべてのリクエストを拒否をするという設定です。

なお,上記の例は少し特殊なパターンです。Apacheは「/server-status」というリクエストを送るとApacheのステータスを返す機能を持っています。server-statusというディレクトリやファイルは存在はしないので,このような場合はLocationディレクティブで制限をかけます。

各種ディレクティブの正規表現

Filesディレクティブでは使用していましたが,Directory,Files,Locationそれぞれ正規表現を使用することができます。正規表現を使用したい場合は,ディレクティブにDirectoryMatch,FilesMatch,LocationMatchを使用をするか,~を記述します。

正規表現を使用できることは非常に便利ですが,多数のアクセスを受けると高負荷になってしまう可能性もあります。適用させる場所には,注意して使用をするようにしましょう。

最後に

今回は,Directory,Files,Locationディレクティブについて説明をしてきました。

DocumentRootに指定した中でアクセス制限をかけたりなど非常に便利な機能ですが,使いすぎるとどんどんと設定が複雑になってしまいます。たとえば,ユーザに見せたくない情報をDocumentRoot内に設置してDenyで防ぐことはお勧めできません。最初からDocumentRoot外におく設計をしておくようにしましょう。そちらのほうが設定もわかりやすくなりますし,思わぬ事故も防ぐことができます。

無駄な設定を増やさずに,シンプルな設定で構築をするように心がけるようにしましょう。

著者プロフィール

和田修一(わだしゅういち)

株式会社ロケットスタートCTO。PHPやPerlを中心としたアプリケーション開発から,Linuxなどの技術を中心としたインフラ系の設計・構築を担当。個人Blogは「Unix的なアレ」。

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

Ubuntu Weekly Recipe

Ubuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。

C/C++プログラマのためのDTrace入門

よくカーネルのチューニングや解析で活用されるDTraceですが,実はユーザプログラムの開発においても非常に有用です。連載ではC/C++プログラマやテストに関わる方向けにDTraceの使い方を解説します。

Blogopolisから学ぶ計算幾何

計算幾何学は,図形に関するアルゴリズムを研究するコンピュータサイエンスの一分野です。本連載では,ビジュアルブログ検索エンジン「Blogopolis」で採用されている計算幾何のアプローチを例に取り上げながら,計算幾何の初歩を実践的に学習します。

検索エンジンはいかにして動くのか?

本連載では, 今や誰もが利用している検索エンジンの中身を,全体の仕組みやデータ構造,アルゴリズムから分散インデックスまで,最近の研究事例も交えて紹介します。

サイエンスに片思い

本連載では,サイエンスという学問を軸に,そこから広がる可能性やつながり,そしてWebの世界との関係について,前田邦宏氏がさまざまな取材を元に考察し,これからの可能性について展望します。

使ってみよう! Windows Live SDK/API

Windows Liveサービスの一部にはAPIやSDKとして提供されているものがあります。本連載では各API・SDKの紹介とそれらを利用したアプリケーションを開発していきます。

Lifelog~毎日保存したログから見えてくる個性

コンピュータを使って,日常のさまざまなことの記録(ログ)をとり,それを分析して活用することで,もう一段階上の「楽な生活」をめざす日々の研究報告です。

もっと便利に!jQueryでラクラクサイト制作(実践サンプル付き)

本連載では,実践サンプルとともに,jQueryを上手に活用してサイト制作の品質向上・効率化を実現するための実践テクニックを解説します。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス