en
Wybierz język
  • en
  • de
  • fr
  • es
  • br
  • ru
  • jp
  • kr
Tłumaczenie SI
  • ee
  • ae
  • cn
  • vn
  • id
  • eu
  • il
  • gr
  • no
  • fi
  • dk
  • se
  • tr
  • bg
  • nl
  • it
  • pl
  • hu
  • ro
  • ua
  • cs

Jak skonfigurować uwierzytelnianie Kerberos

Kerberos
SSO

Wprowadzenie

Od stycznia 2019 r. Easy Redmine (wersja 2018.1.3, platforma 05.02) obsługuje uwierzytelnianie użytkowników przez Kerberos. Easy Software zapewnia uwierzytelnianie Kerberos jako usługę premium, za którą może zostać naliczona jednorazowa opłata.

Funkcjonalność jest częścią ogólnego ustawienia uwierzytelniania SSO (wersja 10: Administracja >> Ustawienia >> Uwierzytelnianie; wersja 11: Administracja >> Easy SSO ).

Przy konfiguracji opisanej szczegółowo poniżej należy wprowadzić: kierownik/administrator@EASYPROJECT.COM gdzie EASYPROJECT.COM to nazwa domeny.

To ustawienie jest najłatwiejsze. Większa część jest jednak wykonywana po stronie serwera. Kerberos dla Easy Redmine wymaga serwera WWW Apache. Konfigurację przeprowadzają nasi eksperci ds. serwerów zgodnie z Twoimi potrzebami.

Poniżej znajdziesz wskazówki dotyczące konfiguracji. Służy jedynie jako materiał referencyjny na temat konfiguracji, która miałaby zostać wykonana. Należy pamiętać, że nie jest to gwarantowana instrukcja obsługi. Próbując skonfigurować Kerberos lub inne uwierzytelnianie SSO na serwerze, przejmujesz pełną odpowiedzialność za bezpieczeństwo i ogólne funkcjonowanie aplikacji.

Nie wahaj się skontaktować z menedżerem konta lub wsparcie zaplanować konfigurację z naszymi ekspertami.

Instalacja Kerberos na serwerze Linux

Spis treści

Jak zainstalować i przygotować serwer Kerberos
Jak korzystać z uwierzytelniania Kerberos na serwerze WWW Apache2
Jak korzystać z uwierzytelniania Kerberos na serwerze sieciowym nginx (tylko na komputerach opartych na CentOS!)
Źródła i przydatne linki

Instalacja Kerberosa

Na potrzeby tej dyskusji utworzymy domenę MIT Kerberos z następującymi funkcjami (edytuj je, aby dopasować je do swoich potrzeb):

Królestwo: EASYPROJECT.COM
Podstawowy KDC: kdc01.easyproject.com (192.168.0.1)
Dodatkowy KDC: kdc02.easyproject.com (192.168.0.2)
Główny użytkownik: menedżer
Główny administrator: łatwy/łatwy666

Zdecydowanie zaleca się, aby użytkownicy uwierzytelnieni w sieci mieli swój identyfikator uid w innym zakresie (powiedzmy, zaczynając od 5000) niż użytkownicy lokalni.

Przed zainstalowaniem serwera Kerberos potrzebny jest odpowiednio skonfigurowany serwer DNS dla Twojej domeny. Ponieważ domena Kerberos zgodnie z konwencją jest zgodna z nazwą domeny, w tej sekcji używana jest domena EASYPROJECT.COM skonfigurowana w Primary Master dokumentacji DNS.

Kolejna część jest bardzo ważna!

!!! Ponadto Kerberos jest protokołem wrażliwym na czas. Jeśli więc lokalny czas systemowy między komputerem klienckim a serwerem różni się o więcej niż pięć minut (domyślnie), stacja robocza nie będzie mogła się uwierzytelnić. Aby rozwiązać ten problem, wszystkie hosty powinny mieć zsynchronizowany czas przy użyciu tego samego serwera Network Time Protocol (NTP). Aby uzyskać szczegółowe informacje na temat konfiguracji NTP, zobacz Synchronizacja czasu.!!!

 

