FreeBSD & ActiveDirectory

Oprócz programowania, dostarczamy także bezpieczne rozwiązania IT. Ostatnio stanęliśmy nad wyzwaniem, aby do systemu FreeBSD logować się użytkownikami domenowymi (Active Directory).

Zadanie opisane jest na stronie Samby.

Poniżej krótkie przedstawienie jak to zrobić. W naszym wypadku używaliśmy FreeBSD 10.3.

Instalacja Samby

Załóżmy, że nie mamy czasu na kompilację.

pkg install samba44

Nas interesuje tak na prawdę winbind, ale jest to część Samby i we FreeBSD nie jest możliwe aby ściągnąć mniejsze paczki (a w CentOSie się da).

Konfiguracja Samby

Pamiętajmy, że po instalacji nasz plik konfiguracyjny we FreeBSD to: /usr/local/etc/smb4.conf. Oczywiście, zawsze możemy sprawdzić to poprzez:
smbd -b | grep CONFIGFILE

A dodatkowo można zmienić plik poprzez edycję zmiennej samba_server_config w pliku /usr/local/etc/rc.d/samba_server

tworzymy plik konfiguracyjny w wersji minimalistycznej i edytujemy go w zależności od naszych potrzeb – w przykładzie używamy domeny san.escobar.corp lub w skrócie SAN:


[global]
security = ADS
workgroup = SAN
realm = SAN.ESCOBAR.CORP

log file = /var/log/samba4/%m.log
log level = 1

use sendfile = true

idmap config * : backend = tdb
idmap config * : range = 3000-7999

idmap config SAN : backend = rid
idmap config SAN : range = 90000001-100000000
winbind separator = +
winbind enum users = yes
winbind enum groups = yes
# winbind use default domain = yes
winbind refresh tickets = yes
winbind nss info = template
restrict anonymous = 2
log file = /var/log/samba4/log.%m
max log size = 50

template homedir = /home/%D/%U
#template shell = /usr/local/bin/bash

Nie polecamy skopiowania powyższego kodu bez jego zrozumienia.

idmap config

bez trzeciego paramteru to konfiguracja – mapowanie użytkowników i grup lokalnych na liczby. Z parametrem to domenowe. Oddzieliliśmy je bardzo, abu nie trzba było się zastanawiać co to za numerek (o tych numerkach później).

Jeśli podmienicie nazwy SAN i san.escobar.corp na Waszą domenę to powinno być wszystko.

Należy zapamiętać z tego punktu, że omówimy poniższe parametry na samym końcu jak wszystko będzie działało:
winbind separator
winbind use default domain
template shell

Konfiguracja autostaru serwisów FreeBSD

Bardzo przyjemnym rozwiązaniem w systemach FreeBSD jest plik /etc/rc.conf, który to definiuje co ma być aktywne i jak. Możemy go edytować lub też używać polecenia sysrc

sysrc samba_server_enable=yes

winbindd aktywujemy poprzez edycję pliku /usr/local/etc/rc.d/samba_server

Zamieniamy linię:
#winbindd_enable="YES"
Na:
winbindd_enable="YES"

Te zmiany pozwalają na start serwisów winbindd i samba_server.

Ustawienia nssswitch.conf

nssswitch.conf to plik w którym definiujemy źródło skąd pobierane są dane dla użytkowników, grup itp.

ustawiamy, że, grupy i użytkownicy będą brani także z domeny, czyli z winbind, zmiana dla group i passwd powinna wyglądać następująco:

group: files winbind
passwd: files winbind

Domena i testy

Tak więc starujemy nasze serwisy:

service samba_server start

Tak jak zaznaczone było wcześniej winbindd jest częścią samby, więc uruchomi się razem z sambą.

Starting nmbd.
Starting smbd.
Starting winbindd.

Gdy udało nam się wystartować Sambę to oznacza, że już jesteśmy blisko.

Dodajmy nasz host do domeny, w tym przykładzie dodajemy do domeny hosta przy pomocy użytkownika Administrator, możemy użyć jakiegokolwiek będącego członkiem Domain Users.

net ads join -U Administrator

Pojawi się ekran z pytaniem o hasło użytkownika

Enter Administrator's password:

Po wpisaniu poprawnegi hasła powininno pojawić się potwierdzenie przyłączenia do domeny:

Using short domain name -- SAN
Joined 'TEST_HOST' to dns domain 'san.escobar.corp'

Spróbujmy pobrać z domeny użytkowników: wbinfo -u

Jeśli nam się uda otrzymamy listę np:

SAN\administrator
SAN\guest

Teraz najważniejszy test, czy jesteśmy w stanie pobrać użytkowników i grupy z domeny z pod poziomu systemu PAM.

do tego służą nam komendy: getent passwd, wyświetlająca użytkowników, jak i getent group, te zapytania powiązane są z plikiem nssswitch.conf

Gdy pojawi się lista użytkowników i np:
SAN+guest:*:[…]
to znaczy, że jesteśmy pełną częścią domeny.

Ważna informacja

Każdy przyzwyczaił się w Windows, że użytkownicy domenowi są przekazywani wraz z backslashem, a w Unixach backslash tak jak w C to znak specjalny, dlatego też na początku w konfiguracji Samby pojawił się wpis:

winbind separator = +

używając tego wpisu naszym użytkownikem nie będzie Windowsowy SAN\user tylko SAN+user.
To bardzo pomaga, bo w Unixach należy użyć dodatkowego backslasha, czyli nie SAN\user a SAN\\user, np. podczas logowania.

My preferujmey plusa zamiast backslasha. Ale można to skonfigurować dowolnie.

A co to daje?

Za chwilkę napiszemy na Blogu jak uruchomić OpenVPN’a, który autentykuje się poprzez Active Directory, ale używa 2FA (Two Factor Authentication). A jeśli chcemy przejść do następnego czytania to aktualny musi być zrealizowany.