geek.conf.2

あるインフラエンジニアの備忘録

LinuxからNTLM認証してシングルサインオン的WEBシステムを構築する〜その1〜

ちょりっす。眠い人です。

今日はLinuxからNTLM認証してシングルサインオン的WEBシステムを構築する方法を書くお。〜その1〜

NTLM認証とはWindows統合認証というか、で、samba付属デーモンであるWinbindを用いてActive DirectoryからWindowsユーザ/グループ情報を取得して、これを用いてLinux情報をWindows情報として統合し、WEBシステム等へのシングルサインオンに利用可能とする認証機能のことです。

まずNSS設定ファイルの/etc/nsswitch.conf内passwd,shadow,groupに対してfiles winbindと記述し、/etc/passwd or /etc/group ⇒ winbindつまりActive Directoryという問合せ順序とします。

------------------------------nsswitch.conf Start------------------------------------
passwd: files winbind
shadow: files winbind
group: files winbind
------------------------------nsswitch.conf End------------------------------------

ちゅぎに/etc/samba/smb.conf内に認証方式(ここではadsに設定)、ドメイン名、マッピングIDの範囲、Winbindで使用するドメイン名等のNTLM認証情報をglobalセクションに設定します。

------------------------------smb.conf Start------------------------------------

[global]
security = ads
workgroup = DOMAIN_NAME
realm = DOMAIN.NAME.JP
password server = domain.name.jp
encrypt passwords = true
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind use default domain = yes

------------------------------smb.conf End------------------------------------

そんでネットワーク認証サービスKerberos認証サービスを使用して認証するActive Directoryを認識させます。
そのために/etc/krb5.conf内にActive Directoryサーバ、ドメイン、チケットライフタイム等を設定します。


------------------------------krb5.conf Start------------------------------------

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

[libdefaults]
default_realm = DOMAINNAME.JP
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes

[realms]
DOMAIN.NAME.JP = {
kdc = domain.name.jp
admin_server = domain.name.jp
default_domain = domain.name.jp
}

[domain_realm]
.domain.name.jp = DOMAIN.NAME.JP
domain.name.jp = DOMAIN.NAME.JP

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

------------------------------krb5.conf End------------------------------------


細かい設定として/etc/hosts等のネットワーク設定を正しく行う。(当たり前〜)やDNSサーバにはActive Directoryサーバを指定するよ。

ここでWinbindサービスを起動します。/etc/init.d/winbind start

ドメイン参加を確認してみる。
#Winbindを設定したサーバで
#net ads join -U USERNAME

joined ドメイン名 to realm '認証領域名'
とかなんとかと出ればドメイン参加OK

参加後ステータスを確認してみる。

# net ads testjoin
Join is OK

さらにNTLM認証を確認してみる。

# ntlm_auth --username=DOMAIN_NAME\\USERNAME
password:
NT_STATUS_OK: Success

参考URL→Apache(Linux)に、Windowsドメイン認証を利用して、シングルサインオンを実現する詳細手順 - RX-7乗りの適当な日々

これでLinuxからWinbindよりNTLM認証させる、まで設定できました。
次回〜その2〜はApacheにNTLM認証情報を渡してWEBサービスシングルサインオンするように設定します。