Instalacja serwera Kerberos

1) Najpierw musimy zainstalować pakiety krb5-kdc i krb5-admin-server.

sudo apt zainstaluj krb5-kdc krb5-admin-server

Pod koniec instalacji zostaniesz poproszony o podanie nazwy hosta dla serwerów Kerberos i Admin, które mogą, ale nie muszą być tym samym serwerem, dla dziedziny.

Domyślnie dziedzina jest tworzona na podstawie nazwy domeny KDC.

2) Teraz musimy utworzyć nową dziedzinę za pomocą narzędzia kdb5_newrealm:

sudo krb5_newrealm

Zaktualizuj zarządzanie projektami

Uzyskaj funkcje Redmine następnego poziomu, które dostosowują się do Twoich potrzeb i zapewniają doskonały przegląd.

Konfiguracja serwera Kerberos

1) Pytania zadawane podczas instalacji służą do konfiguracji pliku /etc/krb5.conf. Jeśli chcesz dostosować ustawienia Centrum dystrybucji kluczy (KDC), po prostu edytuj plik i uruchom ponownie demona krb5-kdc. Jeśli chcesz ponownie skonfigurować Kerberos od podstaw, na przykład w celu zmiany nazwy domeny, możesz uruchomić następne polecenie

sudo dpkg-ponowna konfiguracja krb5-kdc

2) Gdy KDC działa poprawnie, potrzebny jest administrator — główny administrator. Zaleca się używanie innej nazwy użytkownika niż zwykła nazwa użytkownika. Biegać

sudo kadmin.local Uwierzytelnianie jako główny root/admin@EASYPROJECT.COM z hasłem. kadmin.local: addprinc manager/easy OSTRZEŻENIE: nie określono polityki dla manager/admin@EASYPROJECT.COM; domyślnie brak polityki Wprowadź hasło dla zleceniodawcy "manager/admin@EASYPROJECT.COM": Ponownie wprowadź hasło dla zleceniodawcy "manager/admin@EASYPROJECT.COM": Utworzono zleceniodawcę "manager/admin@EASYPROJECT.COM". kadmin.local: zakończ

W powyższym przykładzie menedżer jest dyrektorem, /admin jest instancją, a @EASYPROJECT.COM oznacza dziedzinę. Dyrektorem „na co dzień”, czyli głównym użytkownikiem, byłby manager@EASYPROJECT.COM i powinien mieć tylko normalne prawa użytkownika.

Zastąp EASYPROJECT.COM i menedżera swoją nazwą użytkownika Realm i administratora.

3) Następnie nowy administrator musi mieć odpowiednie uprawnienia do listy kontroli dostępu (ACL). Uprawnienia są konfigurowane w pliku /etc/krb5kdc/kadm5.acl:

manager/admin@EASYPROJECT.COM *

Ten wpis daje menedżerowi/administratorowi możliwość wykonywania dowolnej operacji na wszystkich podmiotach zabezpieczeń w dziedzinie. Można skonfigurować podmioty główne z bardziej restrykcyjnymi uprawnieniami, co jest wygodne, jeśli potrzebny jest podmiot administracyjny, którego młodszy personel może używać w klientach Kerberos. Szczegółowe informacje można znaleźć na stronie podręcznika kadm5.acl.

4) Teraz zrestartuj krb5-admin-server, aby nowa lista ACL zaczęła obowiązywać:

sudo systemctl uruchom ponownie krb5-admin-server.service

5) Nowy główny użytkownik można przetestować za pomocą narzędzia kinit:

kinit manager/admin manager/admin@EASYPROJECT.COM Hasło:

Po wprowadzeniu hasła użyj narzędzia klist, aby wyświetlić informacje o bilecie przyznającym bilet (TGT):

klist Pamięć podręczna poświadczeń: FILE:/tmp/krb5cc_1000 Zleceniodawca: manager/admin@EASYPROJECT.COM Wydane Wygasa Zleceniodawca Jul 13 17:53:34 Jul 14 03:53:34 krbtgt/EASYPROJECT.COM@EASYPROJECT.COM

