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.