Was sind die erforderlichen Schritte, um Benutzer aus einem Active Directory zu authentifizieren, das unter Windows Server 2012 R2 in FreeBSD 10.0 ausgeführt wird, sssd
wobei das AD-Backend mit Kerberos TGT funktioniert?
Was sind die erforderlichen Schritte, um Benutzer aus einem Active Directory zu authentifizieren, das unter Windows Server 2012 R2 in FreeBSD 10.0 ausgeführt wird, sssd
wobei das AD-Backend mit Kerberos TGT funktioniert?
Antworten:
Es gibt einige knifflige Überlegungen, damit alles sofort funktioniert. FreeBSD unterstützt sssd
derzeit nur Version 1.9.6. Daher werden Enterprise Principal Names nicht unterstützt.
Wenn Sie eine Domäne mit nicht übereinstimmenden UPNs haben, kann sie sich nicht anmelden, da die Kerberos-Authentifizierung während des Vorgangs fehlschlägt, selbst wenn FreeBSD Enterprise Principal Names mit Kerberos unterstützt, sssd
kann dieser Fall nicht behandelt werden.
In der aktuellen Version von sssd
Ihnen darf der Benutzerprinzipalname also nicht im selben Domänennamen enthalten sein, z. B.:
Domain Name = example.com
NetBIOS Name = EXAMPLE
User Principal Name:
username@example.com sAMAccountName: username
In diesem Wissen können wir die Schritte zur erfolgreichen Authentifizierung von Benutzern von AD in FreeBSD beschreiben.
Erstellen Sie die Datei /etc/krb5.conf
mit folgendem Inhalt:
[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = yes
Installieren Sie Samba 4.1:
$ pkg install samba41
Erstellen Sie die Datei /usr/local/etc/smb4.conf
mit folgendem Inhalt:
[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
Fragen Sie nach einem Administrator-Kerberos-Ticket:
$ kinit Administrator
Treten Sie dann der Domain bei und erstellen Sie eine Keytab
$ net ads join createupn=host/server-hostname.example.com@EXAMPLE.COM -k
$ net ads keytab create -k
Installieren Sie die erforderlichen Pakete:
$ pkg install sssd cyrus-sasl-gssapi
Bearbeiten Sie die Datei /usr/local/etc/sssd/sssd.conf
entsprechend diesen Einstellungen:
[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
Bearbeiten Sie die Datei /etc/nsswitch.conf
entsprechend diesen Einstellungen:
group: files sss
passwd: files sss
Installieren Sie optionale Pakete für die Erstellung des Basisverzeichnisses:
$ pkg install pam_mkhomedir
Ändern Sie die erforderlichen PAM
Bereiche, um diese Einstellungen anzupassen:
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>
Welche Kerberos verwenden Sie hier? Das eingebaute oder security / krb5 vom MIT?
Bei der Installation von sssd muss security / krb5 installiert sein, was derzeit in FreeBSD noch als experimentell angesehen wird. Also diese Frage.
Ich habe kein Glück, die AD-Benutzer / -Gruppen beim Ausführen von 'getent'-Befehlen zu erhalten. Dies kann daran liegen, dass sich der NETBIOS-Name vom Domain-Namen unterscheidet. In meinem Fall lautet der Domain-Name dawnsign.com und der NETBIOS-Name ist DSP.
Ich habe nur das Anmeldemodul pam.d konfiguriert. Welche anderen Pam-Module müssen bearbeitet werden, damit eine erfolgreiche Authentifizierung stattfinden kann?
Jede zusätzliche Info wäre sehr dankbar!
Das Neukompilieren von samba4 von Ports ist möglich, um die WinBind-Authentifizierung wie Linux auch ohne SSD zu verwenden. Kompilieren Sie samba4 einfach von den Ports neu, nachdem Sie sasl ldap aktiviert haben
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
Dadurch wird Samba mit der erforderlichen Unterstützung (gssapi, ldap, kerberos) neu kompiliert und anschließend die Datei nsswitch.conf wie folgt bearbeitet
passwd: files winbind
group: files winbind
Hallo,
Dies ist ein kleines Update zur Verwendung von sssd v1.11.7
Wenn Sie "id_provider = ad" verwenden und den folgenden Fehler in der sssd-Protokolldatei sehen:
/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]
Mit dem folgenden Verfahren können Sie dieses Problem beheben und die AD-Integration ordnungsgemäß ausführen. Erstellen Sie jetzt sssd v1.11.7 mit Samba-Unterstützung. Das Erstellen von src sssd ist erforderlich, damit es mit libsasl2 verknüpft ist
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
Installation (und die lustigen Verpackungs- und Abhängigkeitsprobleme)
/usr/bin
und den anderen in /usr/local/bin
. Da keine der Basissystemdateien in einem Paket enthalten zu sein scheint, können Sie das Heimdal KRB-Material nicht einfach entfernen. Etwas zu beachten.Vorwärtsabhängigkeiten der verschiedenen Pakete (interessante Abbildungen in Fettdruck, widersprüchliche Abhängigkeiten in Fettdruck und Kursivschrift):
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
Umgekehrte Abhängigkeiten der verschiedenen Pakete:
net/openldap24-sasl-client: sysutils/msktutil
net/openldap24-sasl-client: net/nss-pam-ldapd-sasl
net/openldap24-sasl-client: net-mgmt/adcli
sssd
selbst sehen, ist das MIT Kerberos erforderlich, obwohl wir Heimdal als Basispaket habenadcli
will openldap-sasl-client
, aber andere Pakete (einschließlich Unterabhängigkeiten von sssd
) ziehen ein openldap-client
, was Mutex mit dem sasl-Client ist (aus irgendeinem dummen Grund). Dies macht die Installation selbst bei einem minimalen Satz von Binärpaketen etwas mühsam.Zum jetzigen Zeitpunkt enthält das binäre Paket für SSSD für FreeBSD keine AD-Unterstützung in SSSD
SMB
adcli
existiert, funktioniert aber zum jetzigen Zeitpunkt nicht.
GSSAPI_MIT
cyrus-sasl-gssapi
ist erforderlich, aber die pkg-Binärversion funktioniert nicht und weist seltsame Abhängigkeitsprobleme auf, die dazu führen, dass SSSD entfernt wird.
GSSAPI_MIT
openldap-sasl-client
ist für die Funktionalität erforderlich, aber SSSD möchte die Nicht-SASL-Version von openldap verwenden.
openldap-sasl-client
mit der GSSAPI
Option selected ( make config
) in Ports.pkg remove –f openldap-client
openldap-client
andere Pakete (wie SSSD) ohne automatische Entfernung entfernt und die Installation der SASL-Version ermöglichtopenldap-sasl-client
pkg remove –f sssd
(Optional) Sobald alles funktioniert und überprüft wurde, können Sie pkg create
Binärpakete der vier Pakete mit den richtigen aktivierten Optionen erstellen und diese verwenden, anstatt sie in Ports auf jedem System zu erstellen. Die Installation von Binary folgt einem ähnlichen Muster wie der Build-Prozess für Ports:
pkg install sssd-1.11.7_8.txz
pkg add
die anderen Pakete (nicht installieren, hinzufügen), wobei das openldap-Paket zum letzten Mal gespeichert wird.openldap-sasl-client
machen Sie apkg remove –f openldap-client
pkg add openldap-sasl-client-2.4.44.txz
pkg create
die Abhängigkeit von ersetzen openldap-client
mit openldap-sasl-client
der Notwendigkeit zu entfernen , diese entfernen / wieder installieren zu tun. Ich hatte keine Zeit, mich damit zu befassen.
openldap-client
, sodass Sie diese ebenfalls beheben müssten.Kerberos-Konfiguration:
[libdefaults] default_realm = MYDOMAIN.NET weiterleitbar = wahr # Normalerweise alles, was Sie in einer AD-Umgebung benötigen, da DNS-SRV-Einträge # identifiziert die AD / KRB-Server / -Dienste. Kommentieren Sie aus, wenn Sie # möchten manuell auf Ihren AD-Server verweisen dns_lookup_kdc = true [Bereiche] MYDOMAIN.NET = { # Wenn Sie manuell auf einen anderen AD-Server verweisen als in DNS # 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-Attribute verwenden, auskommentieren, wenn Sie automatisch generierte verwenden # UIDs und GIDs. ldap_id_mapping = False cache_credentials = true ad_server = adserver.mydomain.net # wenn Sie keine Bash haben oder was auch immer in der LoginShell des AD-Kontos steht # Attribut installiert override_shell = / bin / tcsh
/etc/pam.d
Dateien, die ich ändern musste, damit SSSD mit FreeBSD funktioniert:/etc/pam.d/sshd:
# # $ FreeBSD: releng / 11.0 / etc / pam.d / sshd 197769 05.10.2009 09: 28: 54Z des $ # # PAM-Konfiguration für den Dienst "sshd" # # auth auth ausreichend pam_opie.so no_warn no_fake_prompts auth erforderlich pam_opieaccess.so no_warn allow_local #auth ausreichend pam_krb5.so no_warn try_first_pass #auth ausreichend pam_ssh.so no_warn try_first_pass auth ausreichend pam_unix.so no_warn try_first_pass nullok auth ausreichend pam_sss.so use_first_pass auth erforderlich pam_unix.so no_warn use_first_pass # Konto Konto erforderlich pam_nologin.so #account erforderlich pam_krb5.so Konto erforderlich pam_login_access.so Konto erforderlich pam_unix.so Konto ausreichend pam_sss.so # Sitzung #session optional pam_ssh.so want_agent Sitzung optional pam_sss.so Sitzung erforderlich pam_mkhomedir.so mode = 0700 Sitzung erforderlich pam_permit.so # Passwort #password ausreichend pam_krb5.so no_warn try_first_pass #password ausreichend pam_unix.so try_first_pass use_authtok nullok Passwort ausreichend pam_unix.so try_first_pass use_authtok Passwort ausreichend pam_sss.so use_authtok
/etc/pam.d/system:
# # $ FreeBSD: releng / 11.0 / etc / pam.d / system 197769 05.10.2009 09: 28: 54Z des $ # # Systemweite Standardeinstellungen # # auth auth ausreichend pam_opie.so no_warn no_fake_prompts auth erforderlich pam_opieaccess.so no_warn allow_local #auth ausreichend pam_krb5.so no_warn try_first_pass #auth ausreichend pam_ssh.so no_warn try_first_pass #auth erforderlich pam_unix.so no_warn try_first_pass nullok auth ausreichend pam_unix.so no_warn try_first_pass auth ausreichend pam_sss.so use_first_pass auth erforderlich pam_deny.so # Konto #account erforderlich pam_krb5.so Konto erforderlich pam_login_access.so Konto erforderlich pam_unix.so Konto ausreichend pam_sss.so # Sitzung #session optional pam_ssh.so want_agent Sitzung erforderlich pam_lastlog.so no_fail Sitzung optional pam_sss.so Sitzung erforderlich pam_mkhomedir.so mode = 0700 # Passwort #password ausreichend pam_krb5.so no_warn try_first_pass #password erforderlich pam_unix.so no_warn try_first_pass Passwort ausreichend pam_unix.so no_warn try_first_pass nullok use_authtok Passwort ausreichend pam_sss.so use_authtok #password erforderlich pam_deny.so
/etc/pam.d/su:
# # $ FreeBSD: releng / 11.0 / etc / pam.d / su 219663 15.03.2011 10: 13: 35Z des $ # # PAM-Konfiguration für den Dienst "su" # # auth auth ausreichend pam_rootok.so no_warn auth ausreichend pam_self.so no_warn auth erforderlich pam_group.so no_warn group = rad root_only fail_safe ruser auth include system.dist # Konto Konto enthalten system.dist # Sitzung Sitzung erforderlich pam_permit.so
(Einzug)
system.dist
ist eine Kopie der Bestandsdatei /etc/pam.d/system
. Es ist in der /etc/pam.d/su
obigen Datei enthalten, um Probleme mit dem Befehl su zu vermeiden.su
Konten als Root zu AD zu verwenden, da sich Root nach dem Root su
nicht mehr authentifizieren muss und die Kontoinformationen über SSSD über den Namensdienstschalter abgerufen werden.sudo
aus Sicherheitsgründen verwendenksu
und das funktioniert für den Wechsel von Benutzer A zu Benutzer B.
ksu
(in /usr/bin
) ist SUID nicht standardmäßig eingestellt
ksu
funktioniert,chmod u+s /usr/bin/ksu
krb5
Paket installiert in /usr/local/bin
) ist bei der Installation SUID/usr/local/bin
vorher /usr/bin
usw.ksu
fordert den Benutzer zur Eingabe des AD / Kerberos-Kennworts des Zielbenutzers aufpasswd
funktioniert nicht, um Ihr AD / Kerberos-Kennwort zu ändern, selbst wenn Sie pam_sss.so
der passwd PAM-Datei hinzufügen . Die passwd
Binärdatei unterstützt nur die lokale und NIS-Verwendung kpasswd
, um Ihr Kennwort auf den AD / Kerberos-Servern zu ändern.Name Service Switch:
/etc/nsswitch.conf
Datei sollte so konfiguriert sein, dass der sss-Dienst für passwd und Gruppen verwendet wird. Beispiel:
group: files sss
passwd: files sss
Beitritt zu einer Domain:
adcli
kinit
vor der Verwendung ein zu machen, es erledigt dies für Sie basierend auf den bereitgestellten Creds.
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
Dienstprogramm
net
Dienstprogramm ist Teil der Samba-Suite.smb.conf
Konfigurationsdatei eingerichtet werden. Dies macht die Verwendung schwieriger und unpraktischer, insbesondere nicht interaktiv.kinit
. Dies ist wiederum unpraktischer und macht es etwas schwieriger, nicht interaktiv in einem Skript zu verwenden, da es zwei Schritte anstelle von einem gibt.
SSHD-Überlegungen:
/etc/ssh/sshd_config
GSSAPIAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication yes
PasswordAuthentication no
wenn Sie diese Option verwenden./bin/passwd
, der nur NIS und die lokale passwd-Datei unterstützt.GSSAPICleanupCredentials yes
kdestroy
beim Abmelden ausgeführtGSSAPIStrictAcceptorCheck no
host/<FQDN>@REALM
, um mit dem KDC zu sprechen, macht es jedoch manchmal falsch (z. B. wenn der Hostname nicht mit dem DNS-Namen des SSH-Servers übereinstimmt). Mit dieser Option kann SSHD jedes Prinzipal in der /etc/krb5.keytab
Datei verwenden, einschließlich des richtigenhost/<FQDN>@REALM
ssh -K <ip>
funktionieren, damit Sie ohne Aufforderung zur Eingabe eines Kennworts arbeiten können (vorausgesetzt, Sie haben bereits einen Kinit durchgeführt). natürlich).