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 sssd
zaplecza 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 sssd
zaplecza 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 sssd
wersję 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, sssd
nie może obsłużyć tego przypadku.
W rzeczywistej wersji sssd
jesteś 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.conf
o 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.conf
o 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.conf
aby 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.conf
aby dopasować te ustawienia:
group: files sss
passwd: files sss
Zainstaluj opcjonalne pakiety do tworzenia katalogu domowego:
$ pkg install pam_mkhomedir
Zmodyfikuj niezbędne PAM
dziedziny, 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-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
Odwróć zależności różnych pakietów:
net/openldap24-sasl-client: sysutils/msktutil
net/openldap24-sasl-client: net/nss-pam-ldapd-sasl
net/openldap24-sasl-client: net-mgmt/adcli
sssd
, wymaga MIT Kerberos, mimo że Heimdal jest pakietem podstawowymadcli
chce 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
SMB
adcli
istnieje, ale w chwili pisania tego tekstu nie działa.
GSSAPI_MIT
cyrus-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_MIT
openldap-sasl-client
jest wymagany dla funkcjonalności, ale SSSD chce pobrać wersję Openldap inną niż SASL.
openldap-sasl-client
z GSSAPI
opcją wybraną ( make config
) w portach.pkg remove –f openldap-client
openldap-client
bez 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 create
do 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-client
wykonajpkg remove –f openldap-client
pkg add openldap-sasl-client-2.4.44.txz
pkg create
zastąpić zależność od openldap-client
z openldap-sasl-client
do 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.d
plikó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.dist
jest kopią /etc/pam.d/system
pliku zapasowego . Jest on zawarty w /etc/pam.d/su
powyższym pliku, aby uniknąć problemów z poleceniem su.su
dodawać konta AD jako root, ponieważ raz root su
nie musi się uwierzytelniać, a informacje o koncie są przeciągane przez przełącznik usługi nazw przez SSSD.sudo
ze względów bezpieczeństwaksu
i to działa do przełączania z użytkownika A na użytkownika B.
ksu
(in /usr/bin
) nie ma domyślnie ustawionego SUID
ksu
działał,chmod u+s /usr/bin/ksu
krb5
pakiet zainstalowany w /usr/local/bin
) jest SUID podczas instalacji/usr/local/bin
wcześniej /usr/bin
itdksu
wyświetli monit o podanie hasła AD / Kerberos użytkownika docelowegopasswd
nie będzie działać, aby zmienić hasło AD / Kerberos, nawet jeśli dodasz pam_sss.so
do pliku PAM passwd. Plik passwd
binarny obsługuje tylko lokalne i NIS Użyj kpasswd
do zmiany hasła na serwerach AD / Kerberos.Przełącznik usługi nazw:
/etc/nsswitch.conf
Plik powinien być skonfigurowany do korzystania z usługi dla SSS passwd i grup. Przykład:
group: files sss
passwd: files sss
Dołączanie do domeny:
adcli
kinit
przed użyciem, robi to dla Ciebie na podstawie dostarczonych kredytów.
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
Narzędzie
Sambanet
Narzędzie jest częścią pakietu Samba.smb.conf
pliku 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 no
podczas korzystania z tej opcji./bin/passwd
, która nie obsługuje nic poza NIS i lokalnym plikiem passwd.GSSAPICleanupCredentials yes
kdestroy
po wylogowaniuGSSAPIStrictAcceptorCheck no
host/<FQDN>@REALM
do 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.keytab
pliku, która zawiera odpowiedniąhost/<FQDN>@REALM
ssh -K <ip>
aby działał bez pytania o hasło (zakładając, że już wykonałeś „kinit”, oczywiście).