sssd
Kerberos TGTが機能するADバックエンドを使用して、FreeBSD 10.0のWindows Server 2012 R2で実行されているActive Directoryからユーザーを認証するために必要な手順は何ですか?
sssd
Kerberos TGTが機能するADバックエンドを使用して、FreeBSD 10.0のWindows Server 2012 R2で実行されているActive Directoryからユーザーを認証するために必要な手順は何ですか?
回答:
すべてがすぐに機能するようにするには、注意が必要な考慮事項がいくつかあります。sssd
現時点では、FreeBSDはバージョン1.9.6 のみをサポートしています。したがって、エンタープライズプリンシパル名はサポートされていません。
一致しないUPNを持つドメインがある場合、ログイン中に失敗します。これは、プロセス中にKerberos認証が失敗するためです。FreeBSDがKerberosでエンタープライズプリンシパル名をサポートしている場合でも、はsssd
このケースを処理できません。
したがって、実際のバージョンでsssd
は、ユーザープリンシパル名は同じドメイン名内に制限されています。次に例を示します。
Domain Name = example.com
NetBIOS Name = EXAMPLE
User Principal Name:
username@example.com sAMAccountName: username
これを知っていれば、FreeBSDでADからユーザーを認証する手順を説明できます。
/etc/krb5.conf
次の内容のファイルを作成します。
[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = yes
Samba 4.1をインストールします。
$ pkg install samba41
/usr/local/etc/smb4.conf
次の内容のファイルを作成します。
[global]
security = ads
realm = EXAMPLE.COM
workgroup = EXAMPLE
kerberos method = secrets and keytab
client signing = yes
client use spnego = yes
log file = /var/log/samba/%m.log
管理者のKerberosチケットを要求します。
$ kinit Administrator
次に、ドメインに参加してキータブを作成します
$ net ads join createupn=host/server-hostname.example.com@EXAMPLE.COM -k
$ net ads keytab create -k
必要なパッケージをインストールします。
$ pkg install sssd cyrus-sasl-gssapi
/usr/local/etc/sssd/sssd.conf
この設定と一致するようにファイルを編集します。
[sssd]
config_file_version = 2
services = nss, pam
domains = example.com
[nss]
[pam]
[domain/example.com]
# Uncomment if you need offline logins
#cache_credentials = true
id_provider = ad
auth_provider = ad
access_provider = ad
chpass_provider = ad
# Comment out if the users have the shell and home dir set on the AD side
default_shell = /bin/tcsh
fallback_homedir = /home/%u
# Uncomment and adjust if the default principal SHORTNAME$@REALM is not available
#ldap_sasl_mech = GSSAPI
#ldap_sasl_authid = SERVER-HOSTNAME$@EXAMPLE.COM
/etc/nsswitch.conf
この設定と一致するようにファイルを編集します。
group: files sss
passwd: files sss
ホームディレクトリ作成用のオプションパッケージをインストールします。
$ pkg install pam_mkhomedir
PAM
この設定に一致するように必要なレルムを変更します。
auth sufficient /usr/local/lib/pam_sss.so
account required /usr/local/lib/pam_sss.so ignore_unknown_user
session required /usr/local/lib/pam_mkhomedir.so mode=0700
session optional /usr/local/lib/pam_sss.so
password sufficient /usr/local/lib/pam_sss.so use_authtok
$ pkg remove -f openldap-client
$ pkg install openldap-sasl-client
$ getent passwd <username>
ここではどのKerberosを使用していますか?組み込みの1つまたはMITのsecurity / krb5?
sssdをインストールするときは、現時点ではまだFreeBSDで実験的と見なされているsecurity / krb5をインストールする必要があります。したがって、この質問。
'getent'コマンドを実行するときに、ADユーザー/グループを取得することができません。これは、NETBIOS名がドメイン名と異なるためである可能性があります。つまり、私の場合、ドメイン名はdawnsign.comで、NETBIOS名はDSPです。
pam.dログインモジュールのみを設定しました。認証を成功させるために、他にどのpamモジュールを編集する必要がありますか?
追加情報をいただければ幸いです。
ポートからsamba4を再コンパイルすると、sssdがなくてもLinuxのようなwinbind認証を使用できます。sasl ldapを有効にした後、ポートからsamba4を再コンパイルするだけです
pkg remove samba41
pkg install cyrus-sasl-gssapi samba36-libsmbclient pam_mkhomedir ldb
pkg remove -f openldap-client
pkg install openldap-sasl-client
cd /usr/ports/security/sssd && make install
これは、必要なすべてのサポート(gssapi、ldap、kerberos)でsambaを再コンパイルし、nsswitch.confを次のように編集します
passwd: files winbind
group: files winbind
こんにちは、
これは、sssd v1.11.7の使用に関する小さな更新です
「id_provider = ad」を使用している場合、sssdログファイルに次のエラーが表示されます。
/var/log/sssd/sssd_example.com.log
(Sun Oct 5 18:41:37 2014) [sssd[be[alidaho.com]]] [sasl_bind_send] (0x0020): ldap_sasl_bind failed (-12)[Not Supported]
(Sun Oct 5 18:41:37 2014) [sssd[be[alidaho.com]]] [sasl_bind_send] (0x0080): Extended failure message: [unknown error]
次の手順を使用してこの問題を解決し、AD統合を正しく機能させることができます。Sambaをサポートするsssd v1.11.7をビルドします。srcsssdからビルドする必要があるため、libsasl2とリンクします
pkg remove samba41
pkg install cyrus-sasl-gssapi samba36-libsmbclient pam_mkhomedir ldb
pkg remove -f openldap-client
pkg install openldap-sasl-client
cd /usr/ports/security/sssd && make install
インストール(および楽しいパッケージングと依存関係の問題)
/usr/bin
に、もう1セットはにインストールすると、2セットのKerberosコマンド
が残り/usr/local/bin
ます。基本システムファイルはパッケージに含まれていないようなので、Heimdal KRBを単純に削除することはできません。知っておくべきこと。さまざまなパッケージの前方依存関係(太字の興味深いdep、太字の斜体の矛盾するdep):
net-mgmt/adcli:
net/openldap24-sasl-client
security/cyrus-sasl2-gssapi: security/cyrus-sasl2
net/openldap24-sasl-client: security/cyrus-sasl2
security/sssd: security/nss
security/sssd:
security/krb5
security/sssd: security/cyrus-sasl2
security/sssd:
net/openldap24-client
security/sssd: lang/python27
security/sssd: lang/python2
security/sssd: dns/c-ares
security/sssd: devel/tevent
security/sssd: devel/talloc
security/sssd: devel/popt
security/sssd: devel/pcre
security/sssd: devel/libunistring
security/sssd: devel/libinotify
security/sssd: devel/gettext-runtime
security/sssd: devel/ding-libs
security/sssd: devel/dbus
security/sssd: databases/tdb
security/sssd: databases/ldb
さまざまなパッケージの依存関係を逆にします。
net/openldap24-sasl-client: sysutils/msktutil
net/openldap24-sasl-client: net/nss-pam-ldapd-sasl
net/openldap24-sasl-client: net-mgmt/adcli
sssd
基本パッケージとしてHeimdalを使用しているにもかかわらず、MIT Kerberosが必要であることがわかります。adcli
が望んopenldap-sasl-client
でいますが、他のパッケージ(のサブ依存関係を含むsssd
)openldap-client
はを取り込みます。これは、sasslクライアントとのミューテックスです(どんな愚かな理由でも)。これにより、最小限のバイナリパッケージセットであっても、インストールが少し面倒になります。これを書いている時点では、FreeBSD用のSSSDのバイナリpkgには、SSSDでのADサポートは含まれていません。
SMB
adcli
存在しますが、これを書いている時点では機能しません。
GSSAPI_MIT
cyrus-sasl-gssapi
が必要ですが、pkgバイナリバージョンは機能せず、SSSDを削除する原因となる奇妙な依存関係の問題があります。
GSSAPI_MIT
openldap-sasl-client
機能には必須ですが、SSSDはopenldapのSASL以外のバージョンを取り込みたいと考えています。
openldap-sasl-client
して構成しGSSAPI
ます(make config
)。pkg remove –f openldap-client
openldap-client
により、他のパッケージ(SSSDなど)の自動削除を行わずに削除され、SASLバージョンのインストールが可能になりますopenldap-sasl-client
pkg remove –f sssd
(オプション)すべてが機能し、検証されたらpkg create
、適切なオプションを有効にして4つのパッケージのバイナリパッケージを作成し、すべてのシステムのポートでビルドする代わりにそれらを使用できます。バイナリのインストールは、portsビルドプロセスと同様のパターンに従います。
pkg install sssd-1.11.7_8.txz
pkg add
他のパッケージ(インストール、追加以外)。openldapパッケージを最後に保存します。openldap-sasl-client
DO aをpkg remove –f openldap-client
pkg add openldap-sasl-client-2.4.44.txz
pkg create
で依存関係を交換するopenldap-client
とopenldap-sasl-client
、この削除/再インストールを行う必要性を取り除くために。これを検討する時間はありませんでした。
openldap-client
、これらも依存する ため、それらも修正する必要があります。Kerberos構成:
[libdefaults] default_realm = MYDOMAIN.NET forwardable = true #DNS SRVレコードなので、通常、AD環境で必要なすべてのもの #AD / KRBサーバー/サービスを識別します。もしあなたがコメントアウト #手動でADサーバーを指定する dns_lookup_kdc = true [レルム] MYDOMAIN.NET = { #DNSにあるものとは異なるADサーバーを手動で指定している場合 #admin_server = adserver.mydomain.net #kdc = adserver.mydomain.net } [domain_realm] mydomain.net = MYDOMAIN.NET .mydomain.net = MYDOMAIN.NET
[sssd] config_file_version = 2 ドメイン= MYDOMAIN.NET services = nss、pam、pac fallback_homedir = / home /%u [ドメイン/MYDOMAIN.NET] id_provider = ad access_provider = ad auth_provider = ad chpass_provider = ad #AD POSIX属性を使用、自動生成を使用している場合はコメント化 #UIDとGID。 ldap_id_mapping = False cache_credentials = true ad_server = adserver.mydomain.net #bash、またはADアカウントのloginShellに何もない場合 #インストールされた属性 override_shell = / bin / tcsh
/etc/pam.d
SSSDをFreeBSDで動作させるために変更しなければならなかったファイルのリストです。/etc/pam.d/sshd:
# #$ FreeBSD:releng / 11.0 / etc / pam.d / sshd 197769 2009-10-05 09:28:54Z des $ # #「sshd」サービスのPAM構成 # #auth auth十分なpam_opie.so no_warn no_fake_prompts auth requisite pam_opieaccess.so no_warn allow_local #auth十分なpam_krb5.so no_warn try_first_pass #auth十分なpam_ssh.so no_warn try_first_pass auth十分なpam_unix.so no_warn try_first_pass nullok auth十分なpam_sss.so use_first_pass authが必要ですpam_unix.so no_warn use_first_pass #アカウント アカウントに必要なpam_nologin.so #account required pam_krb5.so アカウントに必要なpam_login_access.so アカウントに必要なpam_unix.so アカウント十分なpam_sss.so #セッション #sessionオプションのpam_ssh.so want_agent セッションオプションのpam_sss.so セッションに必要なpam_mkhomedir.so mode = 0700 セッションにはpam_permit.soが必要 #パスワード #password十分なpam_krb5.so no_warn try_first_pass #password十分なpam_unix.so try_first_pass use_authtok nullok パスワード十分なpam_unix.so try_first_pass use_authtok パスワード十分なpam_sss.so use_authtok
/etc/pam.d/system:
# #$ FreeBSD:releng / 11.0 / etc / pam.d / system 197769 2009-10-05 09:28:54Z des $ # #システム全体のデフォルト # #auth auth十分なpam_opie.so no_warn no_fake_prompts auth requisite pam_opieaccess.so no_warn allow_local #auth十分なpam_krb5.so no_warn try_first_pass #auth十分なpam_ssh.so no_warn try_first_pass #auth required pam_unix.so no_warn try_first_pass nullok auth十分なpam_unix.so no_warn try_first_pass auth十分なpam_sss.so use_first_pass authが必要なpam_deny.so #アカウント #account required pam_krb5.so アカウントに必要なpam_login_access.so アカウントに必要なpam_unix.so アカウント十分なpam_sss.so #セッション #sessionオプションのpam_ssh.so want_agent セッションにはpam_lastlog.so no_failが必要 セッションオプションのpam_sss.so セッションに必要なpam_mkhomedir.so mode = 0700 #パスワード #password十分なpam_krb5.so no_warn try_first_pass #password required pam_unix.so no_warn try_first_pass パスワード十分なpam_unix.so no_warn try_first_pass nullok use_authtok パスワード十分なpam_sss.so use_authtok #password必須pam_deny.so
/etc/pam.d/su:
# #$ FreeBSD:releng / 11.0 / etc / pam.d / su 219663 2011-03-15 10:13:35Z des $ # # "su"サービスのPAM構成 # #auth auth十分なpam_rootok.so no_warn 十分な認証pam_self.so no_warn auth requisite pam_group.so no_warn group = wheel root_only fail_safe ruser auth include system.dist #アカウント アカウントにはsystem.distが含まれます #セッション セッションにはpam_permit.soが必要
(インデント)
system.dist
在庫/etc/pam.d/system
ファイルのコピーです。/etc/pam.d/su
suコマンドの問題を防ぐために、上記のファイルに含まれています。su
ルートと、以降、ルートとしてアカウントADにsu
認証する必要はありませんし、アカウント情報がSSSDを経由して、ネームサービススイッチを通して引っ張られます。sudo
、セキュリティ上の理由からのみ使用する必要がありますksu
ユーザーAからユーザーBへの切り替えにも使用できます。
ksu
(内の/usr/bin
)にはデフォルトでSUIDが設定されていません
ksu
はchmod u+s /usr/bin/ksu
krb5
インストールされたパッケージ/usr/local/bin
)はインストール時にSUIDです/usr/local/bin
から/usr/bin
、などになるようにすることができます。ksu
ターゲットユーザーのAD / Kerberosパスワードをユーザーに要求しますpasswd
pam_sss.so
passwd PAMファイルに追加しても、AD / Kerberosパスワードの変更は機能しません。passwd
バイナリは、ローカルとNISの使用をサポートkpasswd
AD / Kerberosサーバ(複数可)のパスワードを変更します。ネームサービススイッチ:
/etc/nsswitch.conf
ファイルは、passwdとグループにsssサービスを使用するように構成する必要があります。例:
group: files sss
passwd: files sss
ドメインに参加する:
adcli
kinit
使用する前に行う必要はありません、それは提供された信用に基づいてあなたのために行います。
adcli join -D mydomain.net -U Administrator--show-details –v
adcli join –H adclient.mydomain.net -D mydomain.net -U Administrator --show-details -v
net
ユーティリティ
net
ユーティリティは、Sambaスイートの一部です。smb.conf
構成ファイルでドメインの詳細を設定する必要があるため、特に非対話的に使用することがより困難で不便になります。kinit
。繰り返しますが、これはより不便であり、1つのステップではなく2つのステップがあるため、スクリプトで非インタラクティブに使用することが少し難しくなります。
SSHDの考慮事項:
/etc/ssh/sshd_config
GSSAPIAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication yes
PasswordAuthentication no
このオプションを使用する場合は、必ず構成してください。/bin/passwd
、が呼び出され、NISとローカルのpasswdファイル以外はサポートされません。GSSAPICleanupCredentials yes
kdestroy
ログアウト時に実行しますGSSAPIStrictAcceptorCheck no
host/<FQDN>@REALM
を使用してKDCと通信しますが、時々それが間違ってしまいます(たとえば、ホスト名がSSHサーバーのDNS名と一致しない場合)。このオプションにより、SSHDは/etc/krb5.keytab
ファイル内の任意のプリンシパルを使用できます。host/<FQDN>@REALM
ssh -K <ip>
して、パスワードのプロンプトを表示せずに機能するようにする必要がある場合とない場合があります(すでに「kinit」を実行していることを前提とします)。もちろん)。