OpenSSH と kerberos 認証を組み合わせたシングルサインオン(SSO)の設定方法をご紹介します。
設定することで、ドメイン環境内のサーバに、パスワードを聞かれることなくログインできるようになります。
kerberos サーバを一から構築するのは大変なため、以前構築した ActiveDirectory 環境を利用します。
Samba4とSSSDでLinux/Windowsの認証統合環境を構築(ActiveDirectory+NIS)
Samba4とSSSDでLinux/Windowsの認証統合環境を構築(ActiveDirectory+NIS) 冗長化編
Samba4とSSSDでLinux/Windowsの認証統合環境を構築(ActiveDirectory+NIS) メンバーサーバ編
構成は
- ドメイン名 :TESTDOMAIN.LOCAL
- ドメインコントローラ1 : dc01.testdomain.local
- ドメインコントローラ2 : dc02.testdomain.local
- メンバーサーバ : server01.testdomain.local
です。
1. 「HOST」 サービスプリンシパルの追加
現在の環境では、HOSTサービスプリンシパルが keytab に含まれていないので追加します。
# klist -ke
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
1 dc01$@TESTDOMAIN.LOCAL (arcfour-hmac)
1 dc01$@TESTDOMAIN.LOCAL (aes256-cts-hmac-sha1-96)
1 dc01$@TESTDOMAIN.LOCAL (aes128-cts-hmac-sha1-96)
1 dc01$@TESTDOMAIN.LOCAL (des-cbc-md5)
1 dc01$@TESTDOMAIN.LOCAL (des-cbc-crc)
[ドメインコントローラ1の設定]
# /usr/local/samba/bin/samba-tool domain exportkeytab /etc/krb5.keytab --principal=host/dc01.testdomain.local
# klist -ke
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
1 dc01$@TESTDOMAIN.LOCAL (arcfour-hmac)
1 dc01$@TESTDOMAIN.LOCAL (aes256-cts-hmac-sha1-96)
1 dc01$@TESTDOMAIN.LOCAL (aes128-cts-hmac-sha1-96)
1 dc01$@TESTDOMAIN.LOCAL (des-cbc-md5)
1 dc01$@TESTDOMAIN.LOCAL (des-cbc-crc)
1 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (arcfour-hmac)
1 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (aes256-cts-hmac-sha1-96)
1 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (aes128-cts-hmac-sha1-96)
1 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (des-cbc-md5)
1 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (des-cbc-crc)
[ドメインコントローラ2の設定]
# /usr/local/samba/bin/samba-tool domain exportkeytab /etc/krb5.keytab --principal=host/dc02.testdomain.local
# klist -ke
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
2 dc02$@TESTDOMAIN.LOCAL (arcfour-hmac)
2 dc02$@TESTDOMAIN.LOCAL (aes256-cts-hmac-sha1-96)
2 dc02$@TESTDOMAIN.LOCAL (aes128-cts-hmac-sha1-96)
2 dc02$@TESTDOMAIN.LOCAL (des-cbc-md5)
2 dc02$@TESTDOMAIN.LOCAL (des-cbc-crc)
2 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (arcfour-hmac)
2 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (aes256-cts-hmac-sha1-96)
2 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (aes128-cts-hmac-sha1-96)
2 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (des-cbc-md5)
2 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (des-cbc-crc)
メンバーサーバの server01 は、ドメイン参加した時点でふくまれているので設定は不要です。
[メンバーサーバの設定確認]
# klist -ke
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
2 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (des-cbc-crc)
2 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (des-cbc-md5)
2 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (aes128-cts-hmac-sha1-96)
2 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (aes256-cts-hmac-sha1-96)
2 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (arcfour-hmac)
2 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (des-cbc-crc)
2 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (des-cbc-md5)
2 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (aes128-cts-hmac-sha1-96)
2 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (aes256-cts-hmac-sha1-96)
2 host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 (arcfour-hmac)
2 SERVER01$@TESTDOMAIN.LOCAL (des-cbc-crc)
2 SERVER01$@TESTDOMAIN.LOCAL (des-cbc-md5)
2 SERVER01$@TESTDOMAIN.LOCAL (aes128-cts-hmac-sha1-96)
2 SERVER01$@TESTDOMAIN.LOCAL (aes256-cts-hmac-sha1-96)
2 SERVER01$@TESTDOMAIN.LOCAL (arcfour-hmac)
2. SSSDの設定変更
以前の設定では、ユーザログイン時にチケット(TGT)の自動取得ができないので、自動取得するために一部設定を変更します。
[全てのドメインコントローラおよびメンバーサーバで設定]
# vi /etc/sssd/sssd.conf
[sssd]
config_file_version = 2
domains = testdomain.local
services = nss, pam
debug_level = 0
[nss]
[pam]
[domain/testdomain.local]
id_provider = ad
#auth_provider = ad # コメントアウトします。
auth_provider = krb5 # 追加します。
access_provider = ad
#chpass_provider = ad # コメントアウトします。
chpass_provider = krb5 # 追加します。
entry_cache_netgroup_timeout = 15
entry_cache_timeout = 15
ldap_id_mapping = false
# ad_server = server.ad.example.com
# ad_hostname = server.ad.example.com
ad_domain = testdomain.local
ldap_sasl_authid = host/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 # 追加します。サーバに合わせて変更してください。
krb5_lifetime = 1h # 追加します。
krb5_renewable_lifetime = 1d # 追加します。
krb5_realm = TESTDOMAIN.LOCAL # 追加します。
SSSDを再起動します。
# systemctl restart sssd.service
ログイン時に自動的にチケットが取得できているか確認をします。
test01 ユーザでログインします。
$ klist
Ticket cache: FILE:/tmp/krb5cc_200001_1MSL8xn07Y
Default principal: このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。
Valid starting Expires Service principal
2016-11-23T23:16:23 2016-11-24T09:16:23 krbtgt/このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。
renew until 2016-11-30T23:16:23
チケットが表示されれば問題ありません。
3. SSHの設定変更
SSH で kerberos 認証を使うには、 GSSAPI を利用します。
[全てのドメインコントローラおよびメンバーサーバで設定]
# vi /etc/ssh/sshd_config
<略>
KerberosAuthentication yes
KerberosOrLocalPasswd yes
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
<略>
SSH を再起動します。
# systemctl restart sshd.service
4. SSHでログイン確認(シングルサインオン)
ドメインコントローラ1からメンバーサーバにSSOでSSH接続できるか確認します。
[test01@dc01 ~]$ ssh server01.testdomain.local
Last login: Wed Nov 23 23:22:41 2016 from 2001:a089:4e7c:0:a00:27ff:fe2c:393e
[test01@server01 ~]$
パスワードを求められることなくログインすることができれば成功です。
5. PuTTYでシングルサインオン
Windowsクライアントで利用できるSSHリモートログインソフト「PuTTY(パティ)」もkerberos 認証をサポートしています。
PuTTYを使ってSSOできるか確認します。
[Data] を選択して、「Use system username」 を選択します。
[Data] - [Auth] - [GSSAPI] を選択して 「Attempt GSSAPI authentication(SSH-2 only)」を選択します。
[Session] でログインするホスト名を入力して接続します。
パスワードを求められることなくログインすることができれば成功です。
お疲れ様でした。