Gdzie nazwa pliku pamięci podręcznej krb5cc_1000 składa się z przedrostka krb5cc_ i identyfikatora użytkownika (uid), który w tym przypadku wynosi 1000. Może być konieczne dodanie wpisu do /etc/hosts dla KDC, aby klient mógł znaleźć KDC. Na przykład:

192.168.0.1 kdc01.example.com kdc01

Zastąpienie 192.168.0.1 adresem IP KDC. Zwykle dzieje się tak, gdy masz domenę Kerberos obejmującą różne sieci oddzielone routerami.

Najlepszym sposobem umożliwienia klientom automatycznego określania usługi KDC dla dziedziny jest użycie rekordów DNS SRV. Dodaj następujące informacje do /etc/named/db.example.com:

_kerberos._udp.EASYPROJECT.COM. W SRV 1 0 kdc88.easyproject.com. _kerberos._tcp.EASYPROJECT.COM. W SRV 01 1 kdc0.easyproject.com. _kerberos._udp.EASYPROJECT.COM. W SRV 88 01 10 kdc0.easyproject.com. _kerberos._tcp.EASYPROJECT.COM. W SRV 88 02 10 kdc0.easyproject.com. _kerberos-adm._tcp.EASYPROJECT.COM. W SRV 88 02 1 kdc0.easyproject.com. _kpasswd._udp.EASYPROJECT.COM. W SRV 749 01 1 kdc0.easyproject.com.

Zastąp EASYPROJECT.COM, kdc01 i kdc02 nazwę domeny, podstawowy KDC i dodatkowy KDC.

Zobacz Domain Name Service (DNS), aby uzyskać szczegółowe instrukcje dotyczące konfigurowania DNS.

Twoje nowe królestwo Kerberos jest teraz gotowe do uwierzytelniania klientów.

Pomocnicza konfiguracja KDC (opcjonalna)

Dobrą praktyką jest posiadanie dodatkowego KDC na wypadek, gdyby podstawowy stał się niedostępny. Ponadto, jeśli masz klientów Kerberos, którzy znajdują się w różnych sieciach (prawdopodobnie oddzielonych routerami za pomocą NAT), dobrze jest umieścić dodatkowy KDC w każdej z tych sieci.

1) zainstaluj pakiety, a gdy zostaniesz zapytany o nazwy serwerów Kerberos i Admin, wpisz nazwę podstawowego KDC:

sudo apt zainstaluj krb5-kdc krb5-admin-server

2) Po zainstalowaniu pakietów utwórz nazwę główną hosta Secondary KDC. W wierszu terminala wpisz:

kadmin -q "addprinc -randkey host/kdc02.easyproject.com"

Po wydaniu jakichkolwiek poleceń kadmin zostaniesz poproszony o podanie nazwy użytkownika/admin@EASYPROJECT.COM hasła głównego.

3) Wyodrębnij plik tablicy kluczy:

kadmin -q "ktadd -norandkey -k keytab.kdc02 host/kdc02.easyproject.com"

4) W bieżącym katalogu powinien znajdować się plik keytab.kdc02, przenieś plik do /etc/krb5.keytab:

sudo mv keytab.kdc02 /etc/krb5.keytab

Jeśli ścieżka do pliku keytab.kdc02 jest inna, dostosuj odpowiednio.

5) Ponadto możesz wyświetlić listę głównych podmiotów w pliku Keytab, co może być przydatne podczas rozwiązywania problemów, korzystając z narzędzia klist:

sudo klist -k /etc/krb5.keytab

Opcja -k wskazuje, że plik jest plikiem tablicy kluczy.

6) Następnie w każdym KDC musi znajdować się plik kpropd.acl, który zawiera listę wszystkich KDC dla sfery. Na przykład w podstawowym i dodatkowym KDC utwórz /etc/krb5kdc/kpropd.acl:

