wtorek, 17 września 2013

Active Directory na Linuxie - kompletny tutorial, zaktualizowany i uzupełniony

Active Directory na Linuxie

http://sector7e.com/wp-content/uploads/2012/11/samba_logo_4c.png

Wstęp

Od pojawienia się poprzedniej wersji poradnika instalacji kontrolera domeny AD-Linux na moim blogu minęło już kilka miesięcy. W tym czasie trochę się zmieniło. Przede wszystkim pojawiła się nowa stabilna wersja Debiana - 7.0 "Wheezy" (oficjalnie wydana 4.05. br.) oraz jej aktualizacja - 7.1 (15.06 br.). Wydanych zostało też kilka nowszych wersji serwera Samba4. Najnowsze wydanie stabilne to 4.0.9 z 20 sierpnia 2013, a na 1 października jest już planowane wydanie wersji 4.0.10. Nowe wersje oprogramowania dają nowe możliwości, dlatego postanowiłem zaktualizować poradnik.

Najważniejszą zmianą w stosunku do poprzedniej wersji jest użycie wbudowanego w system operacyjny serwera DNS. Bind9 w Debianie 6.0.x nie współpracował z serwerem Samba4. Konieczne było skompilowanie nowszej wersji DNS lub instalacja z repozytoriów testowych (wówczas właśnie „Wheezy”). Użyta wersja w najnowszym Debianie ma oznaczenie 9.8.4-rpz2+r1005.12-P1, jest instalowana od razu z systemem operacyjnym a jej konfiguracja jest inna niż opisywana wcześniej.

(Niniejszy artykuł został zaktualizowany, ponieważ najnowszym wydaniem Debiana jest już wersja 8 Jessie, a najnowsza Samba to już wersja 4.3.3 (styczeń 2016). W odpowiednich miejscach pojawi się tekst w nawiasach lub czerwone wyróżnienie.)

W informacjach wstępnych trzeba jeszcze podać, że zarówno serwer będący kontrolerem domeny jak i komputery klienckie w przedstawionym artykule są połączone w sieć w topologii gwiazdy. Siecią zarządza oddzielny router, do niego podłączony jest switch a do przełącznika wszystkie komputery. Sytuację przedstawia poniższa grafika:
W tej konfiguracji router służy jako brama do Internetu i serwer DHCP. Przełącznik jest niekonfigurowalny.

W oddzielnym artykule przedstawiam konfigurację, w której serwer Samba4 zastępuje router.

Zarówno poprzednia jak i ta wersja tutoriala powstały w oparciu o testy przeprowadzone na maszynach wirtualnych, konfigurowanych w środowisku Oracle VirtualBox.

Przewodnik mojego autorstwa jest wynikiem wielu dni testów i poszukiwań, dlatego podobnie jak poprzednio podaję źródła, z których korzystałem:



Na koniec wstępu mam prośbę do wszystkich, którzy korzystali lub będą korzystać z mojego przewodnika, aby w komentarzach dzielili się efektami swojej pracy. Będę bardzo wdzięczny za informacje czy ktoś wdrożył domenę Active Directory na serwerze linuxowym w firmie lub instytucji. Tutorial jest dostępny dla wszystkich za darmo, więc niech informacja o wdrożeniu z sukcesem będzie formą "wynagrodzenia" dla autora przewodnika ;)

I. Instalacja systemu operacyjnego

Debian 7.1 zostanie zainstalowany poprzez instalację sieciową. Należy ściągnąć obraz odpowiedniej płyty z adresu http://www.debian.org/distrib/netinst, wypalić, włożyć płytę do napędu i uruchomić ponownie komputer. Ekran powitalny instalatora wygląda nieco bardziej profesjonalnie niż w wersji 6:


Wybieramy pierwszą opcję. Następnie instalator zapyta o język instalacji. Wybieramy Polish – Polski, kraj – Polska, układ klawiatury – polski (jeśli ktoś chce, oczywiście może ustawić inaczej). Kolejne kroki instalatora to wykrywanie podstawowego sprzętu i ustanowienie połączenia sieciowego. Nie wymaga to jakiejkolwiek interwencji ze strony użytkownika. Następnie instalator zapyta o nazwę dla naszego serwera i domeny:



W kolejnym kroku instalator pyta o hasło użytkownika root. Należy wpisać je dwukrotnie. Gdy instalator zapyta o „Pełną nazwę nowego użytkownika” to pierwsze pole możemy zostawić puste:


