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] でログインするホスト名を入力して接続します。

パスワードを求められることなくログインすることができれば成功です。

 

お疲れ様でした。

 

Joomla templates by a4joomla