host/kdc01.easyproject.com@EASYPROJECT.COM host/kdc02.easyproject.com@EASYPROJECT.COM

7) Utwórz pustą bazę danych w Secondary KDC:

sudo kdb5_util -s utwórz

8) Teraz uruchom demona kpropd, który nasłuchuje połączeń z narzędzia kprop. kprop służy do przesyłania plików zrzutu:

sudo kpropd -S

9) Na podstawowym KDC utwórz plik zrzutu głównej bazy danych:

sudo kdb5_util zrzut /var/lib/krb5kdc/dump

10) Wyodrębnij plik keytab podstawowego KDC i skopiuj go do /etc/krb5.keytab:

kadmin -q "ktadd -k keytab.kdc01 host/kdc01.easyproject.com" sudo mv keytab.kdc01 /etc/krb5.keytab

Przed wyodrębnieniem tablicy kluczy upewnij się, że istnieje host dla kdc01.easyproject.com.

11) Za pomocą narzędzia kprop wypchnij bazę danych do Secondary KDC:

sudo kprop -r EASYPROJECT.COM -f /var/lib/krb5kdc/dump kdc02.easyproject.com

Powinien pojawić się komunikat SUCCEEDED, jeśli propagacja zadziałała. Jeśli pojawi się komunikat o błędzie, sprawdź /var/log/syslog w dodatkowym KDC, aby uzyskać więcej informacji.

12) Możesz również utworzyć zadanie cron, aby okresowo aktualizować bazę danych na dodatkowym KDC. Na przykład poniższe polecenie spowoduje wypychanie bazy danych co godzinę (zauważ, że długa linia została podzielona, ​​aby pasowała do formatu tego dokumentu):

# mh dom mon dow command 0 * * * * /usr/sbin/kdb5_util dump /var/lib/krb5kdc/dump && /usr/sbin/kprop -r EASYPROJECT.COM -f /var/lib/krb5kdc/dump kdc02. easyprojekt.com

13) Wracając do Secondary KDC, utwórz plik skrytki do przechowywania klucza głównego Kerberos:

sudo kdb5_util schowek

14) Na koniec uruchom demona krb5-kdc na dodatkowym KDC:

sudo systemctl uruchom krb5-kdc.service

Wtórne KDC powinno być teraz w stanie wystawiać bilety do Królestwa. Możesz to przetestować, zatrzymując demona krb5-kdc na podstawowym KDC, a następnie używając kinit do żądania biletu. Jeśli wszystko pójdzie dobrze, powinieneś otrzymać bilet z Secondary KDC. W przeciwnym razie sprawdź /var/log/syslog i /var/log/auth.log w dodatkowym KDC.

Active Directory jako serwer Kerberos

Wszyscy użytkownicy, którzy powinni móc się zalogować, muszą być w AD, aby przejść przez serwer WWW (np. Apache) do ER. Aby SSO działało, użytkownik musi zalogować się z komputera domeny, do którego jest zalogowany jako użytkownik AD. Nawet bez pracy SSO użytkownik musi podać poświadczenia logowania do AD do serwera WWW (w tym przypadku używane jest tylko podstawowe uwierzytelnianie HTTP, zdecydowanie zaleca się https).

1) Utwórz użytkownika AD dla serwera WWW z włączoną opcją hasło nigdy nie wygasa. Np. użytkownik easysso z hasłem SECRET i domeną używaną do SSO (np. EASYPROJECT.COM).

2) Wygeneruj plik tabeli kluczy Kerberos na serwerze AD Windows:
ktpass -princ HTTP/www.easyproject.com@EASYPROJECT.COM -mapuser easysso@EASYPROJECT.COM -pass SECRET -crypto ALL -ptype KRB5_NT_PRINCIPAL -out C:\Temp\http.keytab

3) Ustaw SPN (nazwę główną usługi) na konto AD utworzone powyżej na serwerze Windows, np. przez:
setspn -s HTTP/www.easyproject.com easysso

Klient Kerberos Linux

