Linux podłączony do Active Directory?

Od niedawna zacząłem pracować z systemami opartymi o Microsoft Windows. I to nie po prostu pecetami, tylko systemami z siecią serwerów, tak jak to często bywa w firmach. Wtedy głównym źródłem danych logowania użytkowników jest domena Active Directory. Poniżej opiszę rewelacyjne narzędzie, do podłączenia maszyny Linuxowej do AD.

Przy okazji zerknij na mój post dla APN Promise na podobny temat.

Dlaczego uważam, że jest rewelacyjne?

Zanim je znalazłem, udało podłączyć mi się Debiana do AD “ręcznie”. Wiązało się to z zainstalowaniem 5 paczek (sssd, samba, realmd, ntp i krb5-user), a następnie odpowiednim wyedytowaniem 4 plików konfiguracyjnych i kilkoma dodatkowymi komendami. Oczywiście nie działało za pierwszym razem i zanim doszedłem do właściewej konfiguracji minął cały dzień.

Narzędzie, które właśnie odkryłem to PowerBroker Identity Services Open.

Instalacja

Najpierw pobieramy najnowszą wersję (zakładka Releases na GitHubie) i uruchamiamy na naszej maszynie z linuxem

curl -L -O https://github.com/BeyondTrust/pbis-open/releases/download/8.5.7/pbis-open-8.5.7.385.linux.x86_64.deb.sh
chmod +x pbis-open-8.5.7.385.linux.x86_64.deb.sh
sudo ./pbis-open-8.5.7.385.linux.x86_64.deb.sh

Spowoduje to zainstalowanie aplikacji do /opt/pbis. Po zainstalowaniu, możemy od razu dołączyć do naszej domeny

sudo /opt/pbis/bin/domainjoin-cli join domain.com User

Jest również wersja GUI (domainjoin-gui). Zostaniemy poproszeni o podanie hasła dla użytkownika [email protected] i następnie zostaniemy podłączeni do domeny. Zostaniemy poinformowani, że należy zrestartować komputer, i tak też uczynimy.

sudo reboot
Zarządzanie

Za pomocą polecenia pbis możemy zarządzać domeną

$ pbis
Usage: pbis mode [--help] ...

Available modes:
    account-rights        acl           ad-cache
    ad-get-machine        add-group
    add-user              authenticate-user
    del-group             del-user
    enum-groups           enum-members
    enum-objects          enum-users
    find-by-sid           find-group-by-id
    find-group-by-name    find-objects
    find-user-by-id       find-user-by-name
    get-metrics           join            leave
    list-groups-for-user  mod-group
    mod-user              query-member-of
    set-default-domain    set-machine-name
    set-machine-sid       status
    trace-info            ypcat            ypmatch

Przyda nam się również polecenie update-dns, aby zarejestrować naszą maszynie na serwerze DNS domeny

sudo /opt/pbis/bin/update-dns --show
sudo

Będziemy jeszcze chcieli nadać uprawnienia sudo dla administratorów domenowych. W tym celu edytujemy plik /etc/sudoers, za pomocą narzędzia visudo, dopisując na koniec

%DOMAIN\\domain^admins ALL=(ALL) ALL

Gdzie DOMAIN to nazwa twojej domeny.

Użytkownicy domenowi

Kolejny feature to możliwość logowania się danymi domenowymi do maszyny. Działa zarówno przez su jak i przez ssh, a użytkownik domenowy dostaje swój folder domowy w /home/local/DomainName/UserName/.

Zmiana domyślnej powłoki dla użytkowników domenowych jest możliwa, ale można ustawić tylko jedną dla wszystkich.

sudo /opt/pbis/bin/config LoginShellTemplate /bin/bash

Żeby to obejść, wystarczy dodać linijkę do pliku .profile danego użytkownika

exec /path/to/your/favourite/shell

Można również korzystać z folderu domowego użytkownika znajdującego się na pewnym zasobie SMB. Upewnij się, że masz zainstalowaną paczkę cifs-utils w systemie. Jeśli w preferencjach użytkownika AD, ustawiony będzie folder Home (zakładka Profile) na odpowiednim zasobie to będzie on automatycznie montowany podczas logowania się użytkownika.

Troubleshooting

Jeśli podczas zmiany konfiguracji dostaniecie błąd

Problem executing '/opt/pbis/bin/ad-cache --delete-all >/dev/null 2>/dev/null'
Error: Error returned by external program

To najprawdopodobniej w lesie domenowym waszej firmy jest jakaś domena, która jest offline. Mimo, że wasza domena jest online, to trzeba wyłączyć sprawdzanie tych domen, które są wyłączone. Żeby sprawdzić która domena, zajrzyj do /var/log/syslog.

sudo /opt/pbis/bin/config DomainManagerExcludeTrustsList my.offline.domain.com

Dlaczego sprawdzane jest, czy domena jest online? Ponieważ zmianiając niektóre ustawienia czyścimy cache, który między innymi zawiera dane logowania użytkowników domenowych. Jeśli byśmy go wyczyścili będąc offline, to dopóki system nie podłączy się ponownie do domeny, to użytkownicy domenowi nie będą w stanie się zalogować.