Kerberos TGTが機能するADバックエンドでsssd
を使用して、FreeBSD 10.0のWindows Server 2012 R2で実行されているActive Directoryからユーザーを認証するために必要な手順は何ですか?
すべてがすぐに機能するようにするには、いくつかの注意が必要な考慮事項があります。 FreeBSDは、現時点ではsssd
バージョン1.9.6のみをサポートしています。したがって、エンタープライズプリンシパル名はサポートされていません。
一致しないUPNを持つドメインがある場合、ログイン中に失敗します。これは、プロセス中にKerberos認証が失敗するためです。FreeBSDがKerberosでエンタープライズプリンシパル名をサポートしている場合でも、sssd
はこのケースを処理できません。
したがって、実際のバージョンのsssd
では、同じドメイン名内にユーザープリンシパル名を含めることが制限されています。次に例を示します。
Domain Name = example.com
NetBIOS Name = EXAMPLE
User Principal Name:
[email protected] 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/[email protected] -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 = [email protected]
ファイルを編集/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を使用していますか?組み込みのものか、MITのsecurity/krb5ですか?
Sssdをインストールするとき、security/krb5がインストールされている必要があります。現時点では、FreeBSDでまだ実験的と見なされています。したがって、この質問。
'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つは/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
自体にはMIT Kerberosが必要ですadcli
はopenldap-sasl-client
を必要としますが、他のパッケージ(sssd
のサブ依存関係を含む)は、openldap-client
を取り込みます。これにより、最小限のバイナリパッケージセットであっても、インストールが少し面倒になります。これを書いている時点では、FreeBSD用のSSSDのバイナリpkgにはSSSDのADサポートが含まれていません。
SMB
adcli
のpkgバイナリバージョンは存在しますが、これを書いている時点では機能していません。GSSAPI_MIT
cyrus-sasl-gssapi
は必須ですが、pkgバイナリバージョンは動作せず、SSSDを削除する原因となる奇妙な依存関係の問題があります。GSSAPI_MIT
openldap-sasl-client
が必要ですが、SSSDはSASL以外のバージョンのopenldapを取り込みたいと考えています。GSSAPI
オプションを選択してopenldap-sasl-client
を構成します(make config
)。pkg remove –f openldap-client
を実行しますopenldap-client
が削除され、SASLバージョンのインストールが可能になりますopenldap-sasl-client
をmake installします。pkg remove –f sssd
で削除することをお勧めします。(オプション)すべてが機能して検証されたら、pkg create
を使用して、適切なオプションを有効にして4つのパッケージのバイナリパッケージを作成し、すべてのシステムのポートにビルドする代わりにそれらを使用できます。バイナリのインストールは、portsビルドプロセスと同様のパターンに従います。
pkg install sssd-1.11.7_8.txz
pkg add
他のパッケージ(インストール、追加以外)。最後にopenldapパッケージを保存します。openldap-sasl-client
を追加する前に、pkg remove –f openldap-client
を実行しますpkg add openldap-sasl-client-2.4.44.txz
pkg create
を実行する前にSSSDバイナリのメタデータを変更してopenldap-client
への依存関係をopenldap-sasl-client
に置き換えることで、この削除/再インストールを行う必要がなくなります。これを検討する時間がありませんでした。openldap-client
も取り込むSSSDのサブ依存関係があるため、それらも修正する必要があります。Kerberos構成:
[libdefaults] default_realm = MYDOMAIN.NET forwardable = true #DNS SRVレコードなので、通常、AD環境で必要なものはすべて #AD/KRBサーバー/サービスを識別します。 #でADサーバーを手動で指定する場合はコメントアウトします dns_lookup_kdc = true [realms] 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 domains = MYDOMAIN.NET services = nss、pam、pac fallback_homedir =/home /%u [domain/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
ファイルのリストです。/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必要な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 required pam_unix.so no_warn use_first_pass #account account required pam_nologin.so #account required pam_krb5.so account required pam_login_access.so account required pam_unix.so account十分なpam_sss.so #セッション #sessionオプションのpam_ssh.so want_agent session optional pam_sss.so sess ion required pam_mkhomedir.so mode = 0700 session required pam_permit.so #password #password十分なpam_krb5.so no_warn try_first_pass #password十分なpam_unix.so try_first_pass use_authtok nullok password十分なpam_unix.so try_first_pass use_authtok password十分な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必須.____。] auth十分pam_sss.so use_first_pass auth required pam_deny.so #account #account required pam_krb5.so account required pam_login_access.so アカウントが必要ですpam_unix.so アカウント十分なpam_sss.so #セッション #sessionオプションpam_ssh.so want_agent session required pam_lastlog.so no_fail session o ptional pam_sss.so session required pam_mkhomedir.so mode = 0700 #password #password十分なpam_krb5.so no_warn try_first_pass #password required pam_unix.so no_warn try_first_pass password十分なpam_unix.so no_warn try_first_pass nullok use_authtok 十分なpam_sss.so use_authtok #password required 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 auth十分なpam_self.so no_warn auth requisite pam_group.so no_warn group = wheel root_only fail_safe ruser auth include system.dist #account account include system.dist #セッション セッションが必要ですpam_permit.so
(インデント)
system.dist
は、ストックの/etc/pam.d/system
ファイルのコピーです。 suコマンドの問題を防ぐために、上記の/etc/pam.d/su
ファイルに含まれています。su
は認証する必要がなく、アカウント情報はSSSD経由でネームサービススイッチを介してプルされるため、ルートとしてADアカウントにsu
することは引き続き可能です。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パスワードをユーザーに要求しますpam_sss.so
をpasswd PAMファイルに追加しても、passwd
は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
を使用して使用する前にKerberosチケットを取得する必要もあります。繰り返しますが、これはより不便であり、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名と一致しない場合)。このオプションを使用すると、適切な/etc/krb5.keytab
を含むHost/<FQDN>@REALM
ファイル内の任意のプリンシパルをSSHDが使用できるようになります。ssh -K <ip>
がパスワードの入力を求められることなく機能するために、ホストのIPv4アドレスとIPv6アドレスをKDCに追加する必要がある場合とない場合があります(すでに「kinit」を実行していると想定) 、 もちろん)。