Musisz teraz skonfigurować system Linux jako klienta Kerberos. Umożliwi to dostęp do dowolnych usług kerberyzowanych po pomyślnym zalogowaniu się użytkownika do systemu.

1) Aby uwierzytelnić się w dziedzinie Kerberos, potrzebne są pakiety krb5-user i libpam-krb5, a także kilka innych, które nie są niezbędne, ale ułatwiają życie. Aby zainstalować pakiety w systemie opartym na Debianie, wpisz w wierszu polecenia:

sudo apt zainstaluj krb5-user libpam-krb5 libpam-ccreds auth-client-config

Aby zainstalować pakiety w systemie opartym na Redhat, użyj:

mniam zainstaluj stację roboczą krb5 pam_krb5

Pakiet auth-client-config umożliwia prostą konfigurację PAM do uwierzytelniania z wielu źródeł, a libpam-ccreds buforuje poświadczenia uwierzytelniania, umożliwiając zalogowanie się w przypadku, gdy Centrum dystrybucji kluczy (KDC) jest niedostępne. Ten pakiet jest również przydatny w przypadku laptopów, które mogą uwierzytelniać się za pomocą protokołu Kerberos w sieci firmowej, ale muszą być dostępne również poza siecią.

2) Aby skonfigurować klienta w terminalu (system oparty na Debianie) wpisz:

sudo dpkg-rekonfiguruj krb5-config

W systemie opartym na Redhat wystarczy edytować plik /etc/krb5.conf (patrz niżej).

Zostaniesz poproszony o podanie nazwy królestwa Kerberos. Ponadto, jeśli nie masz skonfigurowanego systemu DNS z rekordami Kerberos SRV, w menu zostanie wyświetlony monit o podanie nazwy hosta Centrum dystrybucji kluczy (KDC) i serwera administracji dziedziną.

Program dpkg-reconfigure dodaje wpisy do pliku /etc/krb5.conf dla Twojej dziedziny. Powinieneś mieć wpisy podobne do następujących:

[libdefaults] default_realm = EASYPROJECT.COM ... [dziedziny] PRZYKŁAD.COM = { kdc = 192.168.0.1 admin_server = 192.168.0.1 }

Jeśli ustawisz uid każdego z uwierzytelnionych użytkowników sieci na 5000, zgodnie z sugestią w Instalacji, możesz wtedy powiedzieć pamowi, aby próbował uwierzytelniać się tylko przy użyciu użytkowników Kerberos z uid > 5000:

# Kerberos należy stosować tylko do użytkowników ldap/kerberos, a nie lokalnych. dla i we wspólnym uwierzytelnianiu wspólnej sesji wspólnego konta wspólne hasło; wykonaj sudo sed -i -r \ -e 's/pam_krb5.so minimum_uid=1000/pam_krb5.so minimum_uid=5000/' \ /etc/pam.d/$i gotowe

Pozwoli to uniknąć pytania o (nieistniejące) hasło Kerberos lokalnie uwierzytelnionego użytkownika podczas zmiany hasła za pomocą passwd.

 

3) Możesz przetestować konfigurację, żądając biletu za pomocą narzędzia kinit. Na przykład:

kinit manager@EASYPROJECT.COM Hasło dla manager@EASYPROJECT.COM:

Po przyznaniu biletu szczegóły można wyświetlić za pomocą klist:

klist Pamięć podręczna biletów: FILE:/tmp/krb5cc_1000 Domyślny podmiot: manager@EASYPORJECT.COM Prawidłowy początek Wygasa Nazwa usługi 07 24:08:05 18 56:07:24 krbtgt/EASYPROJECT.COM@EASYPROJECT .COM odnawia się do 08 15:18:56
Pamięć podręczna biletów Kerberos 4: /tmp/tkt1000 klist: Nie masz żadnych biletów w pamięci podręcznej

4) Następnie użyj auth-client-config, aby skonfigurować moduł libpam-krb5, aby zażądał biletu podczas logowania:

sudo auth-client-config -a -p przykład_kerberos

Powinieneś teraz otrzymać bilet po pomyślnym uwierzytelnieniu logowania.

 

