goo blog サービス終了のお知らせ 

としししのブログー

仕事関連の情報も載せてみたり。

Exchange 2010 CAS Array のEWSにKerberos 委任で接続する場合の設定

2016-03-22 21:42:38 | IT関連
Exchange 2010 CAS Array のEWSにKerberos 委任で接続する場合の設定

2016/3/22 追記

今更ですが、昔記載していた内容(末尾に記載)は正しいやり方ではなくて、次の手順を設定する必要があります。

■負荷分散されたクライアント アクセス サーバーの Kerberos 認証の構成
http://technet.microsoft.com/ja-jp/library/ff808312.aspx

■シェルでの RollAlternateserviceAccountCredential.ps1 スクリプトの使用
http://technet.microsoft.com/ja-jp/library/ff808311.aspx

前提として、以下が終わっている事。
①Exchange 2010 (sp1以上)のインストール
②CAS Arrayの設定(DNSへの登録を含む)

手順を要約すると、以下の通り。
①代替サービスアカウントの作成します。
 AD上でコンピュータアカウントとして作成。デフォルト設定でOK

②SPN登録を実施します。CAS Arrayのアドレスと、①の代替サービスアカウントを紐づけます。
例:ドメイン 「myad.local」 代替サービスアカウント 「ASA」、CAS Arrayアドレス 「CasArrayNlb.local」の場合、
setspn -A http/CasArrayNlb.local myad\ASA
setspn -A http/CasArrayNlb myad\ASA

③CASサーバに代替サービスアカウントを登録します。
 Exchange Management Shellを起動し、以下を実行します。
  CD "C:\Program Files\Microsoft\Exchange Server\v14\Scripts"
  .\RollAlternateserviceAccountPassword.ps1 -ToEntireForest -GenerateNewPasswordFor "myad\ASA$" -Verbose

※C:\Program Files\Microsoft\Exchange Serverはインストールに合わせて変更して下さい。
※"myad\ASA$"はコンピュータアカウント名を指定してください。最後の「$」は忘れないよう注意して下さい。

コマンド実行中、
「Do you want to change password for myad\ASA$ in Active Directory at this time?」
と、ASAのパスワードを変更するメッセージが表示されるので、「Y」を入力。

「THE SCRIPT HAS SUCCEEDED」
が表示されたらOKです。

※Exchange 2010では、ADの「サイト」単位(Active Directoryサイトとサービスで確認)で、1つのCAS Arrayを構成する仕様となっており、
 複数のCASが、単一の「サイト」に存在する場合、すべてのCASにASAの設定をする必要があります。
 上記コマンドは、同一サイトのCASにすべてASAの設定を行います。

※Exchange 2010と2013環境が混在する場合、別の注意事項があるようです。
 ■Kerberos 認証を使用する場合の Exchange 2013 と Exchange 2010 の共存
 http://blogs.technet.com/b/exchangeteamjp/archive/2015/03/05/exchange-2013-and-exchange-2010-coexistence-with-kerberos-authentication.aspx

ひょっとしたら参照されて混乱される方がいるかもと思いましたので、今更ながら更新します。



とりあえず、社内環境でうまくいったのでメモ書き。

※CAS Arrayは既に構築済みとします。
※EWS以外の機能については確認していません。というか、このままだとダメな気がする・・・

①ドメインにCASArray用のユーザアカウントを作成する。

②作成したユーザアカウントを下記のグループへ入れる。
Exchange Trusted Subsystem

③SETSPNで、ユーザアカウントに対して、CAS ArrayのNLB名(NetBIOS、FQDN)のhttpサービスを登録。

④各CASサーバのEWS仮想フォルダのアプリケーションプールIDに、作成したドメインユーザアカウントを設定する。

※Alternate Service Account と呼ばれる代替サービスアカウントの設定は使っていません。
※./RollAlternateserviceAccountPassword.ps1を実行したら、パスワードが変わるんだけど、アプリケーションプールIDのパスワードは放置なんで、EWSが起動しなくなります。。。

暫定の開発環境用設定かな・・・



Kerberos認証 IIS7.0、IIS7.5でSPN登録したアカウントをアプリケーションプールに設定する場合の追加設定

2012-08-05 14:44:44 | IT関連
IIS7.0、IIS7.5で、SPN登録したアカウントをアプリケーションプールに設定した場合、
なんだかうまく動きませんでした。

調べていると、以下のどちらかを設定すると動きました。

1.IISの認証設定で、統合Windows認証の「カーネルモード」を無効にする。

2.ApplicationHost.config内の、「windowsAuthentication」タグに「useAppPoolCredentials」属性を「true」にする。

とりあえずメモ書きで置いときます。

Windows Server 2003 AD強制同期

2010-11-09 11:34:51 | IT関連
長期間眠らせておいたDCをネットワークに接続すると、次のようなメッセージが・・・

----------------------------------------
このサーバーとの最後のレプリケーション以来、廃棄(TOMBSTONE)の有効期間を超えた
時間がたっているため、ACTIVE DIRECTORYはこのサーバーでレプリケートできません。
----------------------------------------

で、調べると対処方法がありました。

■AD強制同期(60日以上経過したBackupから同期する方法)

----------------------------------------
①対象となる全てのDCのレジストリに値を追加
パス:HKLM/SYSTEM/CurrentControlSet/Services/NTDS/Parameters
タイプ:REG_DWORD
値:Allow Replication With Divergent and Corrupt Partner
を1にする

②Active Directoryサイトとサービスで「今すぐレプリケート」を実行

③前述のレジストリを削除
----------------------------------------

レジストリ変更は怖いですね・・・

上記を実行した後、同期を実行しても別のエラーが発生する場合があります。
イベントビューアで、ID=1988が出力されている場合は、
以下の内容を実行して、残留オブジェクトを削除する必要があります。

http://support.microsoft.com/kb/870695/ja

超概略

①下記のコマンドを実行する(DCSrcSvrは複製元ドメコンサーバ名)
repadmin /showrepl /v DCSrcSvr

②①の結果で、
C:\Program Files\Support Tools>repadmin /showrepl /v DCSrcSvr
Default-First-Site-Name\DCSrcSvr
DC Options: (none)
Site Options: (none)
DC object GUID: 57c57340-1b56-494d-83d9-3eba7c7593df
DC invocationID: 9451273b-d947-4ffc-a69f-03e7fc4636c3
・・・(ずらずら続く)

とか表示されるので、「DC object GUID: 」の右の部分をコピーする。

③下記のコマンドを実行する(DCDistSvrは複製先ドメコンサーバ名)
repadmin /removelingeringobjects DCDistSvr 57c57340-1b56-494d-83d9-3eba7c7593df DC=testdc,DC=local

この後、再度同期を実行するとエラー無く実行できました。

ASP.NET 1.1で SSL(https)のWebサービスにアクセスする場合の実装例

2010-03-25 09:15:29 | IT関連
■①次のクラスを定義します。

Public Class MyPolicy
Implements System.Net.ICertificatePolicy

Public Function CheckValidationResult( _
ByVal srvPoint As System.Net.ServicePoint _
, ByVal certificate As System.Security.Cryptography.X509Certificates.X509Certificate _
, ByVal request As System.Net.WebRequest _
, ByVal certificateProblem As Integer _
) As Boolean Implements System.Net.ICertificatePolicy.CheckValidationResult

'常に Trueを返す。
Return True

End Function

End Class


■②Webサービスへのリクエストを発行する前に次の1行を記述します。

System.Net.ServicePointManager.CertificatePolicy = New MyPolicy

とりあえず実装例だけ・・・

Windows Server 2003 NLB構成で Kerberos認証を有効にする

2009-11-20 17:21:15 | IT関連
Windows Server 2003 IIS6 で NLB構成でKerberos認証を有効にする手順。

■ドメインコントローラ上(Active Directory)の作業
①ドメインのユーザアカウントを作成する。
仮に「NLBUser」とします。
②SETSPNを使って、NLBアクセスURL用のホストヘッダーを①のアカウントに設定します。
仮にホストヘッダーを「nlbhost.header.jp」として、下記のコマンド2つを実行
> setspn -A http/nlbhost.header.jp NLBUser
> setspn -A http/nlbhost NLBUser
③Active Directory ユーザとコンピュータを開き、NLBUserのプロパティを開きます。この時、ドメインの機能が「Windows Server 2003」になっているかつsetspn実行後だと、「委任」のタブがあるので、「任意のサービスへの委任でこのユーザを信頼する」を選択し、OKをクリックしてプロパティを閉じます。
④NLBのIPアドレスが、NLBのホスト名に解決されるように設定します。(サーバ側ではDNS設定など。例えば登録時にAliasを利用しないようにするとか 2009/11/10追記)

■Webサーバ上の作業(負荷分散対象全てのサーバ
①作成したドメインアカウントを、各サーバのIIS_WPGグループへ追加します。
②アプリケーションプールを作成し、識別タブで、「構成可能」を選択し、
ドメインユーザアカウントとパスワードを設定します。
③対象の仮想ディレクトリ・もしくはWebサイトのディレクトリセキュリティを「統合Windows認証」にします。
④Web.configに
<authentication mode="Windows" />
<identity impersonate="true" />
がある事を確認します。
※少し追記
⑤仮想ディレクトリもしくはWebサイトのアプリケーションプールを②で作成したものに変更します。
⑥負荷分散する両方のWebサーバのWeb.configに machineKey要素を追加します。この時、2台のサーバ間で、全く同じ値を設定する必要があります。
※validationKeyは128文字、decryptionKeyは48文字、16進数表記にて任意の値を設定可能
<machineKey
validationKey="6B3B531D1E3232C2A00589627729751237761954842F959B8F01562F159097774C189718FA68927C47984A46F41FF6E4A9118AF5BF97544B5D52B4690B264ED8"
decryptionKey="C60EEEDAB223B3CD2011095EA2ECE54EF87B22794E30564E"
validation="SHA1"
/>
⑦Webサーバ上の%System%Tempフォルダのセキュリティタブを開き、
NLB用アカウントに「ファイルの内容の一覧表示」と「読み取り」権限を許可して追加します。

■クライアントPCの設定
①クライアントからWebサーバまで、プロキシを経由しない領域に配置します。
②対象のURLにアクセスした際、IEのゾーン認識(右下にある)が
「イントラネット」になるように設定します。
③オプションの詳細設定で「統合Windows認証を使用する」にチェックを入れます。(再起動が必要と書いてますが、全てのIEを終了させ、IEのみ起動しなおせばOKです。)
④NLBのホスト名PINGを打った時、PING先がNLBのホスト名に解決されるように設定します。DNS上で、Ailiasを使って登録してはいけないようです。
クライアント側ではHostsに登録してあれば動作します。
(2009/11/20変更)

5年越し位かかってようやく解決しました(^^)

(2009/11/10追記)
ちょいちょい追記してます。。。Kerberosめ・・・(T_T)
(2009/11/20修正)
ちがってたみたいです。。。Kerberosめ・・・(T_T)



Negotiateで Kerberos認証とNTLM認証が行われたときのイベントログ

2009-10-03 20:25:55 | IT関連
Windows Server 2003 + ASP.NET + 統合Windows認証の環境下で、
Negotiateで Kerberos認証とNTLM認証が行われたときの、
ドメインコントローラ(DC)とWebサーバのそれぞれに記録されているイベントを調べてみました。

備忘録代わりに書いておきます。

NTLM認証になる場合、DCのイベントログには ID=680があり、
Kerberos認証になる場合、DCのイベントログには ID=673がありました。

■NTLM認証の場合
DCサーバイベントログ
ID=680,ユーザ=【user】,ログオンアカウント=【user】,ワークステーション=【PC】
WEBサーバイベントログ
ID=540,ユーザ=【user】,ユーザ名=【user】,認証パッケージ=NTLM

■Kerberos認証の場合
DCサーバイベントログ
ID=673,ユーザ=SYSTEM,ユーザ名=【user】@【domain】,サービス名=【spn_name】,ワークステーション=【PC】
WEBサーバイベントログ
ID=540,ユーザ=【user】,ユーザ名=【user】,認証パッケージ=Kerberos



【user】・・・ログオンユーザ
【PC】・・・クライアントPCのホスト名
【domain】・・・ドメイン 例:ad.domain.local
【spn_name】・・・URLが実サーバ名の時は、WEBサーバのホスト名、SPN登録されている場合は、登録されたホスト名かアカウント名



Windows Server 別のサーバ名でファイル共有させる方法

2009-08-19 17:55:24 | IT関連
Windows Serverで別のサーバ名でファイル共有させるには、
以下の3点が必要です。
①DNSに該当IPとホスト名を登録する。
②NetBIOS名の別名を設定する。これには、サーバ上のレジストリを変更し、
サーバを再起動する必要があります。
③Active Directory管理されているサーバではSETSPNを行う必要があります。

■レジストリの場所
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters
■値名
OptionalNames
■形式
REG_MULTI_SZ(1行に一つのサーバ名)

※レジストリ変更は自己責任でお願いしまーす(^^)/

■SPN登録の方法
ドメインコントローラ上で次のコマンドを実行
SETSPN -A HOST/別名NetBIOS名 実体サーバ名
SETSPN -A HOST/別名FQDN名 実体サーバ名

SETSPNが必要とは思わなかった・・・

LDAP検索で有効なアカウントのみを取得するクエリ

2009-08-16 16:28:03 | IT関連
LDAP検索時、Active Directory上で、有効なアカウントのみを検索するための検索クエリは次のとおり。

(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))

userAccountControlプロパティの2ビット目が0のものが「有効」、1のものが「無効」らしいです。
1.2.840.113556.1.4.803 は ビットマスクでANDの意味らしい。

参考URL
Microsoft TechNet Hey, Scripting Guy!
Q.Active Directory のすべての無効なユーザー アカウントの一覧を取得する方法はありますか
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/may05/hey0512.mspx

Microsoft サポートオンライン
Active Directory から SharePoint Portal Server 2003 または Office SharePoint サーバー 2007 へ有効なユーザー アカウントのユーザー プロファイル情報をインポートする方法
http://support.microsoft.com/kb/827754/ja



ネットワークポート要件の調査に使えるツール NEGiES

2009-07-12 00:14:20 | IT関連
ネットワークポート要件の調査に使えるツール NEGiES

http://hp.vector.co.jp/authors/VA036210/

とても昔のツールですが、全然使えます。
と、いうか今回はこれに助けられました(^_^;)

以下、ツールの概要をホームページから抜粋

IPアドレス、ポート番号、アプリケーション(プロセス)、UP,DOWNごとに帯域を制限したり
パケットを遮断できるファイアウォールソフト(フリー)です。
フィルタルールを追加していく設定方法なのできめ細かな設定が可能です。

【フィルタリング以外の機能紹介】

・TCPコネクションモニタ
TCPの接続状況がわかり、任意のコネクションを切断することも可能。
コネクションごとに使用している帯域も表示。

・パケットモニタ
登録したフィルタごとに通ったパケットを見ることができる。

・外部コマンド
ping,tracert等の外部コマンドを単体で実行したり、TCPコネクションモニタ、
パケットモニタの右クリックから実行できる。