4.統合認証の設定(Winbind+Kerberos)

 LinuxサーバがActiveDirectoryのユーザ情報を利用して認証が利用できるよう、設定を行う。

3-1 Winbindのインストール・設定

 Winbindを利用して、ActiveDirectoryにLinuxサーバをぶら下げ、認証を行う。この作業はrootで行う。

  1. Winbindのインストール:WinbindはSambaプログラム群の1つとして提供されているため、Winbindに必要なSambaパッケージをインストールする。

    # yum -y install samba-common
    # yum -y install samba-client

    なお、Windows2008のActiveDirectoryにぶら下げるには、Samba 3.2以降じゃないと駄目らしい。CentOS4系のSambaは3.0系なので、Windows2008にぶら下げたいなら、ここ(ftp://ftp.sernet.de/pub/samba/experimental/rhel/4/i386/)から「libwbclient」「samba3-client」「samba3-winbind」をダウンロードして、次のようにインストールする。

    # rpm -ivh libwbclient0-3.2.1-37.i386.rpm
    # rpm -ivh samba3-client-3.2.0-36.i386.rpm
    # rpm -ivh samba3-winbind-3.2.0-36.i386.rpm

  2. smb.confの設定1:viで/etc/samba/smb.confを開き、以下の文をコメントアウト(先頭に#を付ける)する。

     workgroup = MYGROUP
     server string = Samba Server
     printcap name = /etc/printcap
     load printers = yes
     cups options = raw
     security = user
    [homes]
     comment = Home Directories
     browseable = no
     writable = yes
    [printers]
     comment = All Printers
     path = /var/spool/samba
     browseable = no
     guest ok = no
     writable = no
     printable = yes

  3. smb.confの設定2:次に、Winbind認証に必要なパラメータを追加する。smb.confの最終行に以下の文を追加し、保存する。

    workgroup = ANDOKOMUTEN
    realm = ANDOKOMUTEN.JP
    security = ADS
    idmap uid = 10000-50000
    idmap gid = 10000-50000
    winbind cache time = 15
    winbind separator = +
    winbind use default domain = yes
    winbind enum users = yes
    winbind enum groups = yes
    template homedir = /home/%U
    template shell = /bin/false
    password server = ad.andokomuten.jp
    encrypt passwords = yes
    obey pam restrictions = yes

  4. アカウント取得方法の変更:LinuxシステムがWinbindを経由してActiveDirectoryからアカウント情報を取得するよう、設定を変更する。viで/etc/nsswitch.confを開き、次のように修正して保存する。

    passwd: files winbind
    shadow: files winbind
    group: files winbind

  5. Kerberos設定ファイルの修正:ActiveDirectoryのコンピュータとして接続できるよう、Kerberos設定ファイルを編集する。viで/etc/krb5.confを開き、次のように修正して保存する。

    [logging]
    default = FILE:/var/log/krb5libs.log
    kdc = FILE:/var/log/krb5kdc.log
    admin_server = FILE:/var/log/kadmind.log

    [libdefaults]
    default_realm = ANDOKOMUTEN.JP
    dns_lookup_realm = false
    dns_lookup_kdc = false

    [realms]
    ANDOKOMUTEN.JP = {
    kdc = ad.andokomuten.jp
    admin_server = ad.andokomuten.jp
    default_domain = andokomuten.jp
    }

    [domain_realm]
    .andokomuten.jp = ANDOKOMUTEN.JP
    andokomuten.jp = ANDOKOMUTEN.JP

    [kdc]
    profile = /var/kerberos/krb5kdc/kdc.conf

    [appdefaults]
    pam = {
    debug = false
    ticket_lifetime = 36000
    renew_lifetime = 36000
    forwardable = true
    krb4_convert = false
    }

  6. ActiveDirectoryに参加する:以下のコマンドを実行し、このサーバをActiveDirectoryに登録する。

    # net ads join -U administrator
    Enter administrator's password: ドメインのadministratorユーザのパスワードを入力
    Using short domain name -- ANDOKOMUTEN
    Joined 'SMTP' to realm 'ANDOKOMUTEN.JP'

    実行後、ドメインコントローラのサーバーでActiveDirectoryとDNSを確認し、SMTPサーバが登録されているかを確認する。
    なお、ドメインコントローラとメールサーバの時刻が大きくずれていると、以下のメッセージが表示される。

    Using short domain name -- ANDOKOMUTEN
    Joined 'SMTP' to realm 'ANDOKOMUTEN.JP'
    [****/**/** **:**:**, 0] libads/kerberos.c:ads_kinit_password(356)
     kerberos_kinit_password SMTP$@ANDOKOMUTEN.JP failed: Clock skew too great
    DNS update failed!

    ドメインコントローラのサーバーでActiveDirectoryとDNSを見ると、ドメインへの登録は成功しているが、DNSへの登録が失敗していることが分かる。ドメインに登録されたSMTPを削除し、以下のコマンドを実行してドメインコントローラと時刻を合わせ、再度、登録を行う。

    # ntpdate ad.andokomuten.jp
    ** *** **:**:** ntpdate[****]: step time server 192.168.10.2 offset ***.******* sec
    # clock -w

  7. Winbindの起動:Winbindを利用するため、起動する。また、サービスに登録する。

    # chkconfig winbind on
    # /etc/rc.d/init.d/winbind start
    Winbind サービスを起動中:                    [ OK ]
    # /etc/rc.d/init.d/winbind status
    winbindd (pid 1639 1638) を実行中...

4-2 動作確認(ActiveDirectory側)

 LinuxサーバがActiveDirectoryに登録されたかどうか、Windows側から確認する。

「前方参照ゾーン」ツリーの中にあるドメイン名を展開し、Computersをクリックすると、右側のウィンドウにsmtpという名前のコンピュータが登録されていることが確認できる。
登録されているコンピュータsmtpを右クリックし、プロパティを選択すると、プロパティウィンドウが表示される。
「全般」タブ内では、DNS名が正しく認識されていることが分かる。
「オペレーティングシステム」タブ内では、Sambaのバージョンが正しく認識されていることが分かる・・・はずだったが、最近のバージョン(3.0.56b)では何故か空白になってしまった。いいんだろうか・・・
(左の画像は、成功してた頃のもの)

4-3 動作確認(Linux側)

 Linuxサーバが、ActiveDirectoryに登録されたことは確認できた。次は、Linux側からWinbindやKerberosが正常に動作するかどうか、確認する。

  1. 確認1:参加したドメインの情報を参照する。

    # net ads info
    LDAP server: 192.168.10.2
    LDAP server name: ad
    Realm: ANDOKOMUTEN.JP
    Bind Path: dc=ANDOKOMUTEN,dc=JP
    LDAP port: 389
    Server time: Wed, 14 Dec 2005 19:04:50 GMT
    KDC server: 192.168.10.2
    Server time offset: 7

  2. 確認2:ドメインに参加した後に、そのドメインへの参加が有効かどうか確認する。

    # net ads testjoin
    Join is OK

  3. 確認3:ActiveDirectoryに登録されているユーザを取得できるかどうか確認する。

    # wbinfo -u
    administrator
    guest
    support_388945a0
    ad$
    krbtgt
    0001
    smtp$

  4. 確認4:ActiveDirectoryに登録されているグループを取得できるかどうか確認する。

    # wbinfo -g
    BUILTIN@system operators
    BUILTIN@replicators
    BUILTIN@guests
    BUILTIN@power users
    BUILTIN@print operators
    BUILTIN@administrators
    BUILTIN@account operators
    BUILTIN@backup operators
    BUILTIN@users
    domain computers
    domain controllers
    schema admins
    enterprise admins
    domain admins
    domain users
    domain guests
    group policy creator owners
    dnsupdateproxy
    yakusyoku

  5. 確認5:ドメインに参加し、Winbindの役割を正常に機能しているかを確認する。

    # wbinfo -t
    checking the trust secret via RPC calls succeeded

  6. 確認6:Winbindによるユーザ認証を確認する。

    # wbinfo -a 0001%パスワード
    plaintext password authentication succeeded
    challenge/response password authentication succeeded

  7. 確認7:ユーザが所属しているグループを確認する。

    # id 0001
    uid=10000(0001) gid=10000(domain users) 所属グループ=10000(domain users),10001(yakusyoku)


[ Back ]