Konfiguracja Apache 2

1) Zainstaluj moduł uwierzytelniania mod_auth_kerb

Sam Apache nie zapewnia obsługi SPNEGO, ale można go dodać za pomocą modułu mod_auth_kerb. Jest to zawarte w większości głównych dystrybucji GNU/Linuksa, ale ponieważ jest to moduł innej firmy, zwykle jest pakowany oddzielnie od Apache. W systemach opartych na Debianie jest to dostarczane przez pakiet libapache2-mod-auth-kerb:

apt-get install libapache2-mod-auth-kerb

oraz w systemach opartych na Red Hat przez pakiet mod_auth_kerb:

mniam zainstaluj mod_auth_kerb

2) Moduły Apache muszą zostać załadowane przed użyciem, ale oba powyższe pakiety zapewniają, że dzieje się to automatycznie. Jeśli z jakiegoś powodu musisz to zrobić ręcznie, odpowiednią dyrektywą konfiguracyjną jest:

LoadModule moduł_auth_kerb_module /usr/lib/apache2/modules/mod_auth_kerb.so

(gdzie ścieżka do modułu powinna zostać zastąpiona inną odpowiednią dla twojego systemu).

3) Utwórz jednostkę usługi dla serwera WWW

SPNEGO wymaga utworzenia jednostki usługi Kerberos dla serwera WWW. Nazwa usługi jest zdefiniowana jako HTTP, więc dla serwera www.easyproject.com wymagana nazwa główna usługi to HTTP/www.easyproject.com@easyproject.COM.

Jeśli używasz MIT Kerberos, jednostkę usługi można utworzyć za pomocą polecenia kadmin:

kadmin -p manager/admin -q "addprinc -randkey HTTP/www.easyproject.com"

4) Utwórz kartę kluczy dla jednostki usługi

Keytab to plik do przechowywania kluczy szyfrowania odpowiadających co najmniej jednemu podmiotowi głównemu Kerberos. mod_auth_kerb potrzebuje go, aby korzystać z jednostki usługi utworzonej powyżej. Jeśli używasz MIT Kerberos, kartę kluczy (podobnie jak jednostkę usługi) można utworzyć za pomocą polecenia kadmin. Jego własność musi być taka, aby była czytelna przez proces Apache.

W systemach opartych na Debianie odpowiednią lokalizacją dla tablicy kluczy będzie /etc/apache2/http.keytab, a odpowiednim właścicielem jest www-data:

kadmin -p manager/admin -q "ktadd -k /etc/apache2/http.keytab HTTP/www.easyproject.com" chown www-data /etc/apache2/http.keytab

W systemach opartych na Red Hat odpowiednią lokalizacją będzie /etc/httpd/http.keytab, a odpowiednim właścicielem jest Apache:

kadmin -p manager/admin -q "ktadd -k /etc/httpd/http.keytab HTTP/www.easyproject.com" chown apache /etc/httpd/http.keytab

Opcja -k określa ścieżkę do tablicy kluczy, która zostanie utworzona, jeśli jeszcze nie istnieje.

Jeśli używasz AD zamiast serwera Kerberos Linux, użyj pliku http.keytab wygenerowanego w sposób opisany powyżej w Sekcja reklam.

5) Jeśli chcesz sprawdzić, czy klucz został poprawnie dodany do tablicy kluczy, możesz spróbować użyć go do uwierzytelnienia jako jednostki usługi, a następnie wyświetlić otrzymany bilet nadania biletu za pomocą klist:

kinit -k -t /etc/apache2/http.keytab HTTP/www.easyproject.com klist

6) Określ metodę uwierzytelniania, która ma być używana

Apache musi zostać poinformowany, które części witryn mają korzystać z uwierzytelniania zapewnianego przez mod_auth_kerb. Odbywa się to za pomocą dyrektywy AuthType z wartością Kerberos. Następnie potrzebne są dodatkowe dyrektywy, aby skonfigurować zachowanie mod_auth_kerb.

