Samba AD DC - Instalacja
Samba Active Directory może być nieco lżejszą implementacją od usługi Active Directory oferowanej przez system Windows, jednak jego instalacja nie jest już taka prosta jak ma to miejsce w przypadku rozwiązań firmy Microsoft. Przedstawiona tutaj operacja będzie składać się z dwóch części, pierwsza z nich to właściwa instalacja usługi Samba AD DC, a drugą to instalacja usługi NTP, która jest niezbędną do prawidłowego funkcjonowania. Właśnie jest róźnica pomiędzy dwoma wyżej wymienionymi implementacjami, przy SAMBA AD jeśli zegar na komputerze klienta spóźnia się choćby o 5 minut to zalogowanie się na komputerze za pomocą użytkownika owej usługi może być już niemożliwe. Zatem przed przyłączeniem komputera do domeny, warto na początek ustawić serwer czasu na nasz kontroler domeny, a teraz zabierzemy się do właściwej instalacji. Na swój serwer wybrałem dystrybucje GNU/Linux Debian.
- Ustawienie statycznego adresu IP
Z racji tego że nasz system ma świadczyć jakieś usługi w sieci, więc powinien mieć stały adres IP. Dzięki temu można go łatwo odnaleźć w sieci oraz przypisać mu jakąś przyjazną nazwę. Otwieramy plik /etc/network/interfaces.
allow-hotplug enp2s0 iface enp2s0 inet static address 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 192.168.1.1
- Wyłączenie usługi systemd-resolved
Usługa systemd-resolved będzie kolidować z wbudowanymi usługami DNS Samby, więc musimy ją wyłączyć i statycznie w pliku /etc/resolv.conf ustawić adres IP serwera DNS, do którego będą przekazywane zapytania niezwiązane z domeną.
$ sudo systemctl disable systemd-resolved.service $ sudo rm /etc/resolv.conf $ sudo su # echo "nameserver 192.168.8.1" > /etc/resolv.conf # echo "127.0.1.1 adc1" >> /etc/hosts # reboot
Za pomocą polecenia
systemctl
, wyłączamy usługę systemd-resolved, nastepnie usuwamy przez nią stworzony plik /etc/resolv.conf, aby móc przekierować wyjście do plików w katalogu /etc musimy przełączyć się na użytkownika root, użycie poleceniasudo
nie zadziała w tym przypadku. Do naszego nowego pliku /etc/resolv.conf dodajemy stały wpis adresu serwera DNS, w moim przypadku jest to adres bramy sieci, która jest nad moją siecią. Przedostatnia linia przedstawia dopisanie adresu przypisanego do naszej nazwy hosta do pliku /etc/hosts. Nie które aplikacje mogą ustalać tak nazwę hosta odpytując lokalny dns adresem127.0.1.1
, tak robi np. poleceniesudo
, które jeśli nie otrzyma odpowiedzi będzie wyświetlać komunikat po każdorazowym wykonaniu. Teraz należy uruchomić nasz serwer ponownie, aby uaktywnić wszystkie zmiany. - Aktualizacja systemu
Po wykonaniu powyższych konfiguracji, jak przed każdą instalacją jakiego kolwiek pakietu warto zaktualizować nasz system.
$ sudo apt update $ sudo apt upgrade $ sudo apt dist-upgrade
- Instalacja niezbędnego oprogramowania
Aby rozpocząć konfigurację Samba AD DC, musimy zainstalować poniższe oprogramowanie.
$ sudo apt install samba krb5-user krb5-config winbind libpam-winbind libnss-winbind
Podczas instalacji pakietu Kerberos (systemu uwierzytelniania wykorzystywanego przez Sambę) zostaniemy poproszeni o podanie sfery Kerberos gdzie podajemy nazwę naszej domeny wielki literami, np. TEST.LOCAL, adresu serwera Kerberos w sferze - podajemy nazwę naszej domeny małymi literami oraz adres serwera administracyjnego - identycznie jak przy serwerze Kerberos w sferze. Jak możemy się domyślić, to za nazwą naszej domeny będzie kryć się nasz serwer, który obecnie konfigurujemy.
- Zatrzymanie usług
W procesach poinstalacyjnych pakietu
samba
plik usługi AD DC został wyłączony, uruchomione zostały usługi odpowiedzialne za NetBIOS oraz SMB, które w obecnej konfiguracji nie będą nam potrzebne. Zatrzymujemy również daemonawinbind
, ponieważ będzie on uruchamiany przez proces kontrolera domeny w razie potrzeby.$ sudo systemctl stop samba-ad-dc.service smbd.service nmbd.service winbind.service $ sudo systemctl disable smbd.service nmbd.service winbind.service
- Zabezpieczenie pliku konfiguracyjnego Samby
Warto skopiować plik, który został dostarczony wraz z pakietem na tzw. w razie czego. Jeśli coś nie wyjdzie podczas promowania, to będziemy mogli ten plik przywrócić.
$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.init
- Promowanie serwera do roli kontrolera Samba AD DC
Przyszedł czas na tę chwilę, aby wreszczenie promować nasz serwer do roli kontrolera domeny, jednak nie ma co się za bardzo ekscytować. Ponieważ jedyna co mamy zrobić to wpisać tylko dwie informacje, o które zapyta skrypt tj. sferę, która jest identyczna jak w przypadku Kerberos - nazwa domeny z wielkich liter oraz hasło administratora AD, które musi składać się z min 8 znaków, jedna duża litera, jedna cyfra i nie może zawierać fragmentów loginu (administrator@TEST.LOCAL).
$ sudo samba-tool domain provision --use-rfc2307 --interactive
- Uruchamianie konfiguracji Kerberos
Przy promowaniu serwera skrypt wykonał za nas konfigurację Kerberos, naszym zadaniem jest tylko ją uruchomić linkując plik wygenerowany przez program do miejsca gdzie będzie mógł być odczytany przez daemona Kerberos.
$ sudo mv /etc/krb5.conf /etc/krb5.conf.init $ sudo ln -s /var/lib/samba/private/krb5.conf /etc
- Uruchomienie daemona Samba
Aby uruchomić uruchomić nasz kontroler domeny, musimy odblokować plik usługi.
$ sudo systemctl unmask samba-ad-dc.service $ sudo systemctl start samba-ad-dc.service $ sudo systemctl status samba-ad-dc.service $ sudo systemctl enable samba-ad-dc.service
Po wykonaniu tych poleceń usługa powinna wystartować.
- Sprawdzenie portów używanych przez Sambę oraz poziomu funkcjonalności domeny.
Aby upewnić się że usług wystartowała, wydajmy poniższe polecenia.
$ sudo ss -tulpn | egrep 'smbd|samba' $ sudo samba-tool domain level show
Pierwsze polecenie powinno zwrócić listę portów otwartych przez Sambę, natomiast drugie określić funkcjonalność domeny przyrównując ją do funkcjonalności usług domenowych systemu Windows, zobaczymy nawet wersje systemu Windows Server, z którym funkcjonalność usług katalogowych jest identyczna.
- Przekierowanie lokalnego DNS na kontroler.
Teraz kiedy mamy pewność że nasz kontroler domeny teoretycznie działa możemy przekierować lokalne zapytania do niego aby upewnić się że wszystkie informacje zostaną przekazane klientom kiedy ci będą chcieli się podłączyć. Dopisujemy adres pętli zwrotnej na początku listy serwerów DNS w konfiguracji interfejsu sieciegowego.
allow-hotplug enp2s0 iface enp2s0 inet static address 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 127.0.0.1 192.168.1.1
Po zapisaniu zmian przejdziemy do przygotowania nowego pliku /etc/resolv.conf. Oczywiście możemy zmienić plik, który jest już obecny w systemie. Ja stworzyłem inny plik, następnie nadpisałem nim plik źródłowy.
$ sudo su # echo "nameserver 127.0.0.1" > /etc/resolv.conf.bak # cat /etc/resolv.conf >> /etc/resolv.conf.bak # echo "search test.local" >> /etc/resolv.conf.bak # mv /etc/resolv.conf.bak /etc/resolv.conf
Na początku pliku znajduje się deklaracja serwera DNS z adresem pętli, następnie dopisałem obecną zawartość pliku /etc/resolv.conf, dodałem linię z sufksem domeny do przeszukiwania kiedy podamy nazwę krótką hosta, na koniec nadpisałem plik.
- Restart serwera.
Warto ponownie zrestartować serwer, aby wszystkie zmiany zostały uwzględnione.
# reboot
- Sprawdzenie poprawności konfiguracji kontrolera domeny
Poniżej przedstawiłem kilka kontrolnych poleceń, które powinny wykonać się bezbłędnie gdy kontroler AD jest prawidłowo skonfigurowany.
$ ping -c3 <nazwa_domeny> $ ping -c3 <nazwa_hosta>.<nazwa_domeny> $ ping -c3 <nazwa_hosta> $ host -t A <nazwa_domeny> $ host -t A <nazwa_hosta>.<nazwa_domeny> $ host -t SRV _kerberos._udp.<nazwa_domeny> $ host -t SRV _ldap._tcp.<nazwa_domeny> $ kinit administrator@<NAZWA_DOMENY_Z_WIELKICH> $ klist
Tymi poleceniami zakończymy część pierwszą, druga znajduje się pod tym linkiem: Samba AD DC - NTP
~xf0r3m