web-dev-qa-db-ja.com

Kerberosを使用したUbuntuSSHパスワードなしログイン

これは私をけんけんさせています。 SSH経由でログインするときにKerberosチケットを受け入れるようにAD統合Ubuntu16.04サーバーをセットアップしようとしています。 ADドメインに参加した後、問題なくチケットを受け入れるCentOS 7サーバーがありますが、Ubuntuサーバーで正しく構成されていません。

設定は次のとおりです。

  • Windows 2012 ADドメイン(realdomain.tld)
  • Fedora 25ワークステーション(wksf25.realdomain.tld)
  • CentOS 7サーバー(sc7.realdomain.tld)
  • Ubuntu 16.04サーバー(su16.realdomain.tld)

すべてがレルムを介してADに結合され、問題なく機能します。ログイン時またはkinit経由でもすべてがKerberosチケットを取得します。 wksf25からsc7へのSSHは問題なく機能し、wkfs25へのログイン時に取得したkerberosチケットを使用してSSH経由でログインできます。

Ubuntuのセットアップ手順は次のとおりです。

  1. パッケージをインストールします。

    apt install realmd oddjob oddjob-mkhomedir sssd sssd-tools adcli samba-common krb5-user chrony packagekit libpam-krb5
    
  2. 編集chrony.conf AD DCを使用します。
  3. Realmd.confを設定します:vim /etc/realmd.conf

    [users]
    default-home = /home/%D/%U
    
    [realdomain.tld]
    fully-qualified-names = no
    manage-system = no
    automatic-id-mapping = yes
    
  4. ドメインに参加する:realm join -vU domainuser realdomain.tld

  5. ログインを許可:realm permit -R realdomain.tld -g linuxadmins
  6. Ubuntu固有-ログイン時にhomedirを作成するようにpamを設定します: `vim /etc/pam.d/common-session '

    session optional        pam_mkhomedir.so umask=0077
    
  7. Ubuntu固有-OpenSSHでGSSAPI認証を有効にします:vim /etc/ssh/sshd_config

    GSSAPIAuthentiction yes
    GSSAPICleanupCredentials no
    
  8. ドメインアカウントでログインし、すべてが機能していることを確認します。この時点ですべてが機能しますが、Ubuntuサーバー上のKerberosチケットを介したパスワードなしのSSHログインは除きます。

これが私が得るものですrealm list

realdomain.tld
  type: kerberos
  realm-name: REALDOMAIN.TLD
  domain-name: realdomain.tld
  configured: kerberos-member
  server-software: active-directory
  client-software: sssd
  required-package: sssd-tools
  required-package: sssd
  required-package: libnss-sss
  required-package: libpam-sss
  required-package: adcli
  required-package: samba-common-bin
  login-formats: %U
  login-policy: allow-permitted-logins
  permitted-logins: 
  permitted-groups: linuxusers

sssd.conf:

[sssd]
domains = realdomain.tld
config_file_version = 2
services = nss, pam

[domain/realdomain.tld]
ad_domain = realdomain.tld
krb5_realm = REALDOAMIN.TLD
realmd_tags = joined-with-adcli 
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_Shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%d/%u
access_provider = simple
simple_allow_groups = linuxusers

krb5.conf:

[libdefaults]
    dns_lookup_realm = false
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true
    rdns = false
    default_ccache_name = KEYRING:persistent:%{uid}

    default_realm = REALDOMAIN.TLD

[realms]
    REALDOMAIN.TLD = {
    }

[domain_realm]
    realdomain.org = REALDOMAIN.TLD
    .realdomain.org = REALDOMAIN.TLD

何が足りないのですか?

4
quinnr

修繕。 realm join -vU domainuser --membership-software=samba --client-software=sssd realdomain.tldrealmにデフォルトを使用させるのではなく、UbuntuのADドメインに参加します。

SSSDの設定には、適切だとは思わなかった小さな違いが1つありましたが、それが適切であることがわかりました。

Ubuntu:realmd_tags = joined-with-adcli

CentOS:realmd_tags = joined-with-samba

問題について別の見方をするために、私はOpenSUSE VMをスピンアップし、SUSEがどのようにAD統合を行うかを調査し始めました。SUSEがどのように機能するかを理解しているときに、 adcliの代わりにSambaを使用してWindows Server 2012+ ADに参加する必要があることを示唆しています。 1 上記の構成の違いにそれを追加してください。

ドメインを離れ、更新されたrealmコマンドを使用して再参加することで問題が修正され、すべてが最終日の間安定しています。

2つの方法の違いについて正確な根本的な原因はありませんが、これにはさらに調査が必要であり、また別の日に戦います。

2
quinnr

LDAPSをサポートするためにSSL証明書を追加すると同時に、同様の状況が発生しました(ただし、原因であるかどうかを判断するためにその変更を元に戻すことはありませんでした)。 adcliを好む理由があるかどうかはわかりませんが、adcliを使用しながらrealm joinを修正した2つのオプションが見つかりました(Ubuntu 14.04および16.04):

ソリューション1(Ubuntu 16.04または14.04)

krb5.confに2つの設定を追加します(どちらも役に立ちませんでした):

[libdefaults]
    ...
    canonicalize = true
    rdns = false

ソリューション2(Ubuntu 14.04のみ)

その後、私は this gitの問題に遭遇しました。これは、(単独で)14.04でも機能している別のオプションを示唆しています。

[libdefaults]
    ...
    dns_canonicalize_hostname = false

[〜#〜] fwiw [〜#〜]

私たちは実際にDNSを完全に制御しており、既存のレコードに問題を見つけることができませんでした。または、これらの必要性を排除した変更もありませんでした。

0
claytond