May, 2008 - フィールドSEあがりの安納です - Site Home - TechNet Blogs

フィールドSEあがりの安納です

Microsoft Evangelist -- Junichi Anno

May, 2008

  • 【Management】System Center Essentials 管理コンソールからWindows Vista へのリモートアシスタンスで接続するとエラー

    今週は、富山と新潟に出張に出てきました。出張は嫌いではないのですが、なぜか体重が増えるのが難点です。日曜から高松に移動し、しかも旧友に会う約束もあり....チャレンジングではありますが生ビール3杯/日以下を目標とします。

    さて、リモートアシスタンスという機能があることはご存知のとおりです。ターミナルサービス機能で接続し、シャドウセッション機能を使用してネットワークの向こう側のユーザーとコンソールを共有するという優れものです。

    System Center Essentials や Operations Manager を使用すると、管理コンソールから直接リモートアシスタンス機能を使用してリモートのサーバーやクライアントに接続することができます。この機能を使用して、クライアントのメンテナンスや、簡単な操作説明なんかが行えます。

     (クリックで拡大)

    が、次の条件で実行すると、以下に示すエラーが発生します。

    • Windows Vista 上に管理コンソールをインストールしている
    • Windows Server 2008 上に管理コンソールをインストールしている

    アプリケーション: C:\Windows\pchealth\helpctr\binaries\helpctr.exe
    パラメータ: -FormStartHelp -url
    hcp://CN=Microsoft%20Crporation,L=Redmond,S=Washington,C=US/Rem
    ote%20Assitance/Escalation/Unsolicited/SCEUnsolicitedRCUIhtm
    -ExtraArgument
    NOVICECOMPUTER=<ホスト名>&NOVICEUSERID=

    エラーメッセージ: 指定されたファイルが見つかりません。

    これは、helpctr.exe という Windows XP や Windows Server 2003 で使用されていたプログラムが Windows Vista や Windows Server 2008 には含まれていないからです。

    Winodws Vista や Windows Server 2008 では、新たに、msra.exe というリモートアシスタンスプログラムが実装されています。ためしに、2008 か Vista のコマンドプロンプトから msra.exe を実行してみてください。以下のような画面が表示されます。

    (クリックで拡大)

    ここで、発行された招待状か相手のIPアドレスを指定してリモートアシスタントサーバー(RAServer.exe)に接続します。

    それはそれとして、Essentials 経由で接続するにはどうしたらよいのか?ということですが、msra.exe をタスクとして登録しておく必要があります。

    本来は管理パックにきちんと組み込まれている必要があるのですが、現時点では....

    では、タスクとして登録してみましょう。

    Essentials の管理コンソールを開き、「作成」画面に移動したら、[作成]-[管理パックオブジェクト]-[タスク] をクリックし、画面右側のアクションペインから [新しいタスクの作成] をクリックします。

    (クリックで拡大)

    タスクの種類として、[コンソール タスク]-[コマンド ライン] を選択し、[次へ] をクリックします。

    (クリックで拡大)

     タスクの名前と、このタスクを有効にするコンピュータグループを入力します。グループは「Windowsコンピュータ」でよいでしょう。こうすることで、すべてのWindows コンピュータがターゲットになります。

    (クリックで拡大)

    次に実行するコマンドを指定します。msra.exe のオプションとして /offerra で接続先のコンピュータ名を指定することができます。Essentials では、画面に示すように変数で指定することができます。

    (クリックで拡大)

    以上で設定は完了です。

    タスクを作成後、管理コンソールの「コンピュータ」画面に移動すると、以下のように作成したタスクがアクションペインに追加されていることがわかります。

    今後は、ここをクリックすればリモートアシスタンスを起動することができます。

     

  • 【IDM】Active Directory から OpenLDAP への パスワードの同期 その2 ~ ADSI でパスワードを同期する

    昔、「おしいれのぼうけん」ていう絵本がありました。いまでもトラウマです...ねずみばぁさん...。

    そんなノスタルジックな想いはともかく、現実に戻って OpenLDAP にパスワードを同期する方法について考察します。

    以前、以下の記事で、生パスワードを PowerShell を使用して SHA1  で暗号化する方法を書きました。

    【IDM】Active Directory から OpenLDAP への パスワードの同期 その1 ~ パスワードを SHA1 で暗号化

    今回は、SHA1 のことはひとまずおいといて、パスワード同期機能で作成された unixUserPassword を取り出し、ADSI を使用して OpenLDAP に同期してみます。

    パスワード同期機能および unixUserPassword 属性については、以下で詳しく解説していますので参考にしてください。

    # ここでは、パスワードの暗号化形式は DES を使用しています。 

    解説はソースの中にインラインで書きます。ソースをダウンロードするには、こちらから どうぞ。

    今回は、以下の環境を想定しています。

    • Active Directory ドメイン : example64.jp
    • パスワードを変更するユーザー:testuser01
    • 変更後のパスワード :ABC123@
    • OpenLDAP サーバー : fedora01.example-fedora01.jp
    • OpenLDAP上のユーザー :uid=testuser01,ou=People,dc=example-fedora,dc=jp
    • OpenLDAPの管理ユーザー: cn=Manager,dc=example-fedora,dc=jp
    • OpenLDAPの管理ユーザーのパスワード :password

    変更の手順の大きな流れは以下の通りです。

    1. testuser01 のパスワードを Active Directory で変更する
    2. 変更されたパスワードが自動的に unixUserPassword に同期される
    3. unixUserPassword から DES で暗号化されたパスワードを取り出す
    4. OpenLDAPに接続し、testuser01 のパスワードを書き込み
    5. 確認のために testuser01 で OpenLDAPに接続してみる

    では、上記を具体的なスクリプトに落としてみます。

    よろしければ、OpenLDAP に接続可能なブラウザを用意しておいてください。「LDAP Browser」で検索していただくと、Windows で使用可能な LDAP ブラウザが見つかるでしょう。これがあると、値が書き込まれているかどうかを手軽に確認することができます。

    まずは変数の定義です。これはよいですよね。

    On Error Resume Next

    strDomain = "dc=example64,dc=jp"
    strUserName  = "testuser01"
    strPassword  = "ABC123@"
    strLdapServer  = "fedora01.example-fedora.jp"
    strLdapUser    = "uid=" & strUserName & ",ou=People,dc=example-fedora,dc=jp"
    strManagerDN       = "cn=Manager,dc=example-fedora,dc=jp"
    strManagerPassword = "password"

    はじめに、testuser01 のパスワードを Active Directory 上で変更します。これは、unixUserPassword にUNIXシステム用に暗号化されたパスワードを格納するためです。既に最新のパスワードが unixUserPassword に格納されているのであれば必要はありません。

    testuser01 のパスワード変更にあたり、まずは Active Directory で testuser01 を検索し、DistinguishedName を取得します。


    ' ユーザーを検索
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Open "Provider=ADsDSOObject;"
    Set objCommand = CreateObject("ADODB.Command")
    objCommand.ActiveConnection = objConnection
    objCommand.CommandText = _
            "<LDAP://" & strDomain & ">;" & _
            "(&(objectCategory=person)(objectClass=user)" & _
            "(sAMAccountName=" & strUserName & "));" & _
            "DistinguishedName,sAMAccountName,unixUserPassword;" & _
            "subtree"
    Set objRecordSet = objCommand.Execute

    次に、testuser01 のパスワードを変更します。パスワードの変更を ADSI で行うには、SetPassword メソッドを使用します。パスワード変更の場合、SetInfo は必要ないのですが、属性のリフレッシュのために念のために入れてあります...すいません、これは私の癖みたいなものです...。

    ' ユーザーのパスワード変更
    Do Until objRecordset.EOF
       strDN = objRecordset.Fields("DistinguishedName")
       objRecordset.movenext
    Loop
    Set objUser = GetObject("LDAP://" & strDN)
    objUser.SetPassword strPassword
    objUser.SetInfo

    パスワードの変更後、パスワード同期機能による unixUserPassword の生成には若干のタイムラグがあります。以下では、念のために 3000ms の待ちを入れています。

    ' AD内でunixUserPassword が同期されるまで待つ
    Wscript.Sleep 3000

    unixUserPassword が生成されたことを想定し、以前にも解説した方法で DES で暗号化されたパスワードを取得します。なお、unixUserPassword を取得するに当たり、冒頭で事前に ADSI に対してクエリーを再実行しています。

    なお、取得したパスワードは、strUnixUserPassword に格納されます。

    '  変更後のパスワードを取得
    '  クエリーを再実行
    Set objRecordSet2 = objCommand.Execute

    Do Until objRecordset2.EOF
     arrUNIXUSERPASSWORD = objRecordset2.Fields("unixUserPassword")
     For i = 1 To LenB(arrUNIXUSERPASSWORD(0))
         strA = MidB(arrUNIXUSERPASSWORD(0), i, 1)
         strB = AscB(strA)
         strUnixUserPassword = strUnixUserPassword & Chr(strB)
     Next
     objRecordset2.movenext
    Loop

    さて、ここからが OpenLDAP に対する操作の始まりです。

    はじめに、OpenLDAP 上の testuser01 に接続し、objUser オブジェクトを生成します。このとき使用するのが、OpenDSObject というメソッドです。引数に指定するのは、以下の通りです。

    • OpenLDAP上のオブジェクトのパス
      LDAP://fedora01.example-fedora01.jp/uid=testuser01,ou=People,dc=example-fedora,dc=jp
    • OpenLDAP管理用ユーザーのDN
      cn=Manager,dc=example-fedora,dc=jp
    • OpenLDAP管理用ユーザーのパスワード
      password

    OpenDSObject は、LDAPサーバーへの認証でも使用するメソッドです。覚えておくと、ユーザーIDとパスワードの整合性をチェックするときにも使えて便利です。このメソッドは、変更後のパスワードが正しく同期されているかどうかをチェックする際にも使用します。

    ' OpenLDAPに接続してユーザーオブジェクトを取得
    set objLDAP = GetObject("LDAP:")
    set objUser = objLDAP.OpenDSObject("LDAP://" & strLdapServer & "/" & strLdapUser, _
                                       strManagerDN, _
                                       strManagerPassword, _
                                       0)

    OpenLDAP 上のユーザーのパスワードを変更する際は、Active Directory のときのように SetPassword を使用しません。通常の属性変更用のメソッドである、Put を使用して、userPassword 属性に直接暗号化されたパスワードを格納します。

    パスワードの格納にあたり、頭に {CRYPT} を付加します。これは、OpenLDAP 上の userPassword 属性が DES で暗号化されていることを示しています。この部分は、環境に合わせて {MD5} や {SHA} 等に変更します。

    パスワードの変更後は、Active Directory 同様、SetInfo でコミットしてください。

    'パスワードを変更
    objUser.Put "userPassword", "{CRYPT}" & strUnixUserPassword
    objUser.SetInfo

    最後に、本当にパスワードが同期されたかどうかを、OpenDSObject を使用して確認します。ただし、これができるのは、生パスワードがわかっているときだけです。単純に、unixUserPassword の中身を userPassword に同期する場合には、生パスワードがわかりませんから、このチェックは行いようがありません。

    'パスワードが変更されたかどうかをチェック
    set objChkUser = objLDAP.OpenDSObject("LDAP://" & strLdapServer, _
                                       strLdapUser, _
                                       strPassword, _
                                       0)

    If Err.Number = 0 then
     Wscript.Echo "パスワードは正しく同期されました(" & strLdapUser & ")"
    else
     Wscript.Echo "パスワードの同期でエラーが発生しました(" & strLdapUser & ")"
    End If

    以上で完了です。

    意外に簡単なスクリプトで実現できることに驚きませんか?

    小規模なシステムや負荷が小さなシステムでは十分使える方法だと思いますので、是非試してみてください。

  • 【IDM】Active Directory から OpenLDAP への パスワードの同期 その 4 ~Ldap ブラウザでパスワードの変更結果を検証する

    ※2008/08/29 Tech・Ed会場にてリンク切れを指摘していただきましたので修正いたしました。(汗)

    ある調べごとがあり、「'watch node'」 という単語を 某検索エンジンに放り込んだところ、以下の表示が。

    もしかして: 'watch nude'  

    し、し、しっ、失礼なっっっ! 

    それはともかく Active Directory とのパスワード同期シリーズ の続きです。過去の記事は以下を参照してください。あとでまとめサイト作って公開します。

    今回は Windows から OpenLDAP に接続して、本当に値が変わったかどうかを GUI で確認する方法について紹介します。

    まずはLDAP Browser を用意するわけですが、今回は SOFTERRA社の LDAP Browser を使わせていただくことにします。

    # ADSI Edit を使おうとしたのですが、認証がうまく通らず...どなたか成功された方いらっしゃいませんか?

    LDAP Browser は LDAPのGUI管理ツールである LDAP Administrator の機能限定版として、無償でダウンロードが可能です。

    SOFTERRA 社
    http://www.softerra.com/ 

    ダウンロードサイト
    http://www.softerra.com/download.htm

    ダウンロードしたら、とりあえずインストールしましょう。インストール自体は簡単に行えます。

    インストールの完了後 LDAP Browser を起動し環境設定を行います。

    OpenLDAP の環境は以下を想定します。

    • OpenLDAP サーバー : fedora01.example-fedora01.jp
    • OpenLDAP上のユーザー :uid=testuser01,ou=People,dc=example-fedora,dc=jp
    • OpenLDAPの管理ユーザー: cn=Manager,dc=example-fedora,dc=jp
    • OpenLDAPの管理ユーザーのパスワード :password

    環境設定の手順を以下に示します。

    1. [Browser Root] を右クリックして New Profile を選択

    2. ウィザードに沿って設定

    Host Information 画面

    Host: OpenLDAPがインストールされているホスト名 - fedora01.example-fedora.jp
    Port:389 (もし変えているようであれば変更後の値)
    Protocol Version:3
    Base DN: 検索する基点となるパス - dc=example-fedora,dc=jp

    Credentials 画面

    User DN: OpenLDAPに接続するユーザー

    この部分に OpenLDAP 管理者(cn=Manager,dc=example-fedora,dc=jp )を指定すれば、すべてのオブジェクトをくまなく参照することが可能です。
    今回は、管理者ではなくパスワードの変更対照となるユーザー(uid=testuser01,ou=People,dc=example-fedora,dc=jp )を指定することにします。こうすることで、パスワード変更後に接続できなくなることを確認することができます。

    Password: テストユーザーの現在のパスワード

    以上を入力したら[完了] ボタンで終了です。

    3. 設定が正しければ、テストユーザーが見える範囲の情報が参照できるはずです。

    4. テストユーザーのパスワードを、こちのスクリプトを使用して変更してみます

    5. Ldap Brorserの表示をリフレッシュしてみると、以下のように接続エラーとなるはずです

    (クリックして拡大)
    ※すみません。画像が間違えていましたので差し替えます。

    6. プロファイルを右クリックして Properties を開き、Credentials 画面で変更後のパスワードを再設定すれば正しく接続できるはずです

    さて、LDAP Browser は、もちろん、Active Directory に対しても使用可能です。

    (クリックして拡大)

    Active Directory には、ADSI Edit があるのに、わざわざ Ldap Browser を使う意味があるのか?という疑問もあるでしょう。実は「少しだけ」ですがあるんです。

    上の画面を見ていただいてもわかるとおり、LDAP Browser では、オブジェクトを選択したとき、右側のペインに参照可能な属性が表示されます。 この「参照可能な」というのがミソなのです。

    Active Directory は LDAP という性質上(という言い方は語弊があるかな)、規定では自分以外のユーザーの属性も参照可能です。Outlook 等のアドレス帳を Active Directory に設定すると、Active Directory に格納されているユーザーの属性情報を参照することができます。これは、多くの属性が「 Authenticated Users : Read 」に設定されているためであり、規定の動作です。しかし、属性の種類によっては公開したくないものもあるかもしれません。

    こうした問題を回避するには、属性ごとにアクセス権を設定してあげる必要があります(これについては後日解説します)。

    アクセス権の設定後、本当に見えなくなっているかどうかを確認するには、ADSI Edit のようにオブジェクトごとにプロパティ画面を開かなければならないツールよりも、LDAP Browser のように右側のペインに即表示されるもののほうが使いやすいことは間違いありません。

    状況に応じて使い分けてみてください。

  • 【IDM】パスワード同期機能の有効活用 その2 ~ Windows Server 2008 でのパスワード同期機能のセットアップ

    前回は、パスワード同期機能について簡単にお話しました。

    【IDM】パスワード同期機能の有効活用 その1 ~ パスワード同期機能とは

    今回は、Windows Server 2008 上で パスワード同期機能を使用するためのセットアップを行いましょう。

    Windows Server 2008 上でパスワード同期機能を使用するには、はじめにサーバーマネージャの「役割の追加」から「Active Directory ドメイン サービス」をインストールし、ドメインコントローラとしてセットアップを完了しておく必要があります。

    • サーバーマネージャから「Active Directory ドメイン サービス」役割を追加
    • dcpromo を使用してドメインコントローラのインストールを行う
    • 再起動

    上記が完了したら、再度サーバーマネージャを起動し、以下のように「Active Directory ドメイン サービス」の関連サービスとして 「 UNIX 用 ID 管理」を追加します。

    このとき、「パスワード同期」だけでなく、「NIS サーバー」「管理ツール」もあわせてインストールしてください。
    ※NIS サーバーが必要ない場合には、あとから無効にできます

    インストールが完了すると、サーバーマネージャの「役割」には「UNIX用 Microsoft ID 管理」が表示されます。

    次に、AD内部での パスワード同期を正しく動作させるために、以下の環境設定を行います。

    [サーバーマネージャ] - [役割] - [Active Directory ドメイン サービス] - [UNIX用 Microsoft ID 管理] - [パスワード同期] を右クリックして、コンテキストメニューから「プロパティ」を選択すると、以下の画面が表示されます。

    画面下部の「キーの生成」をクリックして、キーをリセットしてください。

    次に、「構成」タブに切り替え、「Winodws から NIS(Active Directory)へのパスワード同期」を有効にします。これにより、パスワード変更時に unixUserPassword にパスワードが同期されます。

     

    次に、以下の画面のように、NISサーバーを右クリックして「UNIXパスワードの暗号化」を選択します。

    以下の画面が表示されるので、暗号化の形式を選択してください。

    以上でパスワード同期機能の設定は完了です。

    NISサーバーが必要ない場合には、「Server for NIS」サービスを無効にしてしまって問題ありません。

     

    簡単に動作確認をしてみましょう。

    「Active Directory ユーザーとコンピュータ」を使用して、新しいユーザーを作成します。

    その際、必ず「UNIX属性」を設定してください。この設定がなされていない場合には、パスワードの同期は行われません。

    ここで...もしプライマリグループの設定が行えない場合には、はじめに プライマリグループ自身(ここでは Domain Users) にもUNIX属性を設定してください。

    設定が完了したら、パスワードを変更してみましょう。

    方法はなんでもかまいません。コマンドプロンプトから、net user testuser01 password と入力してもOKです。

    パスワードが正常に変更できたら、ユーザーのプロパティから「属性エディタ」タブを選択します。

    ※属性エディタタブが表示されていない場合には、「Active Directory ユーザーとコンピュータ」の「表示」メニューで「拡張機能」を有効にしてください

    属性の一覧から unixUserPassword を探すと、以下のように表示されているはずです。以下のパスワードは、MD5 で暗号化されています。

    いかがでしょうか。ここまではうまくいきましたか?

    次回は、スクリプトを使用して、unixUserPassword から暗号化されたパスワードを取り出します。

     

  • 【IDM】Active Directory から OpenLDAP への パスワードの同期 その1 ~ パスワードを SHA1 で暗号化

    当初の予定を変更し、パスワードの暗号化について、ちょっとだけ触れておきたいと思います

    以下では、Active Directory に格納された DES / MD5 形式のパスワードをそのままとりだしました。取り��したまま OpenLDAPに格納すれば、生パスワードを経由することなくパスワードの同期が行えます(同期の手法については、また後日)。

    【IDM】パスワード同期機能の有効活用 その3 ~ unixUserPassword 属性から暗号化されたパスワードを取得する

    同僚の田辺氏が、上記のスクリプトを PowerShell に置き換えてくれましたので、よろしければそちらも参照してください。

    『【IDM】パスワード同期機能の有効活用 その3 ~ unixUserPassword 属性から暗号化されたパスワードを取得する』PowerShell 編

    さて、ここで当然の要求が出てきます。

    DES や MD5 じゃなくて、SHA1 で 暗号化したいんだけど!!??

    当然ですね。

    暗号化と文字コード変換はなんとかなるとしても、DES / MD5 を複合化することはできませんので、事前に「生パスワード」が取得できるという前提で書きます。 

    で、その暗号化と文字コード変換ですが、VBSで何とかしようとしてみたのですが...うまい方法が無く....田辺さんに懐柔されたようで悔しいのですが、PowerShell を使用することにします。

    生パスワードを 「annou$01 」 とします。


    PS C:\> $strPassword = "annou$01"
    PS C:\> $objUTF8Enc = new-object System.Text.UTF8Encoding
    PS C:\> $bytPassword = $objUTF8Enc.GetBytes($strPassword)
    PS C:\> $objCrypt = new-object System.Security.Cryptography.SHA1CryptoServiceProvider
    PS C:\> $bytCryptPassword = $objCrypt.ComputeHash($bytPassword)
    PS C:\> $strBase64Password = [System.Convert]::ToBase64String($bytCryptPassword)
    PS C:\> $strBase64Password
    gFRVb2AfNnXfx2GUQe5GaEYrnJQ=

    最後に表示されている gFRVb2AfNnXfx2GUQe5GaEYrnJQ= が SHA1 で暗号化されたパスワードです。

    暗号化の形式を変更する場合には、SHA1CryptoServiceProvider の部分を変えてください。詳細は、以下を参照してみてください。

    System.Security.Cryptography Namespace
    http://msdn.microsoft.com/ja-jp/library/system.security.cryptography(en-us,VS.80).aspx

    このままでは自動化ができないので、まずは、上記のPowerShellスクリプトを ps1 という拡張子でテキストファイルに保存しましょう。ここでは、cryptSha1.ps1 というファイルに保存したとします。

    次に、PowerShell を起動して、以下のコマンドを入力し、自マシンで作成した ps1 ファイルを実行できるようにします。

    PS C:\> Set-ExecutionPolicy RemoteSigned

    その後、PowerShell を終了し、通常のコマンドプロンプトから以下のように記述しましょう。

    C:\> for /f %i in ('powershell c:\cryptsha1.ps1') do set Sha1Password=%i

    これで、環境変数 Sha1Password には SHA1 で暗号化されたパスワードが格納されます。あとは、なんとでもなりますね...。もし、バッチファイルから 上記の for コマンドを実行するのであれば、以下のように % は %% と重ねて記述してください。

    for /f %%i in ('powershell c:\cryptsha1.ps1') do set Sha1Password=%%i

    それにしても...Net Framework が使えるって....べ、便利ですね....

    まずい..VBS から乗り換えてしまいそうです.....

  • 【IDM】パスワード同期機能の有効活用 その3 ~ unixUserPassword 属性から暗号化されたパスワードを取得する

    本日、健康診断に行ってきました。健康診断...実は苦手でして...

    いい歳して恥ずかしい話ですが....子供のころから、わきの下とわき腹が弱いのです。なので苦手なのは心電図...それに輪をかけてつらかったのは「腹部エコー検査」なるもの...。なんか、先のツルツルのヤツを使って、わきの下とかわき腹をしつこいくらいにグリグリされました。これは、もう、拷問としか言いようがありません。

    ということで、「わきの下とわき腹が弱いですが 何か?」 コミュニティを作り、医療機器業界に「わき腹非接触検査機器の開発」を働きかけると同時に、わきの下とわき腹がくすぐったくならない禁断の呪文を開発したいなぁと思う、今日この頃です。同士募集です。

    それはさておき、以下の続きとなる その3 です。

    今回は、unixUserPassword 属性から、NIS用に暗号化されたパスワードを取り出します。msSFU30userPassword と違い、ちょっとコツがいります。

    まずは、取り出しもとの unixUserPassword がいかなる特徴を持っているのか、見てみることにします。

    ということで、スキーマツールを開きましょう。

    Windows Server 2008 でのスキーマツールの開き方は従来通りです。以下のコマンドをコマンドプロンプトから入力後、mmc のツナップインに「Active Directory スキーマ」を追加してください。

    c:>regsvr32 schmmgmt.dll

    スキーマツールを起動したら、属性一覧の中から「 unixUserPassword 」 を探して、プロパティを開いてみてください。

    注意していただきたいのは、上記の赤丸の部分です。

    • オクテット文字列である
    • 複数値である(戻り値がアレイ形式である)

    オクテット文字列とは、文字列を1文字ごとに8ビットのバイナリ形式で保存する形式です...うーん、あたりまえですね。説明よりも、以下をご覧ください。unixUserPassword 属性に格納されている値を ADSI Edit で表示したものです。  一見、何が格納されているかわからないですね。

    上のバイナリ値の最初の「 01001101 」を 10進数に変換すると 77 になります。77...何か心当たりありませんか? 子供の頃に食べたアイスクリームのような....そう、「M」のアスキーコードです。

    では、次の 00110111 はどうでしょう?10進にすれば 55 。これは、「7」ですね。子供の頃から そういう教育をされてきた私にとっては朝飯前です。

    といった感じで見ていくと、上記は「 M7hlyUsc6diZ. 」 となり、DES で暗号化されたパスワードだなぁということがわかります。

    そんなわけで、スクリプトで取得するには以下のようになります。VBScript で書かれているので、拡張子を vbs として保存してください。

    strDomain = "dc=example64,dc=jp"
    strUserName = "testuser001"

    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Open "Provider=ADsDSOObject;"
    Set objCommand = CreateObject("ADODB.Command")
    objCommand.ActiveConnection = objConnection
    objCommand.CommandText = _
            "<LDAP://" & strDomain & ">;" & _
            "(&(objectCategory=person)(objectClass=user)" & _
            "(sAMAccountName=" & strUserName & "));" & _
            "sAMAccountName,unixUserPassword;" & _
            "subtree"
    Set objRecordSet = objCommand.Execute

    Do Until objRecordset.EOF

       arrUNIXUSERPASSWORD = objRecordset.Fields("unixUserPassword")  ' 取得したパスワードを arrUNIXUSERPASSWORD に格納

       For i = 1 To LenB(arrUNIXUSERPASSWORD(0))  ' arrUNIXUSERPASSWORDはアレイ値なので、(0) で1番目の値を取り出す

           strA = MidB(arrUNIXUSERPASSWORD(0), i, 1) ' MidB で1バイトずつ取り出し
           strB = AscB(strA)   ' いったんアスキーコードにしてから
           strUnixUserPassword = strUnixUserPassword & Chr(strB) ' 元の文字に戻してあげる

       Next

       objRecordset.movenext

    Loop

    wscript.echo strUnixUserPassword

     

    上記のように、MidB、AscB、Chr(またはChrB)を使うというコツはいりますが、なれればオクテット値なんて怖くありません。

    さて、こうして取り出した値をどうやって OpenLDAP に同期するのか...

    ひとまずすぐに思いつくのは perl の Net::LDAP です。これは実績もあります。

    まだ、ADSI を試してみたことは無いのですが、どなたか試された方いらっしゃいますか?

    こんな方法が簡単!という案があれば是非ともご連絡ください。blog にてご紹介させていただきます。

    ちなみに、KBには、以下のような情報が公開されています。次回は、以下について解説をつけたいと思います。

    INFO: How to Use ADSI to Query a Third-Party LDAP Server
    http://support.microsoft.com/kb/251195/en-us

     

  • 【IDM】パスワード同期���能の有効活用 その1 ~ パスワード同期機能とは

    先日、薄暗い部屋で 掌(てのひら) をじっと見つめていたら「運命線」なるものが全く無いことに気づきました。ははぁん、どうりで...

    さて、話は変わりますが、「パスワード同期」機能 をご存知でしょうか?

    Active Directory と NIS のパスワードを双方向に、かつリアルタイム同期するという優れものですが、実際に運用で使用されている方は多くないようです。理由として、サポートされている OS のバージョンに制限があることや、場合によっては make しなおさなければならないといった部分で敷居が高いようです。

    Windows Server 2003 以前 では、Service for UNIX をインストールすることでパスワード同期機能が使用可能になります。

    Windows Services for UNIX 3.0 におけるパスワード同期
    http://www.microsoft.com/japan/technet/interopmigration/unix/sfu/psync.mspx

    Windows Server 2003 R2 および Windows Server 2008 以降では、「UNIX 用 ID 管理」を有効にすることでパスワード同期機能が使用可能になります。 

    Windows Server 2003 R2 - UNIX 用 ID 管理 : パスワード同期
    http://technet2.microsoft.com/WindowsServer/ja/library/bb1f0664-5f08-4a0c-b1cf-f7363e593c621041.mspx?mfr=true

    Windows Server 2003 R2 - パスワード同期 ステップバイステップ
    http://technet2.microsoft.com/WindowsServer/ja/library/70fd1e7b-902d-4d4b-af7a-c3f55a5577851041.mspx?mfr=true

    Windows Server 2008 UNIX との相互運用性 - パスワード同期
    http://www.microsoft.com/japan/technet/windowsserver/2008/library/6fe7d2b8-70a0-4a67-9128-cc3639fc7fd7.mspx?mfr=true

    では、NIS が存在しない場合、パスワード同期機能に使い道は無いのか?

    いえいえ、そうではありません。使わなければ損をするほどもったいない話です。

    ちょっとの知識と工夫で、大きな効果を得ることができます。

    パスワード同期機能は、大きく分けて以下の3つのコンポーネントから構成されています。

    • pswdsync.dll (Windows Server 上で動作)
    • Single Sign-on Daemon (SSOD) (UNIX コンピュータ側で動作)
    • pam_sso.so (UNIX コンピュータ側にインストールされる pam)

    この中で、pswdsync.dll がWindows Server 側のキーとなるコンポーネントです。

    パスワード同期機能のしかるべき環境設定が完了後、Windows ユーザーによってパスワードが変更されると、pswdsync.dll は変更したパスワードを横取りし、UNIXコンピュータ側の SSOD に渡します。その後 SSOD によってパスワードが書き込まれることで Windows と UNIX のパスワードが同期されます。

    さて、面白いのはここからです。

    このとき Windows Server 上に NIS Server (Server for NIS)がインストールされていると、Active Directory 上にも 一般的に NIS で使用されるパスワード(crypt or MD5) が保存されます。

    Windows Server 2000 / 2003 :msSFU30UserPassword

    Winodws Server 2003 R2 / 2008 :unixUserPassword

    これがどんな効果をもたらすか。

    もうお気づきのとおりですね。Active Directory から UNIX用に暗号化されたパスワードがゲットできてしまうのです。

    では、ゲットできると何がうれしいか...

    たとえば、生パスワードを取得して暗号化するといった手間を省き、OpenLDAP に直接パスワードを書き込むことができます。つまり、「同期」が可能となるわけです(もちろん、OpenLDAP側の暗号化形式を合わせておく必要があるわけですが)。

    以下の画面は、Windows Server 2008 上で参照した あるユーザーの unixUserPassword 属性です。MD5 で暗号化されていることがわかると思います。

    いかがでしょう。ちょっと興味がわきましたか?興味がわいた方は次回にご期待ください。

     

     

  • 最新のグループポリシー設定項目の一覧はこちら ~ Group Policy Settings Reference for Windows Server 2008 and Windows Vista Sp1

    以前、Windows Server 2008 Beta3 でのグループポリシー設定項目一覧が書かれたドキュメントについてお知らせしましたが、ちょっと目を放したすきに、最新のグループポリシー設定項目一覧が記載されたドキュメントが公開されていました。すでにご存知の方もいらっしゃるかもしれません。

    Group Policy Settings Reference for Windows Server 2008 and Windows Vista SP1
    http://www.microsoft.com/downloads/details.aspx?FamilyID=2043b94e-66cd-4b91-9e0f-68363245c495&DisplayLang=en

    例によって英語ですが、とっても有用なドキュメントです。

    どんな設定項目があるのか、見ているだけで時間をつぶすことができます。

    通勤、通学、料理の合間、赤ちゃんの寝物語にも是非ご活用ください。

    このほか、グループポリシーに関するドキュメントは こちら から。

  • ADSIを使用してOpenLDAPにパスワードを同期する

    VBScript で書かれていますので、拡張子を vbs として保存してください。 

    このソースの解説はこちら。
    【IDM】Active Directory から OpenLDAP への パスワードの同期 その2 ~ ADSI でパスワードを同期する

    ------------------------------- 

    On Error Resume Next

    strDomain = "dc=example64,dc=jp"
    strUserName  = "testuser01"
    strPassword  = "ABC123@"
    strLdapServer  = "fedora01.example-fedora.jp"
    strLdapUser    = "uid=" & strUserName & ",ou=People,dc=example-fedora,dc=jp"
    strManagerDN       = "cn=Manager,dc=example-fedora,dc=jp"
    strManagerPassword = "password"


    'ユーザーを検索
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Open "Provider=ADsDSOObject;"
    Set objCommand = CreateObject("ADODB.Command")
    objCommand.ActiveConnection = objConnection
    objCommand.CommandText = _
            "<LDAP://" & strDomain & ">;" & _
            "(&(objectCategory=person)(objectClass=user)" & _
            "(sAMAccountName=" & strUserName & "));" & _
            "DistinguishedName,sAMAccountName,unixUserPassword;" & _
            "subtree"
    Set objRecordSet = objCommand.Execute

    'ユーザーのパスワード変更
    Do Until objRecordset.EOF
     strDN = objRecordset.Fields("DistinguishedName")
        objRecordset.movenext
    Loop
    Set objUser = GetObject("LDAP://" & strDN)
    objUser.SetPassword strPassword
    objUser.SetInfo

    'AD内でunixUserPassword が同期されるまで待つ
    Wscript.Sleep 3000

    '変更後のパスワードを取得
    Set objRecordSet2 = objCommand.Execute

    Do Until objRecordset2.EOF
     arrUNIXUSERPASSWORD = objRecordset2.Fields("unixUserPassword")
     For i = 1 To LenB(arrUNIXUSERPASSWORD(0))
         strA = MidB(arrUNIXUSERPASSWORD(0), i, 1)
         strB = AscB(strA)
         strUnixUserPassword = strUnixUserPassword & Chr(strB)
     Next
     objRecordset2.movenext
    Loop

    'OpenLDAPに接続
    set objLDAP = GetObject("LDAP:")
    set objUser = objLDAP.OpenDSObject("LDAP://" & strLdapServer & "/" & strLdapUser, _
                                       strManagerDN, _
                                       strManagerPassword, _
                                       0)

    'パスワードを変更
    objUser.Put "userPassword", "{CRYPT}" & strUnixUserPassword
    objUser.SetInfo

    'パスワードが変更されたかどうかをチェック
    set objChkUser = objLDAP.OpenDSObject("LDAP://" & strLdapServer, _
                                       strLdapUser, _
                                       strPassword, _
                                       0)

    If Err.Number = 0 then
     Wscript.Echo "パスワードは正しく同期されました(" & strLdapUser & ")"
    else
     Wscript.Echo "パスワードの同期でエラーが発生しました(" & strLdapUser & ")"
    End If


     

  • 【IDM】Active Directory から OpenLDAP への パスワードの同期 その3 ~(余談)Fedora 8 を Hyper-V上で動作させる

    先日、宇都宮に向かう湘南新宿ラインの中で、「納豆がこんなに好きなのに、奥さんが納豆嫌いなため、家で食べられない」と、納豆への熱い想いを語るサラリーマンを見ました。 そうか、この手があったか...

    さて、余談に余談を重ねます。

    「OpenLDAP の環境はどうしているのか?」というお問い合わせをいただいたいので、ここでご紹介します。

    ご想像通りですが、Hyper-V RC0 上で動かしています。

    (クリックすると大きい画面で表示)

    MSDN blog にも紹介されていますので、以下をご覧ください。

    Ben Armstrong's Virtual PC Guy's WebLog
     Installing Fedora Core 8 on Hyper-V
     http://blogs.msdn.com/virtual_pc_guy/archive/2007/12/31/installing-fedora-core-8-on-hyper-v.aspx

    Fedora Project
     Fedora ダウンロード
     http://fedoraproject.org/get-fedora

    上記 blog をご覧いただければお分かりの通り、とくに何も特別なことはしていません。

    留意点としては、以下の2点です。

    • レガシーネットワークアダプターを使用する
    • VMAddition は現時点でサポートされていない

    Linuxに対応した VMAddition は、ベータ版検証申し込みサイトからダウンロードすることができるようになっていますが、対象となっているのは、

    • SUSE Linux Enterprise Server 10 SP1 (x86)
    • SUSE Linux Enterprise Server 10 SP1 (x64)

    だけのようです。今後、 Red Hat Enterprise Linux 5 もサポート予定であるとも書かれています。

    興味のある方は、以下のサイトに接続してみてください。 

    Linux Integration Components for Microsoft Windows Server 2008 Hyper-V
    https://connect.microsoft.com/site/sitehome.aspx?SiteID=495

     

  • (sample) Fedora 8 : /etc/ldap.conf

    # @(#)$Id: ldap.conf,v 1.38 2006/05/15 08:13:31 lukeh Exp $
    #
    # This is the configuration file for the LDAP nameservice
    # switch library and the LDAP PAM module.
    #
    # The man pages for this file are nss_ldap(5) and pam_ldap(5)
    #
    # PADL Software
    # http://www.padl.com
    #

    # Your LDAP server. Must be resolvable without using LDAP.
    # Multiple hosts may be specified, each separated by a
    # space. How long nss_ldap takes to failover depends on
    # whether your LDAP client library supports configurable
    # network or connect timeouts (see bind_timelimit).
    #host 127.0.0.1

    # The distinguished name of the search base.
    base dc=example-fedora,dc=jp

    # Another way to specify your LDAP server is to provide an
    # uri with the server name. This allows to use
    # Unix Domain Sockets to connect to a local LDAP Server.
    #uri ldap://127.0.0.1/
    #uri ldaps://127.0.0.1/   
    #uri ldapi://%2fvar%2frun%2fldapi_sock/
    # Note: %2f encodes the '/' used as directory separator

    # The LDAP version to use (defaults to 3
    # if supported by client library)
    #ldap_version 3

    # The distinguished name to bind to the server with.
    # Optional: default is to bind anonymously.
    #binddn cn=proxyuser,dc=example,dc=com

    # The credentials to bind with.
    # Optional: default is no credential.
    #bindpw secret

    # The distinguished name to bind to the server with
    # if the effective user ID is root. Password is
    # stored in /etc/ldap.secret (mode 600)
    #rootbinddn cn=manager,dc=example,dc=com

    # The port.
    # Optional: default is 389.
    #port 389

    # The search scope.
    #scope sub
    #scope one
    #scope base

    # Search timelimit
    #timelimit 30
    timelimit 120

    # Bind/connect timelimit
    #bind_timelimit 30
    bind_timelimit 120

    # Reconnect policy: hard (default) will retry connecting to
    # the software with exponential backoff, soft will fail
    # immediately.
    #bind_policy hard

    # Idle timelimit; client will close connections
    # (nss_ldap only) if the server has not been contacted
    # for the number of seconds specified below.
    #idle_timelimit 3600
    idle_timelimit 3600

    # Filter to AND with uid=%s
    #pam_filter objectclass=account

    # The user ID attribute (defaults to uid)
    #pam_login_attribute uid

    # Search the root DSE for the password policy (works
    # with Netscape Directory Server)
    #pam_lookup_policy yes

    # Check the 'host' attribute for access control
    # Default is no; if set to yes, and user has no
    # value for the host attribute, and pam_ldap is
    # configured for account management (authorization)
    # then the user will not be allowed to login.
    #pam_check_host_attr yes

    # Check the 'authorizedService' attribute for access
    # control
    # Default is no; if set to yes, and the user has no
    # value for the authorizedService attribute, and
    # pam_ldap is configured for account management
    # (authorization) then the user will not be allowed
    # to login.
    #pam_check_service_attr yes

    # Group to enforce membership of
    #pam_groupdn cn=PAM,ou=Groups,dc=example,dc=com

    # Group member attribute
    #pam_member_attribute uniquemember

    # Specify a minium or maximum UID number allowed
    #pam_min_uid 0
    #pam_max_uid 0

    # Template login attribute, default template user
    # (can be overriden by value of former attribute
    # in user's entry)
    #pam_login_attribute userPrincipalName
    #pam_template_login_attribute uid
    #pam_template_login nobody

    # HEADS UP: the pam_crypt, pam_nds_passwd,
    # and pam_ad_passwd options are no
    # longer supported.
    #
    # Do not hash the password at all; presume
    # the directory server will do it, if
    # necessary. This is the default.
    #pam_password clear

    # Hash password locally; required for University of
    # Michigan LDAP server, and works with Netscape
    # Directory Server if you're using the UNIX-Crypt
    # hash mechanism and not using the NT Synchronization
    # service.
    #pam_password crypt

    # Remove old password first, then update in
    # cleartext. Necessary for use with Novell
    # Directory Services (NDS)
    #pam_password clear_remove_old
    #pam_password nds

    # RACF is an alias for the above. For use with
    # IBM RACF
    #pam_password racf

    # Update Active Directory password, by
    # creating Unicode password and updating
    # unicodePwd attribute.
    #pam_password ad

    # Use the OpenLDAP password change
    # extended operation to update the password.
    #pam_password exop

    # Redirect users to a URL or somesuch on password
    # changes.
    #pam_password_prohibit_message Please visit http://internal to change your password.

    # RFC2307bis naming contexts
    # Syntax:
    # nss_base_XXX        base?scope?filter
    # where scope is {base,one,sub}
    # and filter is a filter to be &'d with the
    # default filter.
    # You can omit the suffix eg:
    # nss_base_passwd    ou=People,
    # to append the default base DN but this
    # may incur a small performance impact.
    #nss_base_passwd    ou=People,dc=example,dc=com?one
    #nss_base_shadow    ou=People,dc=example,dc=com?one
    #nss_base_group        ou=Group,dc=example,dc=com?one
    #nss_base_hosts        ou=Hosts,dc=example,dc=com?one
    #nss_base_services    ou=Services,dc=example,dc=com?one
    #nss_base_networks    ou=Networks,dc=example,dc=com?one
    #nss_base_protocols    ou=Protocols,dc=example,dc=com?one
    #nss_base_rpc        ou=Rpc,dc=example,dc=com?one
    #nss_base_ethers    ou=Ethers,dc=example,dc=com?one
    #nss_base_netmasks    ou=Networks,dc=example,dc=com?ne
    #nss_base_bootparams    ou=Ethers,dc=example,dc=com?one
    #nss_base_aliases    ou=Aliases,dc=example,dc=com?one
    #nss_base_netgroup    ou=Netgroup,dc=example,dc=com?one

    # Just assume that there are no supplemental groups for these named users
    nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman,nscd

    # attribute/objectclass mapping
    # Syntax:
    #nss_map_attribute    rfc2307attribute    mapped_attribute
    #nss_map_objectclass    rfc2307objectclass    mapped_objectclass

    # configure --enable-nds is no longer supported.
    # NDS mappings
    #nss_map_attribute uniqueMember member

    # Services for UNIX 3.5 mappings
    #nss_map_objectclass posixAccount User
    #nss_map_objectclass shadowAccount User
    #nss_map_attribute uid msSFU30Name
    #nss_map_attribute uniqueMember msSFU30PosixMember
    #nss_map_attribute userPassword msSFU30Password
    #nss_map_attribute homeDirectory msSFU30HomeDirectory
    #nss_map_attribute homeDirectory msSFUHomeDirectory
    #nss_map_objectclass posixGroup Group
    #pam_login_attribute msSFU30Name
    #pam_filter objectclass=User
    #pam_password ad

    # configure --enable-mssfu-schema is no longer supported.
    # Services for UNIX 2.0 mappings
    #nss_map_objectclass posixAccount User
    #nss_map_objectclass shadowAccount user
    #nss_map_attribute uid msSFUName
    #nss_map_attribute uniqueMember posixMember
    #nss_map_attribute userPassword msSFUPassword
    #nss_map_attribute homeDirectory msSFUHomeDirectory
    #nss_map_attribute shadowLastChange pwdLastSet
    #nss_map_objectclass posixGroup Group
    #nss_map_attribute cn msSFUName
    #pam_login_attribute msSFUName
    #pam_filter objectclass=User
    #pam_password ad

    # RFC 2307 (AD) mappings
    #nss_map_objectclass posixAccount user
    #nss_map_objectclass shadowAccount user
    #nss_map_attribute uid sAMAccountName
    #nss_map_attribute homeDirectory unixHomeDirectory
    #nss_map_attribute shadowLastChange pwdLastSet
    #nss_map_objectclass posixGroup group
    #nss_map_attribute uniqueMember member
    #pam_login_attribute sAMAccountName
    #pam_filter objectclass=User
    #pam_password ad

    # configure --enable-authpassword is no longer supported
    # AuthPassword mappings
    #nss_map_attribute userPassword authPassword

    # AIX SecureWay mappings
    #nss_map_objectclass posixAccount aixAccount
    #nss_base_passwd ou=aixaccount,?one
    #nss_map_attribute uid userName
    #nss_map_attribute gidNumber gid
    #nss_map_attribute uidNumber uid
    #nss_map_attribute userPassword passwordChar
    #nss_map_objectclass posixGroup aixAccessGroup
    #nss_base_group ou=aixgroup,?one
    #nss_map_attribute cn groupName
    #nss_map_attribute uniqueMember member
    #pam_login_attribute userName
    #pam_filter objectclass=aixAccount
    #pam_password clear

    # Netscape SDK LDAPS
    #ssl on

    # Netscape SDK SSL options
    #sslpath /etc/ssl/certs

    # OpenLDAP SSL mechanism
    # start_tls mechanism uses the normal LDAP port, LDAPS typically 636
    #ssl start_tls
    #ssl on

    # OpenLDAP SSL options
    # Require and verify server certificate (yes/no)
    # Default is to use libldap's default behavior, which can be configured in
    # /etc/openldap/ldap.conf using the TLS_REQCERT setting.  The default for
    # OpenLDAP 2.0 and earlier is "no", for 2.1 and later is "yes".
    #tls_checkpeer yes

    # CA certificates for server certificate verification
    # At least one of these are required if tls_checkpeer is "yes"
    #tls_cacertfile /etc/ssl/ca.cert
    #tls_cacertdir /etc/ssl/certs

    # Seed the PRNG if /dev/urandom is not provided
    #tls_randfile /var/run/egd-pool

    # SSL cipher suite
    # See man ciphers for syntax
    #tls_ciphers TLSv1

    # Client certificate and key
    # Use these, if your server requires client authentication.
    #tls_cert
    #tls_key

    # Disable SASL security layers. This is needed for AD.
    #sasl_secprops maxssf=0

    # Override the default Kerberos ticket cache location.
    #krb5_ccname FILE:/etc/.ldapcache

    # SASL mechanism for PAM authentication - use is experimental
    # at present and does not support password policy control
    #pam_sasl_mech DIGEST-MD5
    uri ldap://127.0.0.1/
    ssl no
    tls_cacertdir /etc/openldap/cacerts
    pam_password crypt

     

  • (sample) Fedora 8 : /etc/openldap/slapd.conf

    #
    # See slapd.conf(5) for details on configuration options.
    # This file should NOT be world readable.
    #
    include        /etc/openldap/schema/core.schema
    include        /etc/openldap/schema/cosine.schema
    include        /etc/openldap/schema/inetorgperson.schema
    include        /etc/openldap/schema/nis.schema
    include        /etc/openldap/schema/misc.schema

    # Allow LDAPv2 client connections.  This is NOT the default.
    allow bind_v2

    # Do not enable referrals until AFTER you have a working directory
    # service AND an understanding of referrals.
    #referral    ldap://root.openldap.org

    pidfile        /var/run/openldap/slapd.pid
    argsfile    /var/run/openldap/slapd.args

    # Load dynamic backend modules:
    # modulepath    /usr/lib64/openldap
    # moduleload accesslog.la
    # moduleload auditlog.la
    # moduleload back_sql.la
    # moduleload denyop.la
    # moduleload dyngroup.la
    # moduleload dynlist.la
    # moduleload lastmod.la
    # moduleload pcache.la
    # moduleload ppolicy.la
    # moduleload refint.la
    # moduleload retcode.la
    # moduleload rwm.la
    # moduleload syncprov.la
    # moduleload translucent.la
    # moduleload unique.la
    # moduleload valsort.la

    # The next three lines allow use of TLS for encrypting connections using a
    # dummy test certificate which you can generate by changing to
    # /etc/pki/tls/certs, running "make slapd.pem", and fixing permissions on
    # slapd.pem so that the ldap user or group can read it.  Your client software
    # may balk at self-signed certificates, however.
    # TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
    # TLSCertificateFile /etc/pki/tls/certs/slapd.pem
    # TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem

    # Sample security restrictions
    #    Require integrity protection (prevent hijacking)
    #    Require 112-bit (3DES or better) encryption for updates
    #    Require 63-bit encryption for simple bind
    # security ssf=1 update_ssf=112 simple_bind=64

    # Sample access control policy:
    #    Root DSE: allow anyone to read it
    #    Subschema (sub)entry DSE: allow anyone to read it
    #    Other DSEs:
    #        Allow self write access
    #        Allow authenticated users read access
    #        Allow anonymous users to authenticate
    #    Directives needed to implement policy:
    # access to dn.base="" by * read
    # access to dn.base="cn=Subschema" by * read
    # access to *
    #    by self write
    #    by users read
    #    by anonymous auth
    #
    # if no access controls are present, the default policy
    # allows anyone and everyone to read anything but restricts
    # updates to rootdn.  (e.g., "access to * by * read")
    #
    # rootdn can always read and write EVERYTHING!

    #######################################################################
    # ldbm and/or bdb database definitions
    #######################################################################

    database    bdb
    suffix        "dc=example-fedora,dc=jp"
    rootdn        "cn=Manager,dc=example-fedora,dc=jp"

    # Cleartext passwords, especially for the rootdn, should
    # be avoided.  See slappasswd(8) and slapd.conf(5) for details.
    # Use of strong authentication encouraged.
    # rootpw        secret
    # rootpw        {crypt}ijFYNcSNctBYg

    rootpw        {MD5}Fh69fUUImzRG7k4NhtvPkg==

    # The database directory MUST exist prior to running slapd AND
    # should only be accessible by the slapd and slap tools.
    # Mode 700 recommended.
    directory    /var/lib/ldap

    # Indices to maintain for this database
    index objectClass                       eq,pres
    index ou,cn,mail,surname,givenname      eq,pres,sub
    index uidNumber,gidNumber,loginShell    eq,pres
    index uid,memberUid                     eq,pres,sub
    index nisMapName,nisMapEntry            eq,pres,sub

    # Replicas of this database
    #replogfile /var/lib/ldap/openldap-master-replog
    #replica host=ldap-1.example.com:389 starttls=critical
    #     bindmethod=sasl saslmech=GSSAPI
    #     authcId=host/ldap-master.example.com@EXAMPLE.COM

    access to attrs=userPassword
        by self write
        by dn="cn=Manager,dc=example-fedora,dc=jp" write
        by anonymous auth
        by * none

    access to *
        by dn="cn=Manager,dc=example-fedora,dc=jp" write
        by self write
        by * read

  • 【Management】System Center Essentials に Sp1 を適用する前にバックアップをとりましょう

    つい先日、自宅の近くに「ライオン パーキング」という月極駐車場が存在していることに気がつきました。無性にくやしいです....いろんな意味で...。

    さて、System Center Essentials(SCE) SP1 がリリースされたことは先日ご案内しました。すでに適用されましたか?

    【Management】System Center Essentials 2007 SP1 Upgrade モジュール 日本語版 公開

    SP1をアップグレードするには、事前準備が必要です。

    System Center Essentials 2007 SP1 Upgrade Guide(英語)
    http://technet.microsoft.com/en-us/library/cc339466.aspx

    ということで、実際にやってみることにします。

    SP1をダウンロードして実行するとウィザードが起動され、それにそってインストールを進めるわけですが、冒頭で「バックアップ」を促す画面が表示されます。

    では、実際にやってみましょう。

    しなければならないのは、「データベースノバックアップ」「証明書のバックアップ」「サブスクリプションの無効化」「ペンディングとなっているエージェントインストールの削除」の4つです。

    それぞれの手順を以下に示します。

    データベースのバックアップ

    バックアップが必要なデータベースは3種類あります。

     To back up all Essentials 2007 databases

    • OperationsManager (Essentials サーバーが使用するデータベースです)
    • OperationsManagerDW( レポーティングサービスが使用するデータベースです)
    • SUSDB(WSUSが使用しているデータベースです)

    1. SCEデータベースのインスタンスを調査する 

    以下のレジストリエントリを参照します。 

    HKLM\Software\Microsoft Operations Manager\3.0\Setup 配下の DatabaseServerName エントリの値がインスタンス名です。

    (例)SCEDEMO-SCE\SCE

    2. WSUSデータベースのインスタンスを調査します

    HKLM\Software\Update Service\Server\Setup 配下の sqlServerName エントリの値がインスタンス名です

    (例)SCEDEMO-SCE\SCE

    3. SQL Sever 2005 Management Studio Express を使用し、上記インスタンスに接続

    4. バックアップを行う

    証明書のバックアップ

    1. 証明書管理ツールを開く

    MMCを起動し、[スナップインの追加と削除]に「証明書」を追加します。このとき、「コンピュータアカウント」を選択して開いてください。

    2. 証明書をエクスポート

    WSUS ツリーの Wsus-Published-self-signed を右クリックして、[すべてのタスク] から [エクスポート] を選択します。このとき、「はい、秘密キーをエクスポートします」を選択してください。

    上記に加え、念のために以下のパスのバックアップもとっておきます。

    C:\Program Files\System Center Essentials 2007\Certificates

    サブスクリプションを無効化する

     Essentials の管理コンソールから[管理]領域を開き、[通知]-[サブスクリプション]を選択します。

    右側のペインに一覧されているサブスクリプションをすべて無効化します。

    ※これ、1つ1つやらないとなりません....複数選択して一気にできるとよいのですが.....

    保留中のエージェントの処理を削除する

     管理コンソールの[管理]領域で、[デバイスの管理]-[保留の管理] を選択し、右側のペインに表示された保留中の処理を[承認]するか[拒否]して、一覧に表示されない状態にしてください。

    以上が完了したら、SP1 のインストールを行ってください。

    SP1  をダウンロードして実行すると、ウィザード立ち上がります。

    インストールが始まる前に、以下のようにバックアップを促す画面が表示されますので、かならず先の手順で実行しておいてください。完了していれば、チェックボックスにチェックを入れて[次へ]をクリックします。

    アップグレードは、以下のように、WSUS→SCE→Reporting という順番で行われます。

    インストールが完了したら、再起動し、以下の画面でサブスクリプションを有効に戻してあげてください。

    SP1の適用により、「サブスクリプション」は「配信登録」という日本語に変わっています。

     

  • 【Management】Microsoft.Unix.Computer blog 開設 ~ OpsMgr v4 / SCE v2 ベータプログラムも開始!

    座薬って、入れたことあります? それとは全く関係ないのですが、hemorrhoid ってなんて読むんでしょう?

    さて、すでに高添のblog でも紹介されているとおり、4月にラスベガスで開催された MMS(Microsoft Management Summit)では「System Center Cross Platform Extensions and Connectors」について発表がありました。概要については、高添の記事をご覧ください。

    高添はここにいます
    Microsoft Management Summit 2008 in ラスベガス ~高添のフォロー付き~

    複数のプラットフォームが混在す��システムは管理が煩雑になりがちですし、両者をきっちりと管理できるスキルを持ったエンジニアの方々も、そう多くは無いというのが現状です。こうした問題は大規模なシステムだけでなく、数台のサーバーで構成される比較的小規模なシステムでも抱えています。いや、小規模なシステムのほうが人員を投入しずらい分、深刻かもしれません。

    これまでもマイクロソフトは Service for UNIX や ADAM(AD LDS)、ILM、Hyper-V 上の SUSE 対応 など、非Winodws プラットフォームに対する様々なソリューションを提供してきましたが、「次はManagementだ!」と言わんばかりに運用管理分野の Interoperability にも本腰を入れています。

    そんな意気込みの1つが、本社の Cross Platform チームによる Blog 開設です。

    Microsoft.Unix.Computer
    http://blogs.msdn.com/scxplat/default.aspx

    4月30日に開設されたばかり、出来立てほやほやの blog です。今後、要チェックです。

    そして、Blog の開設と同時に、Operations Manager 2007/Essentials 2007 の次期バージョンのベータプログラムも開始されました。

    Microsoft Connect(ベータプログラム サイト)
    https://connect.microsoft.com/default.aspx 

    現時点で公開されているのは、以下のプログラムです。英語版のためなかなかテストが難しいかもしれませんが、マイクロソフトの本気度を見ていただけるのではないかと思います。私のほうでも機会を見て動作状況をこちらで報告してまいります。

    OpsMgr 2007 Cross Platform Extensions(CPE) Beta

    OpsMgr 2007 から、非Windowsプラットフォームを監視することができる拡張機能です。HP-UX、Solaris, Red Hat Enterprise Linux、SUSE Linux Enterprise Server 用の管理パックのほか、それぞれのプラットフォーム上で動作するエージェントプログラムも用意されています。これにより、OpsMgr の管理コンソールから、直接上記プラットフォームのインベントリやアラート、パフォーマンス情報を収集して参照することができます。

    ダウンロードファイルに含まれているホワイトペーパーにも書かれているとおり、相互運用性のベースとなるのが以下のオープンな規格です。

    • WS_Management
    • OpenPegasus
    • OpenSSH

    WS_Management については Win-RM として Windows Server 2003 R2 にも実装されていました ( Windows Server 2003 でも使用可能な最新版の WinRM はこちらからダウンロード可能です ) が、SSH については未実装です。つまり、この部分が OpsMgr 側の Extention 部分となります。さらに、OpenPegasus のバックには、WinRM と情報をやり取りするためのプロバイダ が必要になります。これは OpsMgr Providers と呼ばれ、非Windowsプラットフォームにインストールされる Extention 部分です。

    ホワイトペーパーにはベータ版で監視可能な項目や、 パフォーマンスカウンタが具体的に記載されていますので、よろしければご覧ください。

    ホワイトペーパーを読むのがちょっと面倒だなぁという方は System Center MVP の Anders 氏のサイトをご覧ください。jpgファイルですが、実際に監視している画面を参照することができます。

    Anders Bengtsson( Microsoft MVP )'s consoto.se
    Cross Platform Extensions in the Sandbox

    OpsMgr Interop Connector Beta for HP OVO Beta

    HP OpenView Opertions v8.2 と Operations Managrer の間で情報共有するためのコネクターです。両者で発生したイベントをアラートとして相互に受け取ることができます。Open View 専用の管理パックも提供されています。

    ホワイトペーパーによれば、サポートされているプラットフォームは以下のようです。

    Operations Manager 側

    • Windows Server 2003

    OpenView Opetations version 8.2

    • Windows Server 2003
    • HP-UXi V3 11.x
      • SCX Core package dependencies: ixLibxml2, provided by Hewlett Packard, and OpenSSL
    • Solaris 10 SPARC
      • SCX Core package dependencies: SUNWlxml, SUNWopensslr, SUNWopenssl-commands, SUNWopenssl-libraries, SUNWzlib

    OpsMgr Interop Connector Beta for IBM TEC Beta

    IBM Tivoli Enterprise Console 3.8 or 3.9 と Operations Manager 2007 の間で情報共有するためのコネクタ。両者で発生したイベントをアラートとして相互に受け取ることができます。Tivoli Enterprise Console 専用の管理パックも提供されています。

    ベータ版でサポートされているプラットフォームは以下のようです。

    Operations Manager 側

    • Windows Server 2003

    IBM Tivoli Enterprise Console 側

    • Windows Server 2003
    • Solaris 10 SPARC
      • SCX Core package dependencies: SUNWlxml, SUNWopensslr, SUNWopenssl-commands, SUNWopenssl-libraries, SUNWzlib
    • Tivoli Framework 3.7.1, 4.1, 4.1.1

    なお、ベータテストに参加の際、簡単なアンケートに回答する必要があります。その際、OpsMgr と連携させたい他社製運用管理製品について聞いている項目があります。日本語環境での運用を充実させるためにも、ベータテストが始まったこの機会にフィードバックをお願いいたします!

     

  • 【Management】Data Protection Manager 2007 Rollup & Service Pack 1 について

    つい先日、TechCenter が リニューアルしたばかりの Data Protection Manager 2007 ですが、以下の Webcast が公開されています。英語で恐縮ですが...。

    TechNet Webcast: Upcoming Changes to Data Protection Manager 2007

    タイトル通り、DPM のエンハンス予定について紹介されたものです。

    Windows Server 2008 対応や Hyper-V 対応等が気になっている方も多いと思うので、簡単にご紹介しておきます。

    Webcast によれば、近々のエンハンスは「ロールアップ」と「サービスパック1」の2段階に分かれているようで、主に以下のような対応を予定しているとのことです。

    現時点で英語版でのエンハンスについてのみ明記されており、日本語版でのエンハンス内容および次期については明確ではありませんのでご注意ください。

    ロールアップアップデート

    英語版:SQL2008対応以外は2008.05.30 にリリースとのこと
    日本語版については明記されていないため不明(詳細が分かり次第 報告します)

    • Windows Server 2008 対応(DPMサーバーとして+保護対象として(bitLocker対応含む))
    • SQL Server 2008 対応
    • Virtual Server 2005 R2 クラスタ 対応
    • 複数の保護グループ、およびDPMサーバーでのテープライブラリ共有

    サービスパック1

    英語版:2008年11月にリリース予定とのこと
    日本語版:現時点では不明

    • SQL Server のミラーリングされたDB(フェールオーバー)対応
    • SharePoint 保護の拡張
    • Hyper-V ゲストOSのオンラインバックアップ(Hyper-V VSS writer のエンハンス)
    • その他、拡張性等のエンハンス
  • 【Management】【重要】Essentials SP1 適用の前に 3つの管理パックを削除してください

    System Center Essentials 2007 SP1 のリリースについてはすでにお知らせした通りです。

    【Management】System Center Essentials 2007 SP1 Upgrade モジュール 日本語版 公開

    【Management】System Center Essentials に Sp1 を適用する前にバックアップをとりましょう

    SP1のダウンロードサイトには、重要なメッセージが書かれているのですが、ご存知でしょうか。

    NOTE: Before you upgrade SCE SP1, you must first remove the following MPs. Otherwise your upgrade will fail and there is not a recovery path.
    Office XP 2003 MP
    Office XP 2007 MP
    Office XP library MP

    「SP1の適用前に以下の3つの管理パックを削除しないとアップグレードに失敗します」と書かれています。上記では管理パック名がわかりずらいのですが、削除すべき管理パックは以下の3つです。

    • インフォメーション ワーカー Office 2003

    • インフォメーション ワーカー Office 2007

    • インフォメーション ワーカー Office XP

     

  • 【2008】Server Core のリモート管理を極めたい方向け Virtual Lab - Remotely Managing Server Core

    寒いですね。

    Windows Server 2008 の新しいインストールオプションである Server Core はもうお試しになりましたか?

    the Microsoft Conference 2008 で担当したセッションでは、Server Core の本当に基本的なところだけをお話ししました。そのときに使用した資料が以下で公開されています。

    the MSC 2008 コンテンツダウンロードページ
    http://www.microsoft.com/japan/heroeshappenhere/contents/default.aspx

    このblogでもServer Coreに関する TIPS を多く紹介してきました。

    この blog のServer Core 関連投稿
    http://blogs.technet.com/junichia/archive/tags/Server+Core/default.aspx

    もっと情報が欲しい!もっと管理手法を極めたい!という方は、是非とも以下の バーチャルラボをお試しください。

     TechNet Virtual Lab: Remotely Managing Server Core

    操作の開始部分がすこしわかりずらいので、以下に画面キャプチャを張っておきます。

     

    この バーチャルラボをシナリオに沿って実行すると、リモートコンピュータから Server Core のイベントをフォーワードさせたり、イベントトリガーのタスクを作成する手順が理解できます。

    英語環境ですが、短いシナリオですので、ぜひお試しを。

  • 【Management】System Center Essentials SP1の新機能 - TechNet Magazine 5月号

    5月14日配信の TechNet Flash でもご案内しましたが、5月号の TechNet Magazine は Management 特集です。

    その中で、System Center Essentials 2007 Sp1 の新機能について詳細に解説されていますので、是非ともご覧ください。もちろん日本語に翻訳されています。

    画面が英語版なので、後日、日本語版での検証結果についてもこちらで報告します。

    System Center Essentials SP1 の新機能
     
    TechNet Magazine May 2008
     
     
  • 【Management】System Center Essentials Sp1適用済評価版 が公開

    全国の6500万の System Center Essentials ファンの皆様、大変お待たせいたしました。

    System Center Essentials SP1 適用済み評価版がダウンロードセンターで公開されました。

    System Center Essentials 2007 Service Pack 1 Evaluation copy - 日本語
    http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=246df207-f051-47c3-bd64-c9072281c3c8

    Essentials  SP1 では以下の機能強化がはかられています。

    What's New in System Center Essentials 2007 Service Pack 1
    http://technet.microsoft.com/en-us/library/cc339465.aspx 

    • セットアップ時のログがより詳細にとられるようになりトラブルシュートがしやすくなった
    • ワークグループ所属のコンピュータのサポート
    • SNMP v1 v2 に加えて SNMP v1 のサポート
    • Essentials が動作しているサーバーとは別のコンピュータに Essentials 用の SQL Server 2005 がインストールされている場合、異なるアーキテクチャ(x86 or x64)であってもインスタンスを作成することができる
    • Windows Server 2008 上での 管理サーバー、管理コンソール、エージェントの動作をサポート(2008用管理パックについてはもう少し先までお待ちください)
    • 複数の自動承認ルールの作成
    • 更新の管理に関する新機能 
    • 管理パック品質の改善
    • パフォーマンスの改善
      • メモリ使用量の削減
      • SQL Server 2005 のディスク使用量の削減
    • バックアップとリストアツールの提供
    • ダイアグラムビューの改善と機能追加

    等 

    SP1 単体のアップグレードモジュールは、公開までにもうすこし時間がかかりそうですが、さほどお待たせせずに公開されることでしょう。

    これから評価を始めるという方は、是非こちらをご使用ください。

     

  • 【Management】System Center Essentials 2007 SP1 Upgrade モジュール 日本語版 公開

    追記:2008.05.29  【Management】【重要】Essentials SP1 適用の前に 3つの管理パックを削除してください

    ***

    昨日、最終電車を乗り過ごしまして...気がついたら4つほど先の駅に到着したところでした。幸いにして実家の近くだったので、一晩実家でお世話になり、朝、オフクロの車で駅まで送ってもらいました。今年63歳になるオフクロの車でかかっていたCDがZARDだったのには驚きました...ファンなのだろうか...。

    それはともかく、全国 4820万人の System Center Essentials ファンのみなさま、大変お待たせしました。

    数日前に、SCE 2007 SP1 適用済み 評価版 についてご案内しました。

    【Management】System Center Essentials Sp1適用済評価版 が公開 

     昨晩、ようやく単体のアップグレードモジュールもようやく公開されました。

    System Center Essentials 2007 SP1 Upgrade (x64 & x86) - 日本語
    http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=20824f84-b98a-4e42-93a7-045a7a58e289

     SP1 の新機能については、以下もご参照ください。

    【Management】System Center Essentials SP1の新機能 - TechNet Magazine 5月号

     

  • 【Management】Essentials SP1 の新機能紹介 その1 ~複数の自動承認設定

    とあるブログで紹介されていたのを見たのですが、これ(YouTubeへの直リンです「Tiny Xevious (PC-6001 Original Song)」)、泣けます。 ちょうど、私が生まれて初めて手に入れた PC が PC6001mk2 でした。僕たちはなにか大切なものを忘れてしまったのかもしれない...などとマイクロソフトの社員が言ってはいけないので言いません。

    さて、舌の根も乾かないうちに System Center Essentials Sp1 の新機能をご紹介するコーナーです。

    今回は 「複数の自動承認設定」機能について紹介します。

    System Center Essentials 2007 は内部にWSUSを持っており、Microsoft Update サイトからダウンロードした更新ファイルを管理下のクライアントに配布(正確にはクライアント側の「自動更新サービス」がとりに来る」する機能を持っています。

    このとき、Essentials(WSUS)側で更新プログラムの配布が「承認」されていないと、クライアント側にインストールされません。かといって、1つ1つの更新ファイルを管理者が承認していたのでは、それだけで歳を取ってしまいます。

    そこで、特定の分類に属する更新プログラムを自動的に承認する機能が備わっています。SP1 適用前は、この自動承認ルールを1つしか持つことができなかったのですが、SP1からは複数の自動承認ルールを持つことができるようになりました。これは、かなりうれしいです。 

    規定では、以下のとおりです。「セキュリティ問題の修正プログラムと重要な更新」を「すべてのコンピュータ」に対して自動承認します。

    追加する場合には、[追加]ボタンをクリックし、対象となるコンピュータグループと更新の分類を指定すればOKです。ちなみに、分類は以下の中から選択することができます。

    • Feature packs
    • Service Packs
    • アプリケーション
    • 更新
    • 修正プログラム
    • セキュリティ問題の修正プログラム
    • 重要な更新
    • ツール
    • 定義更新プログラム

     

  • (sample) fedora 8 : /etc/openldap/ldap.conf

    #
    # LDAP Defaults
    #

    # See ldap.conf(5) for details
    # This file should be world readable but not world writable.

    #BASE    dc=example, dc=com
    #URI    ldap://ldap.example.com ldap://ldap-master.example.com:666

    #SIZELIMIT    12
    #TIMELIMIT    15
    #DEREF        never
    URI ldap://127.0.0.1/
    BASE dc=example-fedora,dc=jp
    TLS_CACERTDIR /etc/openldap/cacerts
  • 覚書 fedora8 操作

    http://server.lunq.net/?p=68 

    OpenLDAPインストール

    • yum -y install openldap*
    • ファイアウォールで、ldap /tcp ,udp を公開

    SNMP インストール

      参考 http://www.crimson-snow.net/hmsvr/fedora/memo/snmp.html

    • yum -y install net-snmp
    • yum -y install net-snmp-utils