MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Apache - アクセス制御のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Apache - アクセス制御
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <br><br> == ディレクトリ単位のアクセス制御 == <syntaxhighlight lang="apache"> <Directory "/srv/www/htdocs"> # Order : AllowおよびDenyの順序を決める # Allow : 許可するアクセス元を指定する # Deny : 禁止するアクセス元を指定する Order Allow,Deny # 順序は、Allowが先 Allow from all # 全て許可する Deny from 192.168.1.10 # IPアドレスを完全に指定する Deny from 192.168.5 # IPアドレスを先頭から24ビットに限定して指定する Deny from 192.168.1.0/24 # サブネットマスクも併せて指定する (下の書式と等価) Deny from 192.168.1.0/255.255.255.0 # サブネットマスクも併せて指定する (上の書式と等価) Deny from sample.co.jp # ホスト名またはドメイン名の一部を指定する </Directory> </syntaxhighlight> <br><br> == ファイル単位のアクセス制御 == <syntaxhighlight lang="apache"> <File "/srv/www/htdocs/index.php"> # Order : AllowおよびDenyの順序を決める # Allow : 許可するアクセス元を指定する # Deny : 禁止するアクセス元を指定する Order Allow,Deny # 順序は、Allowが先 Allow from all # 全て許可する Deny from 192.168.1.10 # IPアドレスを完全に指定する Deny from 192.168.5 # IPアドレスを先頭から24ビットに限定して指定する Deny from 192.168.1.0/24 # サブネットマスクも併せて指定する (下の書式と等価) Deny from 192.168.1.0/255.255.255.0 # サブネットマスクも併せて指定する (上の書式と等価) Deny from sample.co.jp # ホスト名またはドメイン名の一部を指定する </File> # htdocsディレクトリ内に存在するファイルを全て指定する場合 <File "/srv/www/htdocs/*"> # ...略 </File> # htdocsディレクトリ内のindexから始まるファイル名を指定する場合 <File "/srv/www/htdocs/index*"> # ...略 </File> # .htaccessファイルを指定する場合 # これにより、外部から.htaccessファイルを閲覧することができなくなる <Files ~ "^.*\.([Hh][Tt][Aa][Cc][Cc][Es][Ss][Ss])"> # ...略 </File> </syntaxhighlight> <br><br> == HTTPリクエストヘッダ情報で制限 == HTTPリクエストヘッダのWebブラウザの種類の情報、リンク元の情報により、アクセス制限を行う。<br> <br> <u>※注意</u><br> <u>HTTPリクエストヘッダを確認する場合、</u><br> <u>Chromium系ブラウザでは chrome://net-internals/#events にアクセスして、"type:URL_REQUEST"で検索することにより確認できる。</u><br> <br><br> == ユーザエージェントによる制限 == HTTPリクエストヘッダには、Webブラウザの情報やOSの情報等(ユーザエージェント)が含まれている。<br> <br> 以下の例では、HTTPリクエストヘッダのUser-Agentヘッダに<u>Mozilla</u>という文字列が含まれている場合のみアクセスを許可している。<br> <syntaxhighlight lang="apache"> <Directory "/usr/local/apache2/htdocs"> # BrowserMatch : User-Agentヘッダ内に"Mozilla"という文字列が正規表現がマッチする場合は、環境変数mozillaを設定 BrowserMatch "Mozilla" mozilla Order Deny,Allow Deny from all # 環境変数mozillaが設定されている場合は、アクセスを許可する Allow from env=mozilla </Directory> </syntaxhighlight> <br><br> == Refererによる制限 == Referer (リンク元のURL情報) によるアクセス制御は、Webページ内の画像にディープリンク(直リンク)されたくない場合、または、アクセス解析を混乱させるリファラーSPAM対策時に有効である。<br> <br> <syntaxhighlight lang="apache"> <Directory "/srv/www/htdocs/icons"> # SetEnvIf: 指定した対象に正規表現がマッチする場合、環境変数を設定する # 任意のHTTPリクエストヘッダを対象にできる # Refererヘッダに www.example.jp が含まれている場合、環境変数exampleを設定 SetEnvIf Referer "www\.example\.jp" example Order Deny,Allow Deny from all # 環境変数exampleが設定されている場合はアクセスを許可する Allow from env=example </Directory> </syntaxhighlight> <br><br> == リダイレクト == ==== 一時リダイレクト ==== <syntaxhighlight lang="apache"> # httpd.confファイル # Redirect <アクセスするパス> <リダイレクト先のパスまたはURL> # これは、ステータスコード 302 (tmp) である # 以下の例では、http://example.com/redirect_sample/ にアクセスする場合、http://example.com/redirect/ にリダイレクトされる Redirect /redirect_sample/ http://example.com/redirect/ # アクセスするパスは正規表現を使用して指定することもできる # 以下の例は、http://example.com/redirect_sample/内のファイルにアクセスする場合は、全て http://example.com/redirect/ にリダイレクトされる Redirect ^/redirect_sample/(.*)$ http://example.com/redirect/ </syntaxhighlight> <br> ==== 恒久リダイレクト ==== <syntaxhighlight lang="apache"> # httpd.confファイル # Redirect <ステータス> <アクセスするパス> <リダイレクト先のパスまたはURL> # これは、ステータスparmanent (ステータスコード 301 : Moved Parmanetly) を返す Redirect parmanent /redirect_sample/ http://example.com/redirect/ </syntaxhighlight> <br><br> == コンテントネゴシエーション == HTTPリクエストヘッダは、言語、文字タイプ、データタイプ等の環境情報について通知している。<br> 複数の形式で優先度が付いており、サーバ側は最適なものを選択することができる。<br> <br> このように、処理できるデータ形式をクライアントとサーバ間で自動的に問い合わせることを、<u>コンテントネゴシエーション</u>と呼ぶ。<br> <br> # Accept : クライアントが処理できるデータタイプと優先度 # Accept-Language : クライアントが処理できる言語と優先度 # Accept-Charset : クライアントが処理できる文字コードと優先度 # Accept-Encoding : クライアントが処理できるデータ転送方式と優先度 # q : 品質値 GET / HTTP / 1.1 Accept-Language : ja, en-us; q=0.7, en:q=0.3 Accept-Charset : Shift_JIS,utf-8; q=0.7,*;q=0.7 <br> <syntaxhighlight lang="apache"> # httpd.confファイル <Directory "/srv/www/htdocs"> # MultiViews : コンテントネゴシエーションを有効にする Options FollowSymLinks MultiViews # AddLanguage : 拡張子を言語指定に関連付ける AddLanguage en .en AddLanguage ja .ja # AddCharset : 拡張子を文字コード指定に関連付ける AddCharset shift_jis .sjis </Directory> </syntaxhighlight> <br> ドキュメントルートに日本語のページ(lang.html.ja)と英語のページ(lang.html.en)を配置してアクセスする。<br> * http://example.com/lang.html * http://example.com/lang.html.ja * http://example.com/lang.html.en <br> <syntaxhighlight lang="html"> <!-- lang.html.ja --> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>日本語のページ</title> </head> <body> <p>日本語のコンテンツ</p> <p>English Content</p> </body> </html> </syntaxhighlight> <br> <syntaxhighlight lang="html"> <!-- lang.html.en --> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>English Page</title> </head> <body> <p>日本語のコンテンツ</p> <p>English Content</p> </body> </html> </syntaxhighlight> <br> HTTPリクエストヘッダで優先順位が決まらない、または、指定が無い場合は、<code>LanguagePriority</code>、<code>AddDefaultCharset</code>の設定を参照すること。<br> <syntaxhighlight lang="apache"> LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW AddDefaultCharset off </syntaxhighlight> <br><br> == エラーメッセージの変更 == <syntaxhighlight lang="apache"> # Payment Required : 料金の支払いを行うまで、リクエストが処理できない状態 ErrorDocument 402 http://www.example.com/subscription_info.html # Forbidden : 閲覧権限が無いファイルやディレクトリ ErrorDocument 403 /deny.html # Not Found : Webページが見つからない場合 ErrorDocument 404 /missing.html # Not Found : Webページが見つからない場合 (CGIを使用することも可能) ErrorDocument 404 "/cgi-bin/missing_handler.pl" # Internal Server Error : サーバ内で起きた何らかのエラー ErrorDocument 500 "The server made a boo boo." </syntaxhighlight> <br><br> == ロボットからのアクセスを制限 == ロボットにより収集されたくないディレクトリおよびファイルを、robots.txtファイルで指定する。<br> <u>また、robots.txtファイルは、DocumentRootディレクトリに作成する必要がある。</u><br> <br> # robots.txtファイル User-agent: * Disallow : /hoge/ Disallow : /piyo/fuga/ <br><br> == データタイプの追加 == MIMEタイプは、サーバ側で決めた後、HTTPレスポンスヘッダであるContentTypeに記述する。<br> <br> MIMEタイプの例を以下に示す。<br> * テキスト *: text/plain * CSV *: text/csv * HTML *: text/html * CSS *: text/css * PHP *: application/x-httpd-php * XML *: text/xml (ただし、ユーザから読めるものである場合 ([https://tools.ietf.org/html/rfc3023 RFC 3023, section 3])) * JSON *: application/json * 画像 *: image/gif *: image/bmp *: image/jpeg *: image/png *: image/tiff *: image/webp *: image/svg+xml <br> <syntaxhighlight lang="apache"> # httpd.confファイル # ファイル名の拡張子をMIMEタイプに関連付ける AddType application/epub+zip .epub </syntaxhighlight> <br><br> == サーバの種類を隠す == HTTPレスポンスヘッダ、エラードキュメントのサーバ種類、バージョン情報が含まれている。<br> サーバのバージョン固有の脆弱性が発見された場合、攻撃対象を回避するためにこれらの情報を隠すことができる。<br> <br> <syntaxhighlight lang="apache"> # httpd.confファイル # ServerTokens : HTTPレスポンスヘッダのServerヘッダ情報の表示を設定する ServerTokens Prod # ServerSignature : エラードキュメントの末尾情報の表示 / 非表示を設定する # On または Offを指定する ServerSignature Off </syntaxhighlight> <br> <center> {| class="wikitable" | style="background-color:#fefefe;" |+ ServerTokensの設定 |- ! style="background-color:#66CCFF; width: 50%" | ServerTokensの種類 ! style="background-color:#66CCFF; width: 50%" | 例 |- | Prod || Apache |- | Majar || Apache/2 |- | Minor || Apache/2.2 |- | Minimal || Apache/2.2.15 |- | OS || Apache/2.2.15(CentOS) |- | Full<br>(デフォルト) || Apache/2.2.15(CentOS)DAV/2 |} </center> <br><br> __FORCETOC__ [[カテゴリ:Web]]
Apache - アクセス制御
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse