IT

Apache(クライアントアクセス制御、バーチャルホスト等)【LPIC level2】

Apache(1)の続きですので、読んでない方は下記リンクからApache(1)を読んでみてください。

外部設定ファイル

AccessFileName ファイル名

httpd.conf以外のファイルに設定を記述し、httpd.confの設定を上書きすることも出来ます。外部設定ファイルのファイル名は、httpd.confファイル内のAccessFileNameディレクティブに指定されます。デフォルトは「.htaccess」です。

AllowOverride パラメータ

外部設定ファイルの利用を許可するには、httpd.confファイル内のAllowOverrideディレクティブで指定します。

パラメータ説明
AuthConfig認証関係の設定を許可します。
LimitOrder、Allow、Denyによる設定を許可します。
All全ての設定変更を許可します。
None 全ての設定変更を禁止します。

Apacheの制御

Apacheの制御にはinit/systemdの他に、apachectlコマンドも利用できます。

書式は「apachectl サブコマンド」です。

以下は、apachectlの主なサブコマンドです。

サブコマンド説明
startApacheを起動します。
stopApacheを終了します。
restartApacheを再起動します。
gracefulApacheを安全に再起動します。
(httpdが停止中なら起動し、リクエスト処理中なら再起動を待ちます。)
configtest設定ファイルの構文をチェックします。

モジュール

Apacheでは様々な機能を持ったモジュールを必要に応じてロードしたりアンロードしたりすることが出来ます。新しい機能を加える場合でも必要なモジュールをコンパイルしてロードするだけで済みます。Apacheの機能の多くはモジュールによって実現されています。

モジュール名説明
mod_authn_file.htaccessでのユーザー認証機能
mod_authn_basicBASIC認証
mod_authn_digestダイジェスト認証
mod_authz_ hostホストベースのアクセス制御
(Requireディレクティブ)
mod_authz_ userユーザーベースのアクセス制御
(Requireディレクティブ)
mod_access_compatホストベースのアクセス制御
mod_so動的(DSO)モジュールを組み込む機能を提供
mod_sslSSLによる暗号化通信を提供
mod_perlPerlの機能を提供
mod_php PHPの機能を提供

Apacheで使用するモジュールには静的モジュールと動的(DSO)モジュールがあります。

静的モジュール

静的モジュールはApacheインストール時に組み込むモジュールです。

静的モジュールは「httpd -l」で確認することが出来ます。

動的モジュール

動的(Dynamic Shared Object略してDSO)モジュールは、いつでもインストールや有効無効を設定できるモジュールです。

動的モジュールは「apxs」コマンドでコンパイルとインストールをします。

httpd.confファイルのLoadModuleディレクティブで有効無効を設定できます。

クライアントアクセス制御

Apacheを使った認証方法の中にはBasic認証とDigest認証の2種類があります。

BASIC認証

BASIC認証とは、Apache認証方式の一つで、ユーザー名とパスワードを使う単純な認証方式です。

認証に用いられるユーザー名とパスワードを設定するコマンドは「htpasswd」です。以下はhtpasswdコマンドの主なオプションです。

オプション説明
-cパスワードファイルを新規作成する。
-mMD5で暗号化する。
-sSHA1で暗号化する。
-Dユーザーを削除する。

ダイジェスト認証

ダイジェスト認証とは、BASIC認証と同じくユーザー名とパスワードを使う認証方式ですが、認証情報をハッシュ化して送受信することでセキュリティを高める認証方式です。

認証に用いられるユーザー名とパスワードを設定するコマンドは「htdigest」です。 以下はhtdigestコマンドの主なオプションです。

オプション説明
-cパスワードファイルを新規に作成する。

BASIC認証とダイジェスト認証に関するディレクティブです。

ディレクティブ説明
AuthType認証方式の指定します。
BASIC認証の場合はBasic
ダイジェスト認証の場合はDigest
AuthName忍か領域名を指定します。
ここで指定した文字列は認証時に出力されます。
AuthUserFileパスワードファイル名を指定します。
AuthGroupFileグループファイル名を指定します。
Requireアクセス可能なユーザーを指定します。
(ユーザー名またはvalid-user)

ホストベースのアクセス制御(1)

Order、Allow、Denyディレクティブを使ってIPアドレスやホスト名、ドメイン名でアクセス制御が出来ます。

設定Order Deny.AllowOrder Allow,Deny
デフォルト全て許可すべて拒否
一部のみ許可Order Deny,Allow
Deny from all
Allow from IPアドレス|ホスト名
Orde Allow,deny
Allow from IPアドレス|ホスト名
一部のみ拒否Order Deny,Allow
Deny from IPアドレス|ホスト名
Order Allow,Deny
Allow from all
Deny from IPアドレス|ホスト名
全て許可Order Deny,AllowOrder Allow,Deny
Allow from all
すべて拒否Order Deny,Allow
Deny from all
Order Allow,Deny

ホストベースのアクセス制御(2)

IPアドレスやホスト名、ドメイン名などでアクセス制御したい場合は、Requireディレクティブを使います。

Requireディレクティブの書式は「Require エンティティ [値]」です。以下は主なエンティティです。

エンティティモジュール説明
all grantedmod_authz_core全て許可
all deniedmod_authz_core全て拒否
env 環境変数mod_authz_core指定した環境変数が指定されていると許可
method httpメソッドmod_authz_core指定したhttpメソッドに合致すると許可
expr 表現 mod_authz_core 指定した表現に合致すると許可
ip IPアドレス(範囲)mod_authz_host指定したアドレス(範囲)を許可
host ホスト名mod_authz_host指定したホスト名を許可
user ユーザー名mod_auth_user指定したユーザーを許可
group グループ名mod_auth_user指定したグループを許可
valid-usermod_auth_user正常に認証されたユーザーを許可

バーチャルホスト

Apacheが備えているバーチャルホスト機能を利用すると1台のサーバーで複数のWebサイトを管理することが出来ます。バーチャルホストには名前ベースとIPベースがあります。

名前ベースのバーチャルホスト

名前ベースのバーチャルホストとは、1つのIPアドレスに複数のドメイン名を設定するバーチャルホストのことです。

IPベースのバーチャルホスト

IPベースのバーチャルホストとは、複数のIPアドレスにそれぞれ異なるドメイン名を設定します。受け付けるIPアドレスの設定はListenディレクティブを使用します。

今回は、Apache(2)で外部設定ファイル、Apacheの制御、モジュール、クライアント認証制御、バーチャルホストについてでした。

最後まで読んで頂き、ありがとうございました。

LPIC level2の他の分野へ移動できる全体ページへは以下リンクからお願いします。