特定のディレクトリやファイル
#####特定のディレクトリやファイルに関する設定(ブロックディレクティブ)#####
<Directory /> "/"ディレクトリに対して機能を制限する指定
Options FollowSymLinks (ルートディレクトリの設定はサブディレクトリ設定のない場合に有効)
AllowOverride None アクセスコントロールファイル(.htaccess)を参照しない
ルートディレクトリでこれをNone以外にすると1階層ごとに捜査される為多少時間がかかる
</Directory>
<Directory "/var/apache/htdocs"> /var/apache/htdocsディレクトリに対して機能を制限する指定
Options Indexes FollowSymLinks MultiViews 解説を参照
AllowOverride None アクセスコントロールファイル(.htaccess)を参照しない
Order allow,deny 以下のAllowとDenyの評価順。Allow→Denyの順で評価
Allow from all 全てのホストからアクセスを許可する
<Directory ~ "^/www/.*/[0-9]{3}"> チルダ~を使うと正規表現でのマッチも可能(左記は/www/数字3ケタ のディレクトリにマッチ)
</Directory>
★Options命令
・Indexes DirectoryIndexで指定したファイルが見つからない場合ディレクトリリストを表示
・FollowSymLinks このディレクトリのシンボリックリンクをたどることを許可
・SymLinksIfOwnerMatch ファイルの所有者とシンボリックリンクの所有者が同じ場合のみリンクをたどることを許可
・MultiViews ロケールに合わせて異なる言語を表示できるようになります
・ExecCGI 特定のディレクトリ配下で CGI の実行を許可(ScriptAlias ディレクトリ外の CGI)
・All MultiViewsを除いた全てのものが利用可能(デフォルト)
・Includes サーバ側インクルード機能(SSI)を許可
・IncludesNOEXEC サーバ側インクルード機能(SSI)を許可しますが、
#exeコマンドとCGIスクリプトの#include は含みません
・None 全ての機能が利用できない
例:注意
Options ExecCGI こう書いた場合ExecCGI以外のオプションが全て無効になってしまう
Options +ExecCGI + は機能追加。- は機能削除。
Options ExecCGI
Options Indexes 2行でこう書いた場合は、下のIndexesしか有効にならない。
■ ディレクティブ
URL内に書かれた文字の
httpd.confによるアクセス制限(mod_access)
例
Order deny,allow Deny、Allowの順で評価(デフォルト)
Allow from 192.168.1.0/24 このアドレスからのアクセスを許可(複数の場合スペース区切り)
Deny from all その他のアドレス拒否
その他
Allow from env=variablename 指定された環境変数の有無の応じてアクセスを制御
例 hogehoge v1.0というブラウザがアクセスしてきた場合はアクセス許可
BrowserMatch ^hogehoge/1.0 let_me_in
<Directory /docroot>
order deny,allow
deny from all
allow from env=let_me_in
</Directory>
例 環境変数Refererが"http.//www.example.com"で始まっているならば許可(mod_setenvif)
SetEnvIf Referer "^http://www\.example\.com" ref_ok
order deny,allow
deny from all
allow from env=ref_ok
※ただしRefererはNorton等のセキュリティソフトによってブロックされたり偽装が可能なので注意
その他には環境変数Host、User-Agent等がよく利用される
●ファイルの保護
例 拡張子が.dat .log .csv のファイルにはアクセスできない
<Files ~ "\.(dat|log|csv)$">
deny from all
</Files>
※なおサーバ側で.htaccessを保護していないならここでしておく<Files ~ "^\.ht">
認証(このディレクトリでパスワード認証を使用)
AuthType Basic 認証方法を指定(BasicかDigest)
※Digest(ダイジェスト認証)とは
ハッシュ(MD5)を使ってパスワード認証を行う
ただしモジュールmod_digest.oを組み込みhtdigestコマンドをメイクし、
それようにパスワードファイルも作成する必要がある。
またクライアントのブラウザも対応している必要がある
AuthName test 認証領域の名前を設定
(アカウントとパスワードを入力するダイアログボックスに表示される)
AuthUserFile /usr/local/apache/ok_users/.htpasswd
認証用ディレクトリ用のパスワードファイルの保存場所を指定
(WEBサーバのドキュメントツリーの外側に保存すること)
※このファイルの作成方法は下記パスワードファイルの作成を参照
require valid-user パスワードチェックを実際に稼動させる
アクセスを許可するアカウントを指定
(valid-userとした場合はパスワードファイル内の全ユーザを承認)
その他
AuthGroupFile /usr/local/apache/ok_users/.group
グループ名とそのグループメンバーを定義したファイル
[ファイルの中身]
group1: user1 user2
group2: aaa bbb
file-owner AuthUserFileデータベースに存在し、
かつリクエストしたファイルが所有者と一致した場合に接続を承認する
file-group AuthUserFile,AuthGroupFileデータベースに存在し、
かつリクエストしたファイルの所有グループが一致した場合に接続を承認する
satisfy any 認証とIPの両方で制限されている場合にこのディレクティブが有効
anyかall(デフォルト)で指定
・allの場合、IPのアクセス制限をパスした後ユーザ名とパスワード認証
・anyの場合、上記のどちらかをパスするとOK
例 192.168.1.100以外からの接続はパスワードを求める
require valid-user
satisfy any
order deny.allow
allow from 192.168.1.100
deny from all
※パスワードファイルの作成(htpasswd ユーティリティ使用)
このユーティリティは以下にある。
Apache2の場合 ソースの下の/support/htpasswd
Apache1.3.2xの場合 ソースの下の/src/support/htpasswd.c をコンパイルする
make htpasswd
htpasswd -c [パスワードファイル名] [ユーザ名]
-c 新しいファイルを作成(2回目からは -c は不要)
-m パスワードを強制的にMD5で暗号化
-d パスワードを強制的にCRYPTで暗号化(デフォルト)
-p パスワードを暗号化しない
-s パスワードを強制的にSHAで暗号化
-b 作成時パスワードも入力。
htpasswd -b パスワードファイル名 ユーザ名 パスワード
例
htpasswd -m -c /usr/local/apache/ok_users/userlist testuser
その後パスワードを2回入力
<Limit>ディレクティブ
囲いの中にあるアクセス制御の適用を特定のHTTPメソッドのみに制限する
※一般的にLimitはどうしても必要なとき意外は使用しないほうが良い(PUTを実装しているときGETは制限等)
例 POST PUT DELETEメソッドが使用できない
<Limit POST PUT DELETE>
Require valid-user 有効にする
</Limit>
<LimitExcept> ディレクティブ Limitの逆。指定したメソッド以外が使用できない
例 POST GETメソッド以外が使用できない
<LimitExcept POST GET>
Require valid-user
</LimitExcept>
▲HTTPメソッド
GET URLがファイル名のときはそのファイルの中身を、
プログラム名のときはそのプログラムの出力を返す(読み込み)
HEAD GETと同じだがHTTPヘッダのみを返す
POST クライアントからデータを渡す。フォームデータを送るときなどに使用
PUT URLで指定したサーバ上のファイルを置き換える(書き込み)
DELETE URLで指定したサーバ上のファイルを削除する
OPTIONS 通信オプションの通知など
PATCH PUTと同じだが、差分のみを置き換える
PROPFIND ファイルの一覧を取得
その他
●UserDir public_html UserDirはhttp://hostname/~user-nameがリクエストされるとuser-nameの
ホームディレクトリを返す
<IfModule mod_userdir.c> 指定したモジュールがコンパイルされているか
Apacheに動的に読み込まれているとき有効になる
UserDir public_html 各ユーザのホームディレクトリにこの名前のディレクトリを置くと
</IfModule> http://hostname/~user-name/public_html で参照できるようになる
例
UserDir /usr/web /usr/web/user-name のディレクトリを返す
UserDir /home/*/www /home/user-name/www のディレクトリを返す
UserDir disabled root 指定したユーザ名に対してはディレクトリ名へ変換を行わない
(rootは宣言しておく方が良い)
<Directory "/home/*/public_html"> ユーザのホームディレクトリを指定
Options Indexes +ExecCGI
AddHandler cgi-script .cgi
AllowOverride None
order deny,allow
allow from all
</Directory>
●DirectoryIndex index.html ファイル名を指定しないでアクセスした場合、このファイル名にアクセス
スペースで区切り複数指定した場合、左から順にアクセス
●
<Files ~ "^\.ht"> <Files>命令は、ファイルネームによるアクセスコントロールを設定
Order allow,deny
Deny from all .htから始まるファイルを全てのクライアントから参照できないように
Satisfy All (.htaccessファイル)
</Files>
●UseCanonicalName On onの場合CNAMEで宣言された別名でのリクエストを受け付け、ServerName
に書かれたURLを返す。offの場合別名のまま返す。
<IfModule mod_mime.c>
● TypesConfig /etc/apache/mime.types
</IfModule> MIMEタイプの設定ファイルを指定
●ErrorDocument 404 /cgi-bin/bad_urls.pl
エラーページについて「エラーコード ドキュメント」で指定できる
ドキュメントはそのページのURL、ファイル名、"内容"、が使用可
■mod_alias
古い URL を新しいものへマップする
Redirect /service http://www2.example2.com/service
クライアントは http://www.example.com/service/aaa.txt へのリクエストを行なうと、
代わりに http://www2.example2.com/service/aaa.txt をアクセスするように告げられます
Redirect permanent ステータス(301) リソースが永久に移動したということを意味する
※mod_rewriteを使わずにリダイレクト出来る
Redirect temp (デフォルト)一時的なリダイレクトステータス(302)
Redirect seeother (303)リソースが他のもので置き換えられた
Redirect gone (410)リソースが永久に削除されたことを意味(url 引数は省略)
URL をファイルシステムの位置にマップ(DocumentRoot 以外の場所に保管することを可能にします)
Alias /image /ftp/pub/image
<Directory /ftp/pub/image>
Order allow,deny
Allow from all
</Directory>
http://www.example.com/image/test.gifへのリクエストに対して、/ftp/pub/image/test.gifを返します
前へ トップへ