連載
» 2009年04月08日 00時00分 公開

実践でも役立つLPICドリル(11):Apache&Squidアクセス制御/ユーザー認証の設定 (1/4)

本連載は、Linux 認定試験 LPICに対応しています。一般的なLinuxユーザーレベルのトピックは省略し、システム管理とサーバ管理の内容を取り上げています。また、LPIC対策だけでなく、関連するトピックについて系統的な理解を問う問題も出題しています。連載の特徴は、対象となるプログラムのバージョンを可能な限り明記していること、比較的新しくまとまった解説がまだ少ないトピック、重要だが理解しにくいトピックを優先して取り上げていることです。問題を解き、その解説を読むことにより実践でLinuxを活用できる力を身に付けます。

[大竹龍史,ナレッジデザイン]

今回のディストリビューション:CentOS 5.2

問題を解く鍵 【1】【2】

 このトピックに関連した設定や試験問題を解く際には、以下の項目がポイントになります。

【1】WebサーバApacheのアクセス制御の設定方法を把握しておく

 Apacheではアクセス制御の対象をディレクティブのDirectory、Files、Locationで指定します。

 このディレクティブで指定した対象に対して、アクセスを許可するか、拒否するかを設定します。

ディレクトリに対するアクセス制御
<Directory ディレクトリ名>
……アクセスの設定
</Directory>
ファイルに対するアクセス制御
<Files ファイル名>
……アクセスの設定
</Files>
URLによる指定に対するアクセス制御
<Location URLの指定>
……アクセスの設定
</Location>

 アクセスの許可・拒否については多くの設定がありますが、今回はホストからのアクセスの許可・拒否とユーザー認証による許可・拒否の設定を取り上げます。

 ホストからのアクセスの許可・拒否は次のディレクティブで行います。

Order、Allow、Deny

 Orderディレクティブでデフォルトのアクセスの状態とAllowディレクティブとDenyディレクティブが評価される順番を制御します。

Order Deny、Allow DenyディレクティブがAllow ディレクティブの前に評価されます。後から評価されるAllowディレクティブが優先されます。アクセスはデフォルトで許可されます
Order Allow、Deny AllowディレクティブがDenyディレクティブの前に評価されます。後から評価されるDenyディレクティブが優先されます。アクセスはデフォルトで拒否されます

 AllowまたはDenyディレクティブで、ホスト名、ドメイン名、IPアドレス、IPアドレスの一部を指定して、そこからのアクセスを許可あるいは拒否します。第1引数はfromを指定します。

Allow from host.knowd.co.jp
Allow from .knowd.co.jp
Deny from 172.16.0.1
Deny from 172.16
(例)

 すべてのホストからのアクセスを許可する場合は、

Allow from all

 すべてのホストからのアクセスを拒否する場合は、

Deny from all
<Directory /var/www/html/school>
Order deny,allow
Deny from all
Allow from .knowd.co.jp
</Directory>
(例)/var/www/html/schoolへのアクセスを.knowd.co.jp内のホストからのみ許可する

【2】WebサーバApacheのユーザー認証の設定方法を把握しておく

 ユーザーがWebサーバApacheを利用するとき、Apache httpdがユーザー名とパスワードを要求し、正しく入力したユーザーだけがアクセスできるよう、ユーザー認証の設定を行うことができます。

図1 Apacheのユーザー認証画面の例 図1 Apacheのユーザー認証画面の例

 Apacheは認証方式としてBasic認証とDigest認証を提供しています。設定はAuthTypeディレクティブにより、認証方式を指定します。

 Basic認証では、ユーザー名とパスワードは平文でネットワークを流れます(SSLなどで暗号化しない場合)。

 Digest認証では、challenge-response方式を使用し、ユーザー名とパスワードが平文でネットワークを流れることはないので、より安全です。

 なお、Digest認証を使用する場合、WebブラウザがDigest認証をサポートしている必要があります。ここでは広く使われているBasic認証の設定を取り上げます。

(例)

 htpasswdコマンドでユーザー認証ファイル/var/www/htpasswdを作成し、ユーザーuser01を登録する。

# htpasswd -c /var/www/htpasswd user01

 ユーザーuser02も追加して登録する。

# htpasswd /var/www/htpasswd user02

 次に設定ファイルhttpd.confを編集する。

<Directory "/var/www/html/school">
AuthType Basic
AuthName "Students only"
AuthUserFile /var/www/htpasswd
Require valid-user
</Directory>

 アクセス制御の対象に対しての設定が、Allowディレクティブによるホストに対する許可と、Requireディレクティブによるユーザー認証の両方がある場合、そのどちらか片方で許可するか、両方の条件を満たした場合に許可するかをSatisfyディレクティブを使用して、次のようにして指定できます。

どちらか片方の条件を満たした場合に許可:

Require valid-user
Order allow,deny
Allow from 192.168.1
Satisfy Any

両方の条件を満たした場合にのみ許可:

Require valid-user
Order allow,deny
Allow from 192.168.1
Satisfy All

 Satisfyを指定しない場合のデフォルトの動作はAllです。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。