Jakie są wymagane kroki w celu uwierzytelnienia użytkowników z usługi Active Directory działającej w systemie Windows Server 2012 R2 we FreeBSD 10.0 przy użyciu sssdzaplecza AD przy działającym Kerberos TGT?
Jakie są wymagane kroki w celu uwierzytelnienia użytkowników z usługi Active Directory działającej w systemie Windows Server 2012 R2 we FreeBSD 10.0 przy użyciu sssdzaplecza AD przy działającym Kerberos TGT?
Odpowiedzi:
Istnieje kilka trudnych kwestii, aby wszystko działało od razu po wyjęciu z pudełka. FreeBSD obsługuje obecnie tylko sssdwersję 1.9.6. Dlatego nie ma obsługi głównych nazw korporacyjnych.
Jeśli masz domenę z niepasującymi UPN, logowanie się nie powiedzie, ponieważ uwierzytelnianie Kerberos zakończy się niepowodzeniem podczas procesu, nawet jeśli FreeBSD obsługuje główne nazwy korporacyjne z Kerberos, sssdnie może obsłużyć tego przypadku.
W rzeczywistej wersji sssdjesteś ograniczony do głównej nazwy użytkownika w tej samej nazwie domeny, na przykład:
Domain Name = example.com
NetBIOS Name = EXAMPLE
User Principal Name:
username@example.com sAMAccountName: username
Znając to, możemy opisać kroki do pomyślnego uwierzytelnienia użytkowników z AD we FreeBSD.
Utwórz plik /etc/krb5.confo następującej treści:
[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = yes
Zainstaluj Samba 4.1:
$ pkg install samba41
Utwórz plik /usr/local/etc/smb4.confo następującej treści:
[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
Poproś o bilet Kerberos administratora:
$ kinit Administrator
Następnie dołącz do domeny i utwórz keytab
$ net ads join createupn=host/server-hostname.example.com@EXAMPLE.COM -k
$ net ads keytab create -k
Zainstaluj wymagane pakiety:
$ pkg install sssd cyrus-sasl-gssapi
Edytuj plik, /usr/local/etc/sssd/sssd.confaby dopasować te ustawienia:
[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
Edytuj plik, /etc/nsswitch.confaby dopasować te ustawienia:
group: files sss
passwd: files sss
Zainstaluj opcjonalne pakiety do tworzenia katalogu domowego:
$ pkg install pam_mkhomedir
Zmodyfikuj niezbędne PAMdziedziny, aby dopasować te ustawienia:
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>
Którego protokołu Kerberos używasz tutaj? Wbudowany czy security / krb5 z MIT?
Podczas instalacji sssd wymaga zainstalowania security / krb5, które w tej chwili jest nadal uważane za eksperymentalne we FreeBSD. Zatem to pytanie.
Nie mam szczęścia w uzyskiwaniu użytkowników / grup AD podczas wykonywania poleceń „getent”. może to wynikać z faktu, że nazwa NETBIOS różni się od nazwy domeny -ie w moim przypadku nazwa domeny to dawnsign.com, a nazwa NETBIOS to DSP.
Skonfigurowałem tylko moduł logowania pam.d. Jakie inne moduły pam należy edytować, aby uwierzytelnienie przebiegło pomyślnie?
Wszelkie dodatkowe informacje będą mile widziane!
Ponowna kompilacja samba4 z portów jest możliwa przy użyciu uwierzytelnienia winbind, takiego jak Linux, nawet bez sssd. Po prostu ponownie skompiluj samba4 z portów po włączeniu sasl ldap
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
Spowoduje to rekompilację samby z wszelkim niezbędnym wsparciem (gssapi, ldap, kerberos), a następnie edycję pliku nsswitch.conf w ten sposób
passwd: files winbind
group: files winbind
Witam
Jest to niewielka aktualizacja dotycząca używania sssd v1.11.7
Jeśli używasz „id_provider = reklama” i widzisz następujący błąd w pliku dziennika 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]
Aby rozwiązać ten problem i sprawić, że integracja AD działa poprawnie, możesz użyć poniższej procedury. Teraz buduj sssd v1.11.7 z obsługą Samby, potrzebna jest kompilacja z src sssd, więc jest ona połączona z 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
Instalacja (i zabawne problemy z pakowaniem i zależnością)
/usr/bin, a drugi w /usr/local/bin. Ponieważ żaden z podstawowych plików systemowych nie wydaje się być w pakiecie, nie można po prostu usunąć Heimdal KRB. Coś, o czym należy pamiętać.Przekazywanie zależności między różnymi pakietami (interesujące pogrubione pisma, sprzeczne pogrubione kursywa):
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/ldbOdwróć zależności różnych pakietów:
net/openldap24-sasl-client: sysutils/msktutilnet/openldap24-sasl-client: net/nss-pam-ldapd-saslnet/openldap24-sasl-client: net-mgmt/adcli
sssd, wymaga MIT Kerberos, mimo że Heimdal jest pakietem podstawowymadclichce openldap-sasl-client, ale dołączają się inne pakiety (w tym zależności zależne sssd) openldap-client, co jest mutexem z klientem sasl (z jakiegokolwiek niemądrego powodu). To sprawia, że instalacja jest trochę uciążliwa, nawet przy minimalnym zestawie pakietów binarnych.W tym momencie binarne pkg dla SSSD dla FreeBSD nie obejmuje obsługi AD w SSSD
SMBadcliistnieje, ale w chwili pisania tego tekstu nie działa.
GSSAPI_MITcyrus-sasl-gssapi jest wymagana, ale wersja binarna pkg nie działa i ma dziwne problemy z zależnością, które powodują, że usuwa SSSD.
GSSAPI_MITopenldap-sasl-client jest wymagany dla funkcjonalności, ale SSSD chce pobrać wersję Openldap inną niż SASL.
openldap-sasl-clientz GSSAPIopcją wybraną ( make config) w portach.pkg remove –f openldap-client
openldap-clientbez robienia jakichkolwiek zapisków jakichkolwiek innych pakietów (takich jak SSSD) i umożliwi instalację wersji SASLopenldap-sasl-client
pkg remove –f sssd
(Opcjonalnie) Gdy wszystko będzie już działać i zweryfikowane, możesz użyć pkg createdo tworzenia pakietów binarnych czterech pakietów z włączonymi odpowiednimi opcjami i używać ich zamiast budować je w portach w każdym systemie. Instalacja pliku binarnego przebiega podobnie do procesu budowania portów:
pkg install sssd-1.11.7_8.txz
pkg add inne pakiety (nie instaluj, nie dodawaj), zachowując pakiet openldap na koniec.openldap-sasl-clientwykonajpkg remove –f openldap-client
pkg add openldap-sasl-client-2.4.44.txz
pkg createzastąpić zależność od openldap-clientz openldap-sasl-clientdo usunięcia trzeba to zrobić usunąć / reinstall. Nie miałem czasu na zrobienie tego.
openldap-client, więc trzeba je również naprawić.Konfiguracja Kerberos:
[libdefaults]
default_realm = MYDOMAIN.NET
forwardable = true
# Zwykle wszystko, czego potrzebujesz w środowisku AD, ponieważ rekordy DNS SRV
# zidentyfikuje serwery / usługi AD / KRB. Skomentuj, jeśli ty
# chcesz ręcznie wskazać serwer AD
dns_lookup_kdc = true
[dziedziny]
MYDOMAIN.NET = {
# Jeśli ręcznie wskazujesz na inny serwer AD niż w 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 domeny = MYDOMAIN.NET services = nss, pam, pac fallback_homedir = / home /% u [domena / MYDOMAIN.NET] id_provider = reklama access_provider = reklama auth_provider = reklama chpass_provider = reklama # użyj atrybutów AD POSIX, skomentuj, jeśli używasz generowanego automatycznie # UID i GID. ldap_id_mapping = False cache_credentials = true ad_server = adserver.mydomain.net # jeśli nie masz basha lub cokolwiek jest w loginShell konta AD # atrybut zainstalowany override_shell = / bin / tcsh
/etc/pam.dplików, które musiałem zmodyfikować, aby SSSD działało z FreeBSD:/etc/pam.d/sshd:
# # $ FreeBSD: releng / 11.0 / etc / pam.d / sshd 197769 2009-10-05 09: 28: 54Z des $ # # Konfiguracja PAM dla usługi „sshd” # # auth auth wystarczające pam_opie.so no_warn no_fake_prompts wymagane uwierzytelnianie pam_opieaccess.so no_warn allow_local #auth wystarczające pam_krb5.so no_warn try_first_pass #auth wystarczające pam_ssh.so no_warn try_first_pass auth wystarczające pam_unix.so no_warn try_first_pass nullok auth wystarczające pam_sss.so use_first_pass wymagane uwierzytelnianie pam_unix.so no_warn use_first_pass # konto wymagane konto pam_nologin.so #account wymagane pam_krb5.so wymagane konto pam_login_access.so wymagane konto pam_unix.so konto wystarczające pam_sss.so # sesja #session opcjonalne pam_ssh.so want_agent sesja opcjonalna pam_sss.so wymagana sesja tryb pam_mkhomedir.so = 0700 wymagana sesja pam_permit.so # hasło # hasło wystarczające pam_krb5.so no_warn try_first_pass # hasło wystarczające pam_unix.so try_first_pass use_authtok nullok hasło wystarczające pam_unix.so try_first_pass use_authtok wystarczające hasło 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 $ # # Domyślne ustawienia systemowe # # auth auth wystarczające pam_opie.so no_warn no_fake_prompts wymagane uwierzytelnianie pam_opieaccess.so no_warn allow_local #auth wystarczające pam_krb5.so no_warn try_first_pass #auth wystarczające pam_ssh.so no_warn try_first_pass #auth wymagane pam_unix.so no_warn try_first_pass nullok auth wystarczające pam_unix.so no_warn try_first_pass auth wystarczające pam_sss.so use_first_pass wymagane uwierzytelnianie pam_deny.so # konto #account wymagane pam_krb5.so wymagane konto pam_login_access.so wymagane konto pam_unix.so konto wystarczające pam_sss.so # sesja #session opcjonalne pam_ssh.so want_agent wymagana sesja pam_lastlog.so no_fail sesja opcjonalna pam_sss.so wymagana sesja tryb pam_mkhomedir.so = 0700 # hasło # hasło wystarczające pam_krb5.so no_warn try_first_pass # hasło wymagane pam_unix.so no_warn try_first_pass hasło wystarczające pam_unix.so no_warn try_first_pass nullok use_authtok wystarczające hasło pam_sss.so use_authtok # hasło wymagane pam_deny.so
/etc/pam.d/su:
# # $ FreeBSD: releng / 11.0 / etc / pam.d / su 219663 15.03.2011 10: 13: 35Z des $ # # Konfiguracja PAM dla usługi „su” # # auth auth wystarczające pam_rootok.so no_warn auth wystarczające pam_self.so no_warn auth Requisite pam_group.so no_warn group = koło root_only fail_safe ruser auth include system.dist # konto konto obejmuje system.dist # sesja wymagana sesja pam_permit.so
(akapit)
system.distjest kopią /etc/pam.d/systempliku zapasowego . Jest on zawarty w /etc/pam.d/supowyższym pliku, aby uniknąć problemów z poleceniem su.sudodawać konta AD jako root, ponieważ raz root sunie musi się uwierzytelniać, a informacje o koncie są przeciągane przez przełącznik usługi nazw przez SSSD.sudoze względów bezpieczeństwaksui to działa do przełączania z użytkownika A na użytkownika B.
ksu(in /usr/bin) nie ma domyślnie ustawionego SUID
ksudziałał,chmod u+s /usr/bin/ksukrb5pakiet zainstalowany w /usr/local/bin) jest SUID podczas instalacji/usr/local/binwcześniej /usr/binitdksu wyświetli monit o podanie hasła AD / Kerberos użytkownika docelowegopasswdnie będzie działać, aby zmienić hasło AD / Kerberos, nawet jeśli dodasz pam_sss.sodo pliku PAM passwd. Plik passwdbinarny obsługuje tylko lokalne i NIS Użyj kpasswddo zmiany hasła na serwerach AD / Kerberos.Przełącznik usługi nazw:
/etc/nsswitch.confPlik powinien być skonfigurowany do korzystania z usługi dla SSS passwd i grup. Przykład:
group: files ssspasswd: files sssDołączanie do domeny:
adcli
kinitprzed użyciem, robi to dla Ciebie na podstawie dostarczonych kredytów.
adcli join -D mydomain.net -U Administrator--show-details –vadcli join –H adclient.mydomain.net -D mydomain.net -U Administrator --show-details -v
netNarzędzie
SambanetNarzędzie jest częścią pakietu Samba.smb.confpliku konfiguracyjnym, co sprawia, że korzystanie z niego jest trudniejsze i bardziej niewygodne, zwłaszcza w sposób nieinteraktywny.kinit. Ponownie jest to bardziej niewygodne i sprawia, że nieco trudniej jest używać nieinteraktywnie w skrypcie, ponieważ istnieją dwa kroki zamiast jednego.
Uwagi dotyczące dysku SSHD:
/etc/ssh/sshd_config
GSSAPIAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication yes
PasswordAuthentication nopodczas korzystania z tej opcji./bin/passwd, która nie obsługuje nic poza NIS i lokalnym plikiem passwd.GSSAPICleanupCredentials yes
kdestroypo wylogowaniuGSSAPIStrictAcceptorCheck no
host/<FQDN>@REALMdo rozmowy z KDC, ale czasami robi się źle (na przykład, jeśli nazwa hosta nie zgadza się z nazwą DNS serwera SSH). Ta opcja pozwala SSHD na użycie dowolnej nazwy głównej w /etc/krb5.keytabpliku, która zawiera odpowiedniąhost/<FQDN>@REALMssh -K <ip>aby działał bez pytania o hasło (zakładając, że już wykonałeś „kinit”, oczywiście).