a w kolejnym wpisać nazwę używaną do logowania w systemie:


W kolejnych dwóch polach trzeba podać hasło nowego użytkownika.

Kolejnym krokiem jest podział dysku. Wybieramy opcje domyślne instalatora a na końcu zatwierdzamy i zapisujemy zmiany. Następnie instalator działa dalej bez potrzeby naszej interwencji. W kolejnym kroku musimy wybrać serwer lustrzany, ale tylko zatwierdzamy domyślne opcje instalatora. Gdy system zapyta czy chcemy wziąć udział w konkursie na najpopularniejszy pakiet, odpowiadamy Nie.

Przedostatnim krokiem jest wybór oprogramowania. Wystarczy, że z listy wybierzemy tylko Serwer DNS. Jeżeli po zakończeniu konfiguracji będziemy chcieli zostawić serwer gdzieś w kącie bez peryferiów, to do zarządzania przyda się też Serwer SSH (w Debianie w wersji 8 Jessie nie ma opcji Serwer DNS, doinstalujemy to później).


Na końcu potwierdzamy instalację programu GRUB w rekordzie rozruchowym. Po chwili system operacyjny jest zainstalowany. Po restarcie logujmy się na konto root.

II. Wstępna konfiguracja systemu


1. Instalacja Midnight Commander i zmiana domyślnego edytora


Na początku zainstalujemy pakiet Midnight Commander, dzięki czemu dostaniemy menadżer plików oraz wygodny edytor tekstowy. W tym celu wykonujemy polecenie:

# apt-get install mc

Gdy pakiet jest zainstalowany warto ustawić program mcedit jako domyślny edytor. Służy do tego polecenie:

# update-alternatives --config editor

Pojawi się menu i polecenie wyboru. Wpisujemy cyfrę z lewej strony programu mcedit i zatwierdzamy Enter:


2. Konfiguracja sieci


Po instalacji systemu połączenie sieciowe serwera jest ustanawiane przez serwis DHCP routera naszej sieci. Pierwszym krokiem jest ustawienie stałego adresu IP dla serwera.

Wykonujemy polecenie:

# mcedit /etc/network/interfaces

i edytujemy plik według wzoru:


Zapisujemy plik klawiszem F2 i wychodzimy z edytora F10. Aby zmiany odniosły skutek musimy zresetować połączenie sieciowe. Wykonujemy dwa polecenia:

# /etc/init.d/networking stop

oraz

# /etc/init.d/networking start

Aktualny adres IP komputera można sprawdzić poleceniem # ifconfig, a połączenie poprzez ping dowolnego serwera, np. Google.

3. Przypisanie nazwy komputera do ustawionego adresu IP


W tym celu trzeba wyedytować plik /etc/hosts zgodnie ze wzorem:


Poprawność operacji sprawdzamy poleceniem:

# ping nazwa_serwera -c 4

Powinniśmy zobaczyć następujący efekt:


III. Instalacja serwera Samba4


1. Instalacja niezbędnych pakietów


Zgodnie z informacjami z oficjalnego HOWTO instalacji Samba4 trzeba zainstalować poniższy zestaw:

# apt-get install build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev

Zestaw dla Debiana w wersji 8 Jessie jest nieco inny:

# apt-get install net-tools bind9 build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls28-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev

Jednym z pakietów jest Kerberos, dlatego w trakcie instalacji zostaniemy poproszeni o podanie kilku danych. Nazwę domeny zostawiamy domyślną (powinna być zgodna z tym co wpisaliśmy podczas instalacji systemu operacyjnego):


W następnych dwóch okienkach nie musimy nic zmieniać (możemy zostawić je puste), bo później i tak podmienimy plik konfiguracji Kerberosa. 


2. Ustawienie montowania partycji głównej z opcją ACL


Opcja ta nie jest domyślnie włączona a jest konieczna do przeprowadzenia procesu promowania domeny Active Directory.

Należy otworzyć w edytorze plik konfiguracyjny /etc/fstab, znaleźć linijkę

/ ext4 errors=remount-ro 0 1

i zmienić wpis na

/ ext4 errors=remount-ro,user_xattr,acl,barrier=1 1 1

Następnie wykonujemy polecenie:

# mount -o remount /

3. Instalacja pakietu Samba4


Instalacji serwera dokonamy przez pobranie najnowszej paczki z serwera ftp. Dla porządku warto pobierane paczki zapisywać w oddzielnym katalogu. Wykonujemy polecenia:

# cd /usr/src

# wget https://download.samba.org/pub/samba/stable/samba-4.3.3.tar.gz --no-check-certificate

Po pobraniu rozpakowujemy paczkę:

# tar zxvf samba-4.3.3.tar.gz

Wchodzimy do katalogu:

# cd samba-4.3.3

i dokonujemy instalacji:

# ./configure –-enable-selftest
# make (Ta operacja może zając sporo czasu, w zależności od szybkości procesora i wielkości pamięci RAM. Przy jednym rdzeniu taktowanym zegarem 3 GHz i 1 GB RAM trwa to do 30 minut. )
# make install

4. Promowanie domeny (provisioning)

Wykonujemy polecenie:

# /usr/local/samba/bin/samba-tool domain provision

i odpowiadamy na pytania kreatora. Przy opcjach Realm, Domain i Server Role po prostu wciskamy Enter. Przy opcji DNS backend wpisujemy BIND9_DLZ. Podajemy dwukrotnie hasło administratora domeny i czekamy aż proces promowania dobiegnie końca. Jeśli wszystko do tej pory zrobiliśmy poprawnie, powinniśmy zobaczyć wynik podobny do poniższego.


5. Skopiowanie pliku krb5.conf


Wraz z instalacją pakietu Kerberos został utworzony plik /etc/krb5.conf. Zawiera on wiele danych, które w podstawowej konfiguracji kontrolera domeny nie są potrzebne. Zawartość pliku trzeba zmienić, jednak aby nie utracić informacji w nim zawartych możemy plik zarchiwizować. Wykonujemy polecenie:

# cp /etc/krb5.conf /etc/krb5.conf.old

Plik o odpowiedniej zawartości dostarcza nam Samba4. Musimy go tylko skopiować:

# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf

Aby sprawdzić, czy plik został poprawnie skopiowany, wykonujemy polecenie:

# cat /etc/krb5.conf

Powinniśmy uzyskać wynik jak poniżej:


6. Konfiguracja serwera DNS do pracy z kontrolerem domeny Samba4


Serwer DNS Bind9 zainstalowaliśmy razem z systemem operacyjnym. Musimy go jeszcze odpowiednio skonfigurować. W tym celu edytujemy plik /etc/bind/named.conf.options i nadajemy mu taki kształt:


Następnie dopisujemy jedną linijkę do pliku /etc/bind/named.conf.local:


Poprawność konfiguracji serwera DNS sprawdzamy poleceniem

# named-checkconf

Jeśli nic się nie wyświetli to znaczy, że jest dobrze :)

7. Edycja pliku /etc/resolv.conf


Domyślnie w tym pliku wpisane są adresy DNS dostawcy Internetu. Chcemy jednak aby w pierwszej kolejności był przeszukiwany nasz serwer i domena. Zatem plik powinien wyglądać następująco:


Jeśli żądana nazwa nie zostanie rozpoznana przez nasz serwer, rozpocznie on przeszukiwanie serwerów wpisanych w opcji forwarders pliku /etc/bind/named.conf.options.

Po wprowadzeniu zmian restartujemy serwer DNS poleceniami

# /etc/init.d/bind9 stop
# /etc/init.d/bind9 start 

Jeśli zobaczymy dwa razy zielone [ ok ], to będzie znaczyło, że skonfigurowaliśmy serwer poprawnie. Dla pewności można spingować dowolny serwer zewnętrzny, np. Google.

8. Uruchomienie serwera Samba4


Wykonujemy polecenie:

# /usr/local/samba/sbin/samba

To samo polecenie wpisujemy do pliku /etc/rc.local aby Samba4 uruchamiała się wraz ze startem systemu operacyjnego:


9. Sprawdzenie działania serwisów w systemie


a) Samba4


Aby sprawdzić czy serwer Samba4 jest uruchomiony wykonujemy komendę:

# pgrep samba

Powinniśmy otrzymać taki wynik:


Wyświetlone w kolumnie liczby to numery serwisów otwartych w systemie.

Innym sposobem sprawdzenia poprawnego działania kontrolera domeny jest wywołanie polecenia

# /usr/local/samba/bin/smbclient -L localhost -U%

Efekt powinien być następujący:


b) Kerberos


Dzięki poniższemu poleceniu sprawdzimy poprawność działania zarówno pakietu Kerberos jak i Bind9:

# kinit administrator

Powinniśmy zostać poproszeniu o podanie hasła administratora domeny Active Directory. Jeśli tak się stało, to znaczy że nasz kontroler domeny działa poprawnie.

Aby uzyskać absolutną pewność, że wszystko działa dobrze, możemy wykonać restart serwera, np. poleceniem

# shutdown -r now

i wykonać wszystkie testy z punktu 9.

W tym miejscu kończy się instalacja i konfiguracja kontrolera domeny Active Directory w systemie Debian. Jeśli wszystkie etapy zostały wykonane zgodnie z przewodnikiem, nie powinny pojawić się żadne błędy. Gdyby coś jednak było nie tak proszę o komentarz lub wiadomość.

6 komentarzy:

Unknown pisze...

Całkiem porządna instrukcja. U mnie jedynie nie zadziałało polecenie: service networking stop i start, ale to nie problem. Po drodze jedna mała literówka(myślałem że skopałem coś). Jeszcze kinit administrator też nie funkcjonuje, lecz robię to już w godzinach nocnych-sprawdzę w dzień. Mam zamiar wdrożyć to u siebie w instytucji. Poinformuję co i jak w najbliższym czasie. Dalej to już profile wędrujące z instrukcji z marca br....??

Zbyszek pisze...

Dziękuję za wiadomość. Profile wędrujące można konfigurować na podstawie instrukcji z marca: http://jedenserwer.blogspot.com/2013/03/samba4-jako-podstawowy-kontroler-domeny_5493.html
Niedziałające polecenie 'kinit' może mieć sporo przyczyn. Zacząłbym od sprawdzenia pliku 'krb5.conf' oraz ustawień BIND9. Pozdrawiam.

Unknown pisze...

dziękuję za info, myślę że pomyliłem się w adresacji sieci, gdyż chciałem to zrobić już dostosowując się do niej i mogłem coś pokręcić w plikach konfiguracyjnych. Podzielę się informacją po już zastosowaniu na maszynie, która zrobi mi porządek w sieci...

Unknown pisze...

okey, kontroler działa jest to w sumie dobra instrukcja. Ale u mnie np. nie mogę zalogować się jako administrator domeny na komputerze, który dodałem do domeny. Zaznaczę, że pracuje na Vista-ch. Dodanie komputera do domeny działa, ale później to już schody. Jeśli w Uruchom otworzę katalogi domeny poprzez polecenie \\ad to wyświetlając właściwości katalogu [profiles] nie mogę dodać domain usera, gdyż raczej go chyba go tam nie ma gdyż nie weryfikuje nic, albo vista tego nie widzi.

####################################################################################
Generalnie Potwierdzam iż Bieżąca Instrukcja Prowadzi do Utworzenia Kontrolera Domeny na Linuxie.
####################################################################################

Chyba spróbuję najpierw na winXP, a później systemy wyżej. W każdym razie mam mały zgrzyt. Aha, bo miałem powiedzieć - poprzednio się machnąłem właśnie w pliku "named.conf.options" i dlatego nie odpaliło mi dalej, ale teraz po wybraniu komputera do pracy w domenie jako pomyślne już myślałem że jestem w domu ale znów porażka...

Zbyszek pisze...

Nie mam pod ręką komputera z Vistą, ale z tego co pamiętam logowanie jest podobne do 7. Gdy podczas uruchamiania pojawią się ikonki użytkowników, należy wybrać "Inny użytkownik" (lub coś w ten deseń) i wpisać:
nazwa_domeny\konto_admina
a następnie podać hasło.
Jeśli komputer udało się dodać do domeny to konto administratora jest jedynym kontem, które może zalogować komputer do tej domeny i tylko z tego konta można zmieniać właściwości i uprawnienia folderów sieciowych.

Unknown pisze...

Wiem, wiem, to jest znane, ale obecnie właśnie moją ideą jest znalezienie innego odpowiednika nie-windows dla AD. Ta Twoja instrukcja lub rozwiązanie jest całkiem przystępne, ale muszę je dostosować do systemów wyższych niż XP. I nad tym teraz popracuje. Podzielę się wiadomościami jak dokonam właściwych własnych działań zakończonych z sukcesem. Dziękuję za dokonaną już Twoją pracę w tym zakresie.