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, sssdwobei 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, sssdwobei das AD-Backend mit Kerberos TGT funktioniert?
Antworten:
Es gibt einige knifflige Überlegungen, damit alles sofort funktioniert. FreeBSD unterstützt sssdderzeit 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, sssdkann dieser Fall nicht behandelt werden.
In der aktuellen Version von sssdIhnen 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.confmit 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.confmit 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.confentsprechend 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.confentsprechend 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 PAMBereiche, 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/binund 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-clientsecurity/cyrus-sasl2-gssapi: security/cyrus-sasl2net/openldap24-sasl-client: security/cyrus-sasl2security/sssd: security/nsssecurity/sssd:security/krb5security/sssd: security/cyrus-sasl2security/sssd:net/openldap24-clientsecurity/sssd: lang/python27security/sssd: lang/python2security/sssd: dns/c-aressecurity/sssd: devel/teventsecurity/sssd: devel/tallocsecurity/sssd: devel/poptsecurity/sssd: devel/pcresecurity/sssd: devel/libunistringsecurity/sssd: devel/libinotifysecurity/sssd: devel/gettext-runtimesecurity/sssd: devel/ding-libssecurity/sssd: devel/dbussecurity/sssd: databases/tdbsecurity/sssd: databases/ldbUmgekehrte Abhängigkeiten der verschiedenen Pakete:
net/openldap24-sasl-client: sysutils/msktutilnet/openldap24-sasl-client: net/nss-pam-ldapd-saslnet/openldap24-sasl-client: net-mgmt/adcli
sssdselbst sehen, ist das MIT Kerberos erforderlich, obwohl wir Heimdal als Basispaket habenadcliwill 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
SMBadcliexistiert, funktioniert aber zum jetzigen Zeitpunkt nicht.
GSSAPI_MITcyrus-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_MITopenldap-sasl-client ist für die Funktionalität erforderlich, aber SSSD möchte die Nicht-SASL-Version von openldap verwenden.
openldap-sasl-clientmit der GSSAPIOption selected ( make config) in Ports.pkg remove –f openldap-client
openldap-clientandere 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 createBinä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-clientmachen Sie apkg remove –f openldap-client
pkg add openldap-sasl-client-2.4.44.txz
pkg createdie Abhängigkeit von ersetzen openldap-clientmit openldap-sasl-clientder 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.dDateien, 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.distist eine Kopie der Bestandsdatei /etc/pam.d/system. Es ist in der /etc/pam.d/suobigen Datei enthalten, um Probleme mit dem Befehl su zu vermeiden.suKonten als Root zu AD zu verwenden, da sich Root nach dem Root sunicht mehr authentifizieren muss und die Kontoinformationen über SSSD über den Namensdienstschalter abgerufen werden.sudoaus Sicherheitsgründen verwendenksuund das funktioniert für den Wechsel von Benutzer A zu Benutzer B.
ksu(in /usr/bin) ist SUID nicht standardmäßig eingestellt
ksufunktioniert,chmod u+s /usr/bin/ksukrb5Paket installiert in /usr/local/bin) ist bei der Installation SUID/usr/local/binvorher /usr/binusw.ksu fordert den Benutzer zur Eingabe des AD / Kerberos-Kennworts des Zielbenutzers aufpasswdfunktioniert nicht, um Ihr AD / Kerberos-Kennwort zu ändern, selbst wenn Sie pam_sss.soder passwd PAM-Datei hinzufügen . Die passwdBinä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.confDatei sollte so konfiguriert sein, dass der sss-Dienst für passwd und Gruppen verwendet wird. Beispiel:
group: files ssspasswd: files sssBeitritt zu einer Domain:
adcli
kinitvor 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 –vadcli join –H adclient.mydomain.net -D mydomain.net -U Administrator --show-details -v
netDienstprogramm
netDienstprogramm ist Teil der Samba-Suite.smb.confKonfigurationsdatei 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 nowenn Sie diese Option verwenden./bin/passwd, der nur NIS und die lokale passwd-Datei unterstützt.GSSAPICleanupCredentials yes
kdestroybeim 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.keytabDatei verwenden, einschließlich des richtigenhost/<FQDN>@REALMssh -K <ip>funktionieren, damit Sie ohne Aufforderung zur Eingabe eines Kennworts arbeiten können (vorausgesetzt, Sie haben bereits einen Kinit durchgeführt). natürlich).