Jeśli intencją jest zastosowanie tej dyrektywy do całej danej witryny internetowej, to można je umieścić w kontener ze ścieżką odpowiadającą korzeniowi witryny:

AuthType Kerberos AuthName „Acme Corporation” KrbMethodNegotiate on KrbMethodK5Passwd off Krb5Keytab /etc/apache2/http.keytab

W przypadku serwera AD Kerberos możesz również potrzebować:

... KrbAuthRealms EASYPROJECT.COM NazwaUsługi Krb HTTP/www.easyproject.com

Dyrektywa AuthName określa dziedzinę autoryzacji HTTP. Jego celem jest wskazanie użytkownikowi, które z różnych haseł, które może znać, jest potrzebne do uzyskania dostępu do określonej witryny internetowej. Przy prawdziwym uwierzytelnianiu Kerberos nie powinno być monitu o hasło, a mod_auth_kerb wydaje się działać doskonale bez określenia AuthName; jednak dokumentacja Apache stwierdza, że ​​jest to wymagane, więc wydaje się rozsądnym dostarczenie takiego. Odpowiednią wartością może być nazwa domeny, nazwa domeny Kerberos lub nazwa organizacji, do której należy witryna.

Oprócz protokołu SPNEGO, mod_auth_kerb może poprosić użytkownika o hasło przy użyciu uwierzytelniania podstawowego, a następnie zweryfikować to hasło, próbując uwierzytelnić się w KDC. Może to być przydatne, jeśli istnieje potrzeba, aby witryna internetowa była dostępna dla jej autoryzowanych użytkowników z komputerów, które nie są częścią dziedziny Kerberos, jednak jest to znacznie mniej bezpieczne niż prawdziwe uwierzytelnianie Kerberos. Zarówno uwierzytelnianie SPNEGO, jak i uwierzytelnianie hasłem są domyślnie włączone. W tym przykładzie nie ma wymogu, aby witryna była dostępna dla przeglądarek internetowych bez obsługi SPNEGO, dlatego uwierzytelnianie hasła zostało wyłączone za pomocą dyrektywy KrbMethodK5Passwd. Aby zapewnić kompletność, SPNEGO zostało jawnie włączone przy użyciu dyrektywy KrbMethodNegotiate.

Dyrektywa Krb5Keytab określa ścieżkę dostępu do tablicy kluczy, do której została dodana jednostka usługi HTTP. Powinien odpowiadać temu, co zostało przekazane do polecenia ktadd kadmin wcześniej w tej procedurze.

Chociaż kontener został użyty w tym przykładzie, byłoby równie dopuszczalne, aby powyższe dyrektywy były umieszczone w a , lub kontenera lub w pliku .htaccess.

7) Podaj listę autoryzowanych użytkowników

Ustawienie metody uwierzytelniania samo w sobie nie ogranicza dostępu do serwera. Dzieje się tak, ponieważ Apache domyślnie zezwala na dostęp anonimowym użytkownikom i jeśli to zachowanie nie zostanie zastąpione, metoda uwierzytelniania (niezależnie od tego, jaka może być) nie zostanie wywołana.

W tym przykładzie jest tylko czterech użytkowników, którzy potrzebują dostępu, a najprostszym sposobem na zorganizowanie tego jest dyrektywa Require:

# ... Wymagaj użytkownika dougal@EASYPROJECT.COM brian@EASYPROJECT.COM ermintrude@EASYPROJECT.COM dylan@EASYPROJECT.COM

Jeśli jednak chcesz zezwolić na dostęp przez Apache wszystkim użytkownikom LDAP/AD, możesz określić:

# ... Wymagaj prawidłowego użytkownika

8) Odśwież konfigurację Apache

Zobacz Powodowanie ponownego załadowania konfiguracji usługi systemowej. W najnowszych systemach opartych na Debianie wymagane polecenie to:

usługa apache2 force-reload

 

Konfiguracja Nginx

Ta sekcja dotyczy tylko systemu operacyjnego opartego na CentOS/RedHat.

1) Upewnij się, że Nginx jest zainstalowany w twoim systemie.
Wszystkie kolejne polecenia powinny być uruchamiane z poziomu użytkownika root lub przy użyciu sudo.

2) Uruchom następne polecenie, aby sprawdzić, jakie moduły są dostępne w Twojej instalacji nginx.

Nginx-V

(poszukaj „with-stream=dynamic” w danych wyjściowych polecenia, aby upewnić się, że moduł Steam jest dostępny)

3) Przejdź do katalogu głównego i wyszukaj plik ngx_stream_module.so

 cd / find / -name ngx_stream_module.so

Zanotuj dokładną ścieżkę pliku modułu pary
Na przykład można go umieścić w „ /usr/lib64/nginx/modules/ngx_stream_module.so ” będziesz potrzebować tej ścieżki, aby ustawić ją w nginx.conf

Jeśli nie masz ngx_stream_module, musisz odinstalować domyślny nginx i zainstalować go ponownie ze źródeł lub określonego pakietu rpm. Na tej stronie możesz znaleźć dokładne wersje pakietów nginx, które zawierają moduł ngx_stream_module - https://rpmfind.net/linux/rpm2html/search.php?query=ngx_stream_module.so()(64bit)

4) Teraz wszystko gotowe do zapisania konfiguracji Nginx.

vim /etc/nginx/nginx.conf
############################################ użytkownik nginx; procesy_pracownika 1; load_module /usr/lib64/nginx/modules/ngx_stream_module.so; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; wydarzenia { worker_connections 1024; } stream { #… error_log /var/log/nginx/stream_error.log debug; serwer { słuchaj 88; proxy_pass kdc01.easyproject.com:88; } serwer { nasłuchuj 749; proxy_pass kdc01.easyproject.com:749; } } ############################################

5) Uruchom ponownie usługę Nginx.

systemctl włącz nginx systemctl start nginx

6) Sprawdź, czy przypisane porty są teraz otwarte.

netstat -tupnl |grep nginx

Teraz nasz Nginx jest gotowy do przekierowania żądań do serwera krawężnika.

Konfiguracja klienta internetowego, jeśli AD jest w użyciu

Nazwa domeny musi być dozwolona w przeglądarkach klientów, aby klienci mogli korzystać z logowania jednokrotnego. Można to wykorzystać dostosowując politykę domeny lub bezpośrednio w przeglądarkach w następujący sposób:

  • IE: Przejdź do Narzędzia -> Opcje internetowe -> Bezpieczeństwo -> Lokalny intranet -> Witryny -> Zaawansowane i dodaj domenę, np. easyproject.com
  • Edge: odziedziczony z IE
  • Chrome: odziedziczony z IE
  • Firefox: Przejdź do adresu URL about:config i zaktualizuj następujące zmienne: network.negotiate-auth.trusted-uris, network.automatic-ntlm-auth.trusted-uris – ponownie dodaj domenę, np. easyproject.com

Debugowanie

Jeśli chcesz sprawdzić, czy Twoja aplikacja EasyRedmine widzi zmienne SSO wysyłane przez serwer WWW (np. Apache), przejdź do [url]/sso_variables, np. https://www.easyproject.com/sso_variables.

Pozycje Current, Current login i Current use in DB powinny być wypełnione i odpowiadać użytkownikowi próbującemu się zalogować.

 

Źródła i przydatne linki

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/managing_smart_cards/configuring_a_kerberos_5_server

https://help.ubuntu.com/lts/serverguide/kerberos.html.en

http://www.microhowto.info/howto/configure_apache_to_use_kerberos_authentication.html

https://active-directory-wp.com/docs/Networking/Single_Sign_On/Kerberos_SSO_with_Apache_on_Linux.html

https://medium.com/@Santii/how-to-setup-kerberos-behind-a-reverse-proxy-nginx-d692f609191c

Wypróbuj Easy Redmine w 30-dniowym bezpłatnym okresie próbnym

Pełne funkcje, ochrona SSL, codzienne kopie zapasowe w Twojej geolokalizacji