2013年2月25日月曜日
2013年2月17日日曜日
◆「失敗した要求のトレース」を使う
IISには「HTTPステータス」を条件としてトレースログを取得する機能がある。
エラーのアウトプットだけでなく、サーバーの内部でどのようにしてそのエラーが発生したのかをある程度探ることができる。
インストール方法(2012)
- 「サーバーマネージャ」を起動する
- 「役割と機能の追加」をクリック
- 「インストール種類の選択」で「役割ベースまたは機能ベースのインストール」を選択して「次へ」
- 「対象サーバーの選択」画面でサーバーを選択して「次へ」
- 「Webサーバー(IIS)」「Webサーバー」「状態と診断」「トレース」をチェックして「次へ」
- 「機能の選択」で「次へ」
- 「インストールオプションの確認」画面で「インストール」をクリック
トレースを有効にする
- 「IISマネージャ」を起動する
- 画面左の「接続ペイン」で対象のサイト(ここでは「Default Web Site」)を選択
- 画面右の「操作ペイン」で「失敗した要求のトレース」をクリックする
- 「Webサイトの失敗した要求トレース設定の編集」ダイアログで「有効にする」をチェックして「OK」
トレース規則の設定
- 「IISマネージャ」の「接続ペイン」で「Default Web Site」を選択
- 「機能ビュー」で「失敗した要求のトレースの規則」をダブルクリック
- 「操作ペイン」で「追加」をクリック
- 「トレースするコンテンツの指定」で「すべてのコンテンツ」をチェックして「次へ」
- 「トレース条件の定義」で「状態コード」にトレースしたい「状態コード」を設定(ここでは404)を設定して「次へ」
- 「トレースプロバイダの選択」で「プロバイダー」を選択(ここでは「WWW Server」)し、「詳細ドロップダウン」に「詳細」を指定して「終了」
確認
2013年2月16日土曜日
◆エラーページ設定の編集で「ロック違反」
IISのエラーページをカスタマイズしていたところ以下のようなエラーに遭遇した。
既定のエラーページを指定しただけなのだが・・・。
htmlファイル自体はロックされているわけではない。
調べてみると以下のような対策が載っていた。
2013年2月11日月曜日
◆追加したサイトにWindows認証でローカルからアクセスできない
◆認証
匿名認証
デフォルトでONになっているので通常は誰もがアクセスできる。
IISレベルでは匿名認証を許可し、アプリケーション側でユーザーID/パスワードを入力させて独自に認証するパターンも多い。
匿名認証の設定を行うには
- 「IISマネージャ」を開く
- 左側の「接続ペイン」で設定したいサイトを選択
- 「機能ビュー」で「認証」をダブルクリック
- 「機能ビュー」で「匿名認証」を選択し、「操作ペイン」で「編集」をクリック
- 「匿名認証資格情報の編集」画面が表示される
この画面を見ると、デフォルトでは匿名アクセスユーザーは内部的に「IUSR」というユーザーで扱われることが判る。通常はそのままで良いのかと思うが、必要があれば「設定」ボタンを押して変更できる。
※アプリケーションプールID
ここで指定できる「アプリケーションプールID」をちょっと調べてみた。
どのバージョンからかは判らないが、現在アプリケーションプールはその名前と同じユーザー名で動作しているようだ。
例えば、ここの「TestSite」というアプリケーションプールは「TestSite」というユーザーで実行されている。
アプリケーションプールの実体である「w3wp.exe」が「TestSite」ユーザーで実行されているのがわかる。
なので、「匿名認証資格情報の編集」で「アプリケーションプールID」を指定した場合は、この「TestSite」というユーザーが使われることになるのだろう。
なお、この「w3wp.exe」はデフォルトでは「開始モード」が「Ondemand」となっていてクライアントからのアクセスがないと起動されないようである。
よって確認するためには一時的に設定変更(「詳細設定」で「開始モード」を「AlwaysRunning」)しておくと良い。
基本認証とWindows認証
インストール
デフォルトでは「匿名認証」しかインストールされないようなので、「基本認証」のような他の認証を使うときは予めインストールが必要になる。
インストール方法はIIS: ◆アクセス制限で記載した「IPおよびドメインの制限」のインストール方法と同じである。
基本認証とWindows認証の違い
他にも「ダイジェスト認証」や最近追加になった?と思われるものがあるが、ポピュラーな「基本認証」と「Windows」認証を押さえておけばよいだろう。
「基本認証」と「Windows」認証と書いてしまうと、なにやらまったく別のユーザー管理を行うように感じるが(困ったことに今回参考にしている資料も混乱させる説明しか載っていない)、実は「基本認証」も使用するユーザーIDとパスワードはWindowsに登録しているユーザーIDとパスワードそのものである。
「基本認証」の場合はクライアントにログオンしているユーザーとは無関係に必ず「ログインダイアログ」が表示される。
そこにサーバーでユーザー登録されているユーザーIDとパスワードを入力することによって認証が行われる。
「Windows認証」では、通常、Windowsにログオンしているユーザーが自動的にブラウザからサーバーに伝えられて認証が行われる。
ただし、これはIEでかつイントラネット環境の場合のデフォルト動作なので、ブラウザが異なったり、インターネット環境の場合は動作が異なる可能性がある。(確か)
そう、結局のところ「基本認証」と「Windows認証」はユーザー管理的な視点からみれば同じものである。
単に、都度ダイアログ入力を必要とするかシームレスな認証になるかの違いでしかない。
要は、サーバーにたどり着くまでの道のりが違うだけである。
「基本認証」は暗号化されないが、サーバー・クライアントともにすべての環境でサポートされている可能性が高いので、そのような混在環境で必要とされるのだろう。(別途SSL等でセキュリティを確保)
一般的なWindowsのイントラネット環境であれば「Windows認証」を使のでしょう。
ASP.NETシステムなどでWindowsユーザーを使わずに独自ユーザー管理する場合は「匿名認証」を有効にしてIISの認証はスルーする形になるようです。
今回参照している「インターネット Web サーバー構築ガイドライン | IIS | マイクロソフト 技術情報」では「Windows認証」と呼んでいるが本当は「Windows統合認証」とでも呼ぶべきものではないだろうか。
そして「ASP.NET」などのシステムと絡めば、
| IISの認証 | ASP.NETでの認証 |
| 匿名認証 | Form認証 |
| 基本認証 | Windows認証 |
| Windows統合認証 | |
| ダイジェスト認証 |
といった感じになるのでは?と思うが・・・。
アクセス許可
認証を受けた後のアクセス許可、すなわちどのユーザーはどのリソースにアクセスできるのかといったあたり。
ASP.NETシステムについてはアプリケーション側での制御になると思うので(Web.configでごねごね)、ここでは静的ページだけを考える。
IISマネージャでサイトやディレクトリを選択すると右側の「操作ペイン」に「アクセス許可の編集」というのが現れる。
これをクリックするとファイル(フォルダ)のプロパティ画面が表示される。
すなわち、アクセス許可の制御は通常のACLでやれという事なのだろう。
であれば特に目新しいことは無いので問題はない。
2013年2月10日日曜日
◆アクセス制限
IPアドレスやドメイン名で要求を制限する
特定のIPアドレス、または特定のドメインへのアクセス許可を作成してサイトへのアクセスを制限することができる。
「IPおよびドメインの制限」のインストール
デフォルトでは「IPおよびドメインの制限」はインストールされないので別途追加でインストールする。
- サーバーマネージャを起動する
- 「ダッシュボード」で「役割と機能の追加」をクリック
- 「インストールの種類の選択」で「役割ベースまたは機能ベースのインストール」を選択して「次へ」
- 「対象サーバーの選択」画面で「サーバープールからサーバーを選択」をチェックし、自サーバーが選択されているのを確認して「次へ」
- 「サーバーの役割の選択」画面で「Webサーバー(IIS)」「Webサーバー」「セキュリティ」を展開して、「IPおよびドメインの制限」をチェックして「次へ」
- 「機能の選択」画面でそのまま「次へ」
- 「インストールオプションの確認」画面で「インストール」をクリック
IPアドレスの制限を設定する
- 「IISマネージャを起動する」(インストール後の時は再起動)
- 左ペインのツリービューでサーバーを選択し、「機能ビュー」から「IPアドレスおよびドメインの制限」をダブルクリック
- 右側の操作ペインの「機能設定の編集」をクリック
- 「IPおよびドメインの制限の設定の編集」ダイアログで「特定できないクライアントのアクセス」が「許可」になっているのを確認する。
(デフォルトではすべてのアドレスからのアクセスが許可されている) - ダイアログを閉じて、操作ペインで「拒否エントリの追加」をクリック
- 「拒否の制限規則の追加」ダイアログで「特定のIPアドレス」または「IPアドレスの範囲」に拒否したいアドレスを設定して「OK」
- 指定したIPアドレスからサイトにアクセスし、拒否されるか確認する
ドメインでの制限を設定する
◆サーバー設定
設定ファイル
基本となる設定は「%system%\System32\inetsrv\config」にある以下の3ファイルで行われる。
IIS7の説明だが、TechNetに以下のような説明がある。我々が使う可能性があるのは「ApplicationHost.config」だろうか。
各サイトや仮想ディレクトリではこれらを継承している。
IISマネージャの機能ビューに表示されるアイコンから設定を変更すると、その階層に「Web.config」ファイルが作られて上位での設定がオーバーライドされる。
- ApplicationHost.config - この構成ファイルはすべてのWebサイトやアプリケーションに関係する設定を保存しています。
- Administration.config - この構成ファイルはIISの管理に関連する設定を保持します。これらはIISマネージャー用にインストールされた管理モジュールの一覧のほか、各管理モジュールが利用する構成設定を含みます。
- Redirection.config - IIS 7.0 は複数のIISサーバーを中央管理の単一の構成ファイルで管理するシステム構成をサポートします。この構成ファイルjは中央管理の構成ファイルがどこに配置されているかを指定しています。
仮想ホストの機能を使う
1台のサーバーで複数のサーバーに見せかける機能。
ここでは別のホスト名でサイトを一つ追加してみる。
仮想ホストの作成
- 「IISマネージャ」を起動する
- 左ペインのツリーから「サイト」を右クリックして表示されたコンテキストメニューから「Webサイトの追加」をクリック
- 「Webサイトの追加」画面で「サイト名」「物理パス」「ホスト名」を指定して「OK」をクリック(IPアドレスも別途指定できるがNIC割り当てる必要があると思われ)
社内環境等であれば、ここで追加したホスト名をDNSに登録する所だろうが、とりあえず自宅環境なので「hosts」ファイルに「minminnanasv2」を追加する。
仮想ホストに別名をつける
追加した仮想ホストには、別なホスト名やポート名を追加でつけることもできる。