Nasze rozważania na temat Samby, Active Directory i tematów pokrewnych skoncentrujemy na następujących zagadnieniach:
-
-
- instalacja systemu Linux Debian w wersji 7.7,
- konfiguracja i przygotowanie systemu Linux do instalacji serwera Samba,
- instalacja serwera Samba 4.1.13,
- weryfikacja przeprowadzonej konfiguracj,
- podstawowe zarządzanie kontrolerem domeny.
-
Instalację systemu Debian rozpoczynamy od pobrania interesującego nas obrazu sytemu ze strony projektu - https://www.debian.org/CD/http-ftp/ bądź https://www.debian.org/releases/wheezy/debian-installer/index.pl.html
Po wypaleniu płyty (a raczej płyt, a dokładnie trzech – wersja DVD) możemy pierwszy nośnik umieścić w napędzie. Po chwili instalator powinien zgłosić gotowość do pracy.
Proces instalacji możemy przeprowadzić korzystając z instalatora tekstowego bądź instalatora opartego na grafice. Instalator graficzny od instalatora tekstowego różni się tylko obsługą myszki, oraz wyglądem menu, pytania na które musimy odpowiedzieć podczas prowadzonego procesu instalacji są takie same. My skorzystamy z drugiego rozwiązania tak więc z listy wybieramy Graphical install. Gdy chcemy skorzystać z innego środowiska graficznego niż domyślne instalowane Gnome 3 wybierz Advanced options (do wyboru KDE, LXDE, Xfce).
Na pierwszym ekranie czeka nas wybór języka. Wybieramy język polski.
Kolejny krok to wybór lokalizacji – wybieramy Polska. Wybór ten ma wpływ na ustawienie strefy czasowej oraz parametrów regionalnych.
Na kolejnym ekranie wybieramy układ klawiatury.
Po kliknięciu na Dalej zostają załadowane składniki instalatora.
Ekran Konfiguruj sieć umożliwia nam wybranie interfejsu sieciowego, który zostanie użyty podczas instalacji systemu. Wybieramy interfejs z dostępem do Internetu tak aby instalator mógł pobrać pakiety aktualizacji.
Następuje konfiguracja sieci. W przypadku niepowodzenia będziemy mogli sami dokonać ustawień adresów IP. Konfiguracja ręczna wiąże się z podaniem następujących danych: adres IP twojego komputera, maskę sieci, bramę sieciową, adresy serwerów nazw (serwery DNS).
Na kolejnym ekranie Konfiguruj sieć dokonujemy konfiguracji nazwy naszego komputera/hosta. W naszym przypadku pozostawiam wartość domyślną – debian, choć ty czytelniku możesz oczywiście wpisać swoją dowolną wymyśloną wartość.
Kolejny ekran to podanie nazwy domeny do której należy host. Komputer nie przynależy do żadnej domeny a więc pole pozostawiamy puste (domenę będziemy dopiero tworzyć).
Przyszła pora na konfigurację użytkowników i haseł. Tak więc pierwszą czynnością jest ustalenie hasła dla konta root – administratora systemu. Hasło wpisujemy dwukrotnie.
Kolejny krok to podanie nazwy konta –najczęściej podajemy imię i nazwisko . Podawana nazwa będzie używana przez programy, które używają prawdziwej nazwy użytkownika np. programy pocztowe do uzupełnienia pola nadawca. Konto to jest kontem do użytku programów nie związane z celami administracyjnymi.
Kolejny ekran służy do zdefiniowania nazwy konta w systemie (konta systemowego).
Ostatnią czynności jest podanie hasła do nowo utworzonego konta.
Po przejściu opcji związanych z użytkownikiem, przyszedł czas by określić strukturę partycji na naszym dysku. My decydujemy się na ustawienia standardowe, tak więc będziemy partycjonować cały dysk.
Wybieramy dysk na którym zostanie utworzona partycja bądź partycje i dalsza instalacja systemu. Proces spowoduje usunięcie wszystkich danych znajdujących się na dysku.
Kolejna decyzja wiąże się z wyborem schematu partycji.
Na kolejnym ekranie mamy podgląd aktualnie skonfigurowanych partycji i punktów montowania a także mamy możliwość dokonania ewentualnych poprawek.
Ostatni ekran podsumowujący wprowadzone ustawienia do schematu partycji. Kliknięcie na Tak spowoduje zatwierdzenie wszystkich ustawień.
Następuje tworzenie partycji.
Po wykonaniu partycjonowania dysku, instalator systemu Debian pyta się o istnienie innych nośników zawierających pliki instalatora systemu. Jeśli posiadamy takowe płyty umieszczamy je w napędzie i wybieramy Tak. W przeciwnym wypadku pomijamy ten krok.
Skanowanie nośników ma na celu wyeliminowanie pobierania plików instalatora z Internetu. Potrzebne pakiety zamiast być pobierane będą dostarczone z zeskanowanych nośników.
Kolejny krok to pytanie o możliwość uczestnictwa w programie zbierania statystyk.
Przed rozpoczęciem kopiowania plików mamy jeszcze możliwość wybrania zestawu usług jakie ma nam oferować system. My decydujemy się na wybór tylko podstawowych składników gdyż potrzebne nam usługi skonfigurujemy sami.
Następuje proces instalacji i kopiowania niezbędnych pakietów.
Ostatnia decyzja wiąże się z instalacją programu rozruchowego GRUB. W tym momencie gdy na naszym komputerze mamy zainstalowane inne systemy operacyjne powinny one być uwidocznione. Program rozruchowy jest odpowiedzialny za wybór uruchamianego systemu.
Poprawnie przeprowadzona instalacja systemu kończy się komunikatem podsumowującym.
Po poprawnej instalacji systemu warto na początek wykonać aktualizację całego systemu. Aby aktualizacja powiodła się jako użytkownik root wydajemy polecenie: apt-get update && apt-get upgrade Następuje aktualizacja systemu.
Zanim przejdę dalej jeszcze jedno słowo wytłumaczenia. Wszystkie prezentowane przeze mnie czynności są wykonywane w symulowanym środowisku opierającym się na VirtualBox. Tak aby sobie ułatwić pracę z wirtualnymi maszynami warto zainstalować na każdym wirtualnym systemie zestaw narzędzi Guest Additions. O ile instalacja tych narzędzi w systemach z rodziny Windows nie nastręcza żadnych problemów (gdy maszyna wirtualna jest uruchomiona z menu wybieramy Devices i następnie Insert Guest Additions CD Image, po tej operacji powinien pojawić się instalator dodatku, który instalujemy jak każdy inny program) to już w systemach pokroju Linux sprawa wygląda bardzo różnie. Tak więc jakbyś czytelniku sam chciał przeprowadzić wszystkie opisane czynności zainstalowanie dodatku Guest Additions wykonajwg. punktów poniżej:
1. zaloguj się jako root, bądź włącz konsolę z uprawnieniami administratora,
2. zainstaluj pakiety build-essential module-assistant (polecenie: apt-get install build-essential module-assistant);
3. wydaj polecenie: m-a prepare,
4. kliknij Install Guest Additions z menu Devices menu,
5. wydaj polecenie: sh /media/cdrom/VBoxLinuxAdditions.run (pamiętaj, że ścieżka może się różnić)
Kolejnym nieudogodnieniem z którym możemy się spotkać to jest niemożliwość uruchomienia danego polecenia z uprawnieniami administratora z konta które takowych uprawnień nie posiada. Przykład poniżej - z konta luk zostało uruchomione polecenie nakazujące aktualizację systemu, lecz polecenie to zostaje przerwane komunikatem: luk nie występuje w pliku sudoers. Ten incydent zostanie zgłoszony.
Aby możliwe było wykonanie poleceń z podwyższonymi uprawnieniami należy konto luk dodać do pliku sudoers. Aby dodać użytkownika do pliku sudoers należy:
1. zalogować się na konto root'a,
2. włączyć edycję pliku wydając polecenie: gedit /etc/sudoers bądź nano /etc/sudoers (wszystko zależy od naszych preferencji edytora),
3. w sekcji: # User privilege specificationroot dodać wpis: <nazwa_konta> ALL=(ALL:ALL) ALL czyli w moim przypadku: luk ALL=(ALL:ALL) ALL
Zapisujemy plik. Od teraz powinno wszystko działać jak należy i jak widać poniżej tak jest.
Chwilkę temu wspomniałem o edytorze zawartości plików. Linux jest systemem w którym edycję plików możemy przeprowadzać za pomocą wielu narzędzi a że edycję plików będziemy przeprowadzać bardzo często ważne jest aby wybrać edytor, który będzie dla nas wygodny. Na samym początku można spróbować korzystać z edytorów dostępnych wraz z systemem czyli gedit bądź nano. Oczywiście możliwa jest instalacja produktów alternatywnych. Bardzo często wykorzystywanym edytorem jest pakiet Midnight Commander. Pakiet ten tak naprawdę zainstaluje menadżer plików lecz także edytor tekstowy. Aby zainstalować aplikację wydaj polecenie: apt-get install mc
Od tej pory możemy korzystać z menadżera plików (aż się łezka kręci, jakie to podobne do Norton Commander) lecz także edytora zawartości plików.
Edycja plików sprowadza się do wykonania jeszcze jednego ustawienia. Poniżej przedstawiono zrzut ekranu w którym edycja pliku następuje za pomocą edytora nano (edytor ustawiony jako domyślny).
Aby zmienić ustawienie domyślnie wykorzystywanego edytora należy wydać polecenie: update-alternatives --config editor a następnie podać numer przypisany do edytora, którego chcemy używać (w naszym przypadku edytor mcedit ma przypisany numer 2).
Od tej pory mcedit będzie wykorzystywany jako domyślny edytor.
OK mamy przygotowane środowisko do zainstalowania serwera Samba oraz dokonaliśmy niezbędnych ustawień komputera do pełnienia roli kontrolera domeny. Zanim przejdziemy dalej jeszcze chwilkę się zatrzymamy i dopowiemy parę słów, tak aby wszystko było jasne.
Pierwszą sprawą jest użyta topologia sieci i przyjęta adresacja. Drugą zaś osobną kwestią jest lista usług jakie będziemy chcieli uruchomić na serwerze. Myślę, że wszystkie wątpliwości rozwieje poniższy rysunek.
Tak więc analizując powyższy schemat dochodzimy do wniosku, że czeka nas trochę roboty, gdyż oprócz konfiguracji i instalacji samej Samby będziemy musieli uruchomić i skonfigurować usługę DNS i DHCP oraz włączyć przekazywanie pakietów pomiędzy dwoma sieciami (NAT). Serwer jest zaopatrzony w dwie karty sieciowe i stanowi bramę dla sieci 10.0.0.0/24.
Aby móc przystąpić do instalacji Samby należy zainstalować dodatkowe funkcje i pakiety. Do najważniejszych z nich należą:
-
-
- python-dev - rozszerzenie interpretera języka Python,
- libacl1-dev - pakiet zawiera biblioteki i pliki nagłówkowe potrzebne do tworzenia programów,
- resolvconf - pakiet wspomaga wymianę informacji oraz służy do utrzymywania aktualności informacji systemu o serwerach nazw,
- libldap2-dev - OpenLDAP, implementacja protokołu LDAP, protokół przeznaczony do korzystania z usług katalogowych,
- build-essential - pakiet jest wymagany do budowania pakietów Debiana,
- libgnutls-dev - biblioteka, która implementuje protokół Transport Layer Security (TLS) 1.0 oraz Secure Sockets Layer (SSL) 3.0,
- pkg-config - pakiet, który pozwala na kompilację i konsolidację bibliotek,
- cups - Common UNIX Printing System (CUPS(tm)) - serwer wydruku,
- libcups2-dev - wspomaga serwer wydruku CUPS,
- krb5-user - implementacja protokołu Kerberos. Protokół ten odpowiedzialny jest za uwierzytelnienie (weryfikacja tożsamości) w domenach Windows,
- docbook-xsl - arkuszy stylów XSL,
- attr - narzędzia do obsługi systemu plików,
- libbsd-dev - funkcje użytkowe systemów BSD,
- python-dnspython - zestaw narzędzi DNS dla Pythona. Pakiet obsługuje prawie wszystkie typy rekordów. Może być używany do tworzenia zapytań, transferów strefy i dynamicznych aktualizacji,
- libattr1-dev - zawiera biblioteki i pliki nagłówkowe potrzebne do działania programów,
- git - system kontroli wersji, który śledzi wszystkie zmiany dokonywane na pliku (lub plikach) i umożliwia przywołanie dowolnej wcześniejszej wersji,
- gdb - GDB to debuger plików źródłowych, pozwalający na zatrzymanie programu w konkretnym miejscu, wyświetlanie wartości zmiennych oraz określenie gdzie wystąpił błąd. Debuger współpracuje z programami napisanymi w językach C, C++, Fortran, Modula 2 i Java,
- xsltproc - pakiet umożliwia konwersję plików XML na inne, dowolne formaty takie jak: HTML, zwykły tekst itp.,
- libsasl2-dev - pakiet umożliwia wykorzystanie metody SASL (Simple Authentication Security Layer) celem uwierzytelnienai użytkownika,
- libaio-dev - biblioteka wykorzystywana przy korzystaniu z baz danych,
- isc-dhcp-server - pakiet instaluje serwer DHCP.
- acl – pakiet niezbędny do manipulowania listami kontroli dostępu,
- libreadline-dev - biblioteki GNU obsługujące interfejs użytkownika,
- valgrind - aplikacja na licencji GPL, narzędzie, które wspomaga zarządzanie pamięcią,
- ldap-utils - pakiet zawiera narzędzia pakietu OpenLDAP (Lightweight Directory Access Protocol). Narzędzia te pozwalają uzyskać dostęp do lokalnego lub zdalnego serwera LDAP,
- ntp - implementacja protokołu synchronizacji czasu.
-
Tak więc aby zainstalować wszystkie powyższe pakiety (i jeszcze parę dodatkowych) wydaj polecenie: apt-get install python-dev autoconf pkg-config libcups2-dev git build-essential xsltproc cups krb5-user docbook-xsl libsasl2-dev libacl1-dev libgnutls-dev libattr1-dev python-dnspython libreadline-dev libbsd-dev libldap2-dev libblkid-dev valgrind attr libpopt-dev acl gdb libaio-dev libpam-dev resolvconf ldap-utils ntp isc-dhcp-server
Wydanie polecenia spowoduje instalację dodatkowych aplikacji i komponentów (CUPS, DHCP, Kerberos), bibliotek niezbędnych do przeprowadzenia komplikacji Samby a także zostaną zainstalowane wszystkie pakiety zależne (pakiety, które są wymagane aby aplikacje działały prawidłowo).
Proces instalacji powinien przebiec bez żadnych komplikacji, jedyne co będzie trzeba podać to informacje, które są niezbędne do implementacji mechanizmu Kerberos. Tak więc w pierwszym oknie podajemy nazwę domeny (koniecznie wielkie litery).
Drugie okno to adres IP serwera (bądź serwerów), wskazujemy na komputer lokalny a więc wpisanym adresem będzie adres 127.0.0.1 (można zamiast adresu IP zdecydować się na zdefiniowaną nazwę hosta – w naszym scenariuszu należałoby by wpisać: debian).
W trzecim ostatnim oknie również należy użyć adresu IP wskazującego na komputer lokalny (również możemy wykorzystać nazwę hosta).
Serwer Samba a także usługa Active Directory korzysta z pewnych funkcji systemu plików ext4. Aby przejść dalej należy się upewnić, że funkcje te są włączone (system instalowaliśmy z opcjami domyślnymi a więc funkcje te powinny być skonfigurowane poprawnie). Tak więc wydaj polecenie: grep CONFIG_EXT4_FS /boot/config-`uname -r`
Po wydaniu polecenia powinniśmy uzyskać dane takie jak na rysunku powyżej. Poszczególne wpisy informują nas o:
1 - system plików ext4 działa jako moduł,
2 - obsługiwana jest funkcja xattr (rozszerzone atrybuty pliku),
3 - obsługiwane są listy kontroli dostępu (posix_acl),
4 - obsługa mechanizmów zabezpieczeń.
Fakt włączenia funkcji możemy również sprawdzić poprzez ręczny podgląd pliku config-<wersja_systemu_linux>
Kolejnym krokiem, który musimy wykonać jest wprowadzenie zmian w pliku fstab, plik ten jest odpowiedzialny m.in. za konfigurację systemu plików ext4. Warto nadmienić, że nieprawidłowo przeprowadzona edycja pliku może doprowadzić do nie uruchomienia się systemu. Tak więc aby zabezpieczyć się przed ewentualnymi problemami za pomocą polecenia cp wykonujemy kopie pliku – polecenie: cp -pR /etc/fstab /etc/fstab_backup
Po wykonaniu kopii pliku przechodzimy do jego edycji. Wprowadzone zmiany włączą funkcje systemu plików ext4, które są potrzebne aby serwer Samba działał prawidłowo (funkcja xattr oraz listy kontroli dostępu). Edycja pliku sprowadza się do dodania wpisu: user_xattr,acl,barrier=1 przy wpisie każdej z partycji (w scenariuszu został użyta tylko jedna partycja).
Po przygotowaniu systemu plików czas aby skonfigurować interfejsy sieciowe komputera. Przedstawiony kilka rysunków wyżej schemat naszej testowej sieci ułatwi nam to zadanie. Jak widać po rysunku interfejs eth1 jest interfejsem, który ma połączenie z siecią Internet i ten interfejs domyślnie skonfigurowany jest do korzystania z serwera DHCP. Ustawienie to pozostawiamy bez zmian. Stały adres IP 192.168.0.11 jest przyznawany zawsze dzięki rezerwacji tegoż adresu w puli serwera DHCP (powiązanie adresu IP z adresem MAC interfejsu eth1).
Odrębną sprawą jest już przyjęta adresacja interfejsu eth0. Adresację tą wykonujemy statycznie czyli sami powiążemy niezbędne adresy IP z interfejsem eth0. Jak można zauważyć poniżej po wydaniu polecenia: ifconfig eth0 żaden adres IPv4 nie został przyznany interfejsowi.
Aby zmiana interfejsu była stała, należy odpowiednie dane wprowadzić do pliku /etc/network/interfaces odpowiedzialnego za konfigurację interfejsów sieciowych komputera. Wprowadzone zmiany zostały ujęte na rysunku poniżej.
auto eth0
iface eth0 inet static
address 10.0.0.2
netmask 255.255.255.0
dns-search firma.local
dns-domain firma.local
dns-nameservers 10.0.0.2
Wpisy te tworzą statyczny interfejs sieciowy eth0 z adresem IP 10.0.0.2 i maską 255.255.255.0 oraz konfigurują domenę. Funkcję serwera DNS będzie pełnił serwer zainstalowany lokalnie wraz z instalacją Samby.
Po wprowadzeniu zmian i ponownym uruchomieniu komputera (można zamiast restartować wydać polecenie: /etc/init.d/networking restart) ponowne wydanie polecenia: ifconfig eth0 uwidoczni wprowadzone zmiany. Jak widać poniżej interfejs eth0 został skonfigurowany poprawnie i działa prawidłowo.
Kolejną czynnością jest konfiguracja serwera czasu NTP (ang. Network Time Protocol). Odpowiednie pakiety zostały zainstalowane wcześniej. Usługa czasu ma znaczenie krytyczne podczas działania serwera Samba. Nasz komputer po konfiguracji dodatkowo będzie pełnił rolę serwera czasu dla komputerów znajdujących się w naszej sieci. Cała konfiguracja sprowadza się do dopisania dwóch dodatkowych wierszy do pliku konfigurującego serwer. Zmiany dokonujemy w pliku /etc/ntp.conf
ntpsigndsocket /usr/local/samba/var/lib/ntp_signd/
restrict default mssntp
Sprawdzenie statusu serwera NTP możemy dokonać po wpisaniu polecenia: service ntp status
Dodatkowo sprawdzenie serwera NTP dokonamy na kliencie za pomocą programu NTPTool. Jak widać poniżej po wpisaniu adresu naszego serwera i wysłaniu zapytania, serwer NTP odsyła nam odpowiedź.
i dokonamy przechwycenia pakietów
Jak widać powyżej wszystko jest w porządku. Uważnego czytelnika może zaabsorbować fakt różnicy czasu (dokładnie 1 godzina) pomiędzy wynikami programu NTPTool a przechwyconymi pakietami. Stało się tak ponieważ serwer przesyła czas UTC (zob. rysunek przechwycone pakiety) a w systemie strefa czasowa jest ustawiona jako UTC+01:00 (zob. wyniki reprezentowane przez program NTPTool)
Nasz komputer oprócz pełnienia roli serwera czasu będzie pełnił jeszcze jedną dodatkową funkcję a mianowicie będzie również serwerem DHCP. Oczywiście jeżeli w swojej sieci masz już serwer DHCP to krok ten możesz pominąć oraz podczas instalacji dodatkowych pakietów zrezygnuj z pakietu: isc-dhcp-server
Konfiguracja serwera DHCP sprowadza się do wprowadzenia odpowiednich informacji do pliku /etc/dhcp/dhcpd.conf odpowiedzialnego za działanie serwera DHCP. Wprowadzone informacje to m.in.:
1 - nazwa domeny,
2 - adresy serwerów DNS,
3 - serwer NetBIOS,
4 - serwer NTP,
5 - czas dzierżawy adresu IP w sekundach,
6 - obsługiwana sieć,
7 - pula adresów IP serwera DHCP,
8 - adres IP routera/bramy.
ddns-updates on;
option domain-name "firma.local";
option domain-name-servers 10.0.0.2, 10.0.0.2;
option netbios-name-servers 10.0.0.2;
option ntp-servers 10.0.0.2;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 10.0.0.0
netmask 255.255.255.0 {
range 10.0.0.10 10.0.0.100;
option routers 10.0.0.2; }
Dodatkowo w pliku /etc/default/isc-dhcp-server w sekcji INTERFACES należy określić interfejs sieciowy, który ma zostać powiązany z serwerem DHCP (ten interfejs będzie obsługiwany prze serwer DHCP).
Po wprowadzeniu wszystkich zmian przyszedł czas na uruchomienie i przetestowanie wprowadzonych ustawień serwera DHCP. Serwer uruchamiamy poleceniem: /etc/init.d/isc-dhcp-server start
Status serwera sprawdzamy poleceniem: /etc/init.d/isc-dhcp-server status
Serwer DHCP pracuje a więc podłączmy klienta. Klient został podłączony jak widać poniżej wszystkie dane konfigurujące interfejs sieciowy zostały prawidłowo klientowi dostarczone. Klient otrzymał pierwszy adres IP z puli czyli 10.0.0.10 z maską 255.255.255.0 i komunikacja z serwerem jest zapewniona.
Przechwycony ruch pakietów pomiędzy klientem a serwerem również jest prawidłowy.
Stan dzierżaw adresów IP na serwerze DHCP można sprawdzić za pomocą polecenia: more /var/lib/dhcp/dhcpd.leases
Zakończyliśmy wszystkie czynności przygotowawcze a więc najwyższy czas aby wykonać instalację serwera Samba 4.
Do instalacji serwera wykorzystamy repozytoria git (za przeprowadzenie tej operacji będzie odpowiedzialny pakiet git, który zainstalowaliśmy w fazie przygotowania systemu).
Tak więc pierwszą naszą czynnością będzie sklonowanie stabilnej wersji Samby 4 z oficjalnej strony projektu a następnie kompilacja oprogramowania. Tu troszeczkę pójdziemy dłuższą drogą ponieważ oczywiście możliwa jest bezpośrednia instalacja pakietów Samby lecz dzięki wybraniu tej metody możemy przeprowadzić dodatkowe testy przed instalacyjne tak aby mieć pewność, że po instalacji będzie nam wszystko działać.
Klonowanie przeprowadzamy za pomocą polecenia: git clone -b <wersja_serwera_Samba> git://git.sama.org/samba.git <katalog>
Ostatnią aktualną wersję serwera sprawdzisz na stronie https://git.samba.org/ wybierając samba.git
Tak więc chcąc sklonować Sambę z oficjalnego repozytorium wydaj polecenie: git clone -b samba-4.1.13 git://git.samba.org/samba.git samba4 bądź git clone -b v4-1-13-stable git://repo.or.cz/samba.git samba4 Repo.or.cz jest serwisem, który oferują podobną funkcjonalność, co samba.org (adres przydatny w przypadku awarii).
Po wydaniu polecenia następuje kopiowanie serwera do katalogu samba4 z zdalnej lokacji. Szybkość wykonywania polecenia zależy od prędkości naszego łącza internetowego.
Po wykonaniu kopiowanie przyszedł czas by wykonać kompilację oprogramowania. Kompilację wykonujemy za pomocą polecenia: ./configure --enable-debug --enable-selftest Dodatkowy parametr selftest spowoduje dodanie opcji wykonania testu przed próbą podjęcia instalacji.
Po wydaniu polecenia następuje proces kompilacji, który uzależniony jest od posiadanego przez nasz sprzętu. Proces ten powinien zakończyć się wypisaniem komunikatu o pozytywnym zakończeniu operacji.
Po prawidłowo zakończonym procesie kompilacji tak naprawdę moglibyśmy już przejść do instalacji serwera Samba ale zanim to zrobimy wykonamy jeszcze jeden test, który przeprowadzi weryfikację środowiska w którym będzie pracował serwer Samba. Aby wykonać test wydaj polecenie: make quicktest Polecenie uruchomi szereg procedur sprawdzających, które powinny zakończyć się komunikatem: ALL OK
Gdyby z jakiś powodów test zakończył się niepowodzeniem to podsumowanie testu możesz przejrzeć tutaj: .st/summary
Ostatnim naszym krokiem jest instalacja serwera, instalację rozpoczniemy po wydaniu polecenia: make install
Po kliknięciu Enter rozpoczyna się proces instalacji.
Serwer Samba 4 został zainstalowany poprawnie.
Gdyby z jakiś powodów niemożliwe było ściągnięcie repozytorium zawsze można posłużyć się innym sposobem a mianowicie wykorzystać do tego serwer FTP. Paczki wszystkich dystrybucji Samba znajdziemy np. pod adresem: http://ftp.samba.org/pub/samba/
Po odnalezieniu interesującej nas wersji (w naszym przypadku samba-4.1.13.tar.gz) przechodzimy do konsoli i wydajemy polecenie: wget http://ftp.samba.org/pub/samba/samba-4.1.13.tar.gz Po wydaniu polecenia następuje ściągnięcie pliku i zapisaniu go w bieżącym katalogu.
Rozpakowanie pakietu dokonujemy za pomocą polecenia: tar zxvf <nazwa_ściągniętego_pliku> czyli w naszym przypadku: tar zxvf samba-4.1.13.tar.gz Wszystkie pliki zostają zapisane do katalogu: samba-4.1.13
Proces instalacji kontynuujemy zgodnie z instrukcjami odnoszącymi się do procesu wykorzystującego repozytorium git.
Po zakończonej sukcesem instalacji serwera Samba 4 przechodzimy do konfiguracji domeny.
Bardzo często będziemy odwoływali się do poleceń serwera Samba a więc aby móc polecenia związane z zarządzaniem serwerem wpisywać bezpośrednio w konsoli bez odwoływania się za każdym razem do ścieżki, katalog instalacji Samby dodamy do zmiennej PATH. Zmienna ta jest odpowiedzialna za ustawienia katalogów które będą przeszukiwane celem znalezienia wpisywanych komend/programów. Po wydaniu polecenia: echo $PATH możemy sprawdzić jakie aktualne katalogi są do tej zmiennej przypisane.
Naszym celem jest dodanie dwóch katalogów instalacyjnych serwera Samba do zmiennej PATH: katalog /usr/local/samba/bin oraz katalog /usr/local/samba/sbin.
Aby po każdym zalogowaniu mieć ustawione konkretne zmienne środowiskowe, należy je umieścić w pliku ~/.bash_profile. Zmienne te możemy po prostu wpisać do wyżej wymienionego pliku bądź wykorzystać do tego polecenie set (ustawienie zmiennej) oraz polecenie export (zapis zmiennej). Tak więc przypisanie dwóch interesujących nas katalogów do zmiennej PATH sprowadza się do wydania następujących poleceń:
set PATH=$PATH':/usr/local/samba/bin'
set PATH=$PATH':/usr/local/samba/sbin'
export PATH=/usr/local/samba/bin:$PATH >> ~/.bash_profile
export PATH=/usr/local/samba/sbin:$PATH >> ~/.bash_profil
Ponowne wydanie polecenia: echo $PATH uwidoczni wprowadzone zmiany.
Serwer Samba został zainstalowany pora aby nasz serwer wypromować do pełnienia roli kontrolera domeny firma.local. Aby zacząć cały proces wydajemy polecenie: samba-tool domain provision --realm=firma.local --domain=firma --adminpass='B@rdzotajnehaslo1' --server-role='domain controller' – polecenie samba-tool jest odpowiednikiem windowsowego polecenia dcpromo
gdzie:
-
-
- domain provision -ozn. konfigurację domeny,
- realm - pełna nazwa domeny,
- domain - nazwa domeny,
- adminpass - hasło administratora domeny, hasło musi spełniać wymogi silnego hasła stawiane przez system Windows tj. min długość hasła 8 znaków + użycie wielkiej litery + użycie cyfry + użycie znaków specjalnych,
- server-role - rola serwera.
-
Serwer od teraz chwili jest już prawie gotowy do pełnienia roli kontrolera domeny Active Directory. Pozostało nam do wykonani kilka czynności zanim serwer zostanie w pełni uruchomiony.
Pierwszą czynnością jest skopiowanie pliku krb5.conf wygenerowanego podczas promowania do roli serwera AD do katalogu /etc/
Kopiowanie pliku możemy zrealizować za pomocą polecenia: cp -pRf /usr/local/samba/private/krb5.conf /etc/
Po skopiowaniu pliku należy do niego wprowadzić dane według poniższego schematu (zanim zaczniesz wprowadzać zmiany wykonaj kopię pliku - tak na wszelki wypadek) :
[libdefaults]
default_realm = pełna_nazwa_domeny
dns lookup_realm = false
dns_lookup_kdc = true
[realms]
pełna_nazwa_domeny = {
kdc = nazwa_komputera.pełna_nazwa_domeny
admin_server = nazwa_komputera.pełna_nazwa_domeny
default_domain = pełna_nazwa_domeny
}
Drugą bardzo ważną zmianą jest skonfigurowanie serwera DNS tak aby wszystkie zapytania, które serwer nie może rozwiązać przekazywał dalej. W tym celu musimy przejść do edycji pliku /usr/local/samba/etc/smb.conf i w sekcji dns forwarder wpisać adres serwera DNS (w scenariuszu został użyty ogólnie dostępny serwer Google ale nic nie stoi na przeszkodzie aby wskazać na własny serwer DNS)
Tak więc po wszystkich trudach, przyszła pora aby uruchomić serwer i sprawdzić czy działa on prawidłowo. Uruchomimy serwer w trybie jednowątkowym. By serwer zaczął działać wydaj polecenie: samba -i -M single wydanie polecenia powinno skutkować otrzymaniem ekranu podobnego jak na poniższym zrzucie.
Jak widać powyżej nie otrzymaliśmy żadnych komunikatów o błędach, serwer powinien działać prawidłowo ale (czy zawsze musi być jakieś ALE???) by mieć pewność przeprowadzimy dodatkową weryfikację.
Kluczowym zagadnieniem świadczenia przez serwer usług opartych o Active Directory jest prawidłowe działanie serwera DNS tak więc proces sprawdzania zaczniemy właśnie od serwera DNS. Do zlokalizowania kontrolerów domeny usługa Active Directory używa rekordów SRV, krytyczne są rekordy, które pozwalają na zlokalizowanie komputerów, które świadczą usługi związane z obsługą protokołu LDAP i Kerberos. Aby możliwa była lokalizacja tych hostów odpowiednie rekordy SRV muszą zostać umieszczone w konfiguracji serwera DNS. Naszym celem będzie sprawdzenie czy wyżej wymienione rekordy istnieją.
Aby dokonać sprawdzenia rekordu usługi Kerberos wydaj polecenie: host -t SRV _kerberos._udp.firma.local Jak widać poniżej rekord taki istnieje a rozwiązana nazwa wskazuje na host debian.firma.local
Aby dokonać sprawdzenia rekordu usługi LDAP wydaj polecenie: host -t SRV _ldap._tcp.firma.local Jak widać poniżej rekord taki istnieje a rozwiązana nazwa wskazuje na host debian.firma.local
Dodatkowo możemy sprawdzić rozwiązywanie nazw serwisów dostępnych w Internecie.
Sprawdzenie poprawności działania serwera LDAP możemy dokonać za pomocą polecenia: ldapsearch -x -h localhost -s base -D cn=administrator,cn=Users,dc=firma,dc=local -W
gdzie:
-x wykorzystanie protokołu Simple Authentication and Security Layer, SASL (protokół wykorzystywany celem udostępnienia zasobów katalogu w zależności od przydzielonych uprawnień)
-h zdefiniowanie adresu hosta,
-s <zasięg> parametr określa zasięg wyszukiwania. Zasięg może przybierać wartość base, one lub sub. Użyta wartość base określa wyszukiwanie podstawowe,
-D <szukana_nazwa/kontener> określa poszukiwaną nazwę, szukany kontener,
-W włączenie monitu podania hasła.
Po wydaniu polecenia będziemy poproszeni o podanie hasła administratora domeny, podanie hasła spowoduje odszukanie i podanie informacji o kontenerze.
Sprawdzanie poprawności udostępniania udziałów możemy dokonać za pomocą polecenia: /usr/local/samba/bin/smbclient -L localhost -U% Jak widać poniżej udziały zostały udostępnione prawidłowo.
I ostatnim testem jakim wykonamy jest sprawdzenie dostępności serwera Kerberos. Dostępność sprawdzimy za pomocą polecenia: kinit administrator(małpa)FIRMA.LOCAL Po wywołaniu polecenia zostaniemy poproszeni o podanie hasła administratora domeny Active Directory. Po poprawnym podaniu hasła zostaniemy poinformowani o długości ważności naszego hasła.
Instalacja kontrolera domeny przebiegła prawidłowo, nowo postawiony DC działa a przeprowadzone testy zakończyły się powodzeniem.
Przyszła pora aby do naszej domeny podłączyć pierwszego klienta. Na komputerze, który stanie się częścią domeny przed samym dołączeniem do domeny warto sprawdzić czy wszystkie ustawienia sieciowe są prawidłowe i co najważniejsze czy jest zachowana komunikacja pomiędzy komputerami.
Jak widać poniżej wszystko wydaje się być ustawione prawidłowo.
Aby dołączyć komputer do domeny w oknie System wybieramy Menedżer urządzeń i następnie na karcie Nazwa komputera klikamy na Zmień. W oknie Zmiany nazwy komputera/domeny w sekcji Członkostwo wybieramy Domena i następnie wypisujemy nazwę domeny.
Po wpisaniu nazwy domeny i kliknięciu na OK celem włączenia komputera do domeny trzeba będzie podać dane uwierzytelniające użytkownika mającego prawo do wykonania tej operacji.
Po wpisaniu hasła powinien pojawić się komunikat powitalny informujący nas o poprawnie przeprowadzonym procesie.
Po wykonaniu restartu maszyny komputer staje się pełnoprawnym członkiem domeny firma.local. Celem weryfikacji ustawień komputera i sprawdzenia funkcjonalności domeny możemy zalogować się na konto użytkownika domeny (w naszym przypadku mamy aktywne tylko jedno konto a mianowicie konto administratora domeny i te konto wykorzystamy do logowania).
Proces logowania przebiegł prawidłowo, na karcie System komputera możemy zweryfikować wprowadzone ustawienia.
Weryfikację usługi Active Directory możemy przeprowadzić za pomocą programu AdExplorer, który to program jest zaawansowaną przeglądarką a także edytorem informacji zawartych w bazie Active Directory. Aplikacja jest darmowa i jest częścią pakietu Sysinternals - http://technet.microsoft.com/pl-pl/sysinternals/bb963907.aspx
Zarządzanie naszą domeną będziemy przeprowadzać za pomocą oprogramowania Microsoftu. Wybór padł na to oprogramowanie z jednej tylko przyczyny ponieważ tak jest znacznie wygodniej. Konfigurację domeny wykonamy z już przyłączonego komputera. Jak pewnie zauważyłeś czytelniku przyłączony komputer pracuje pod kontrolą systemu Windows 7, ten system niestety nie ma żadnych narzędzi, które by pozwalały na wyżej wymienioną konfigurację. Gdybyśmy do domeny podłączyli system serwerowy np. Windows Server 2008 to sprawa by była prostsza gdyż system ten już na starcie zawiera wiele narzędzi gotowych do natychmiastowego użycia . Na szczęście sytuacja nie jest beznadziejna bo z pomocą przychodzi nam Microsoft. Możliwe jest wykorzystanie systemu Windows 7 do zdalnej administracji serwerem AD trzeba tylko zaopatrzyć się w odpowiednia narzędzia a tak naprawdę trzeba tylko pobrać i zainstalować dodatkowe funkcje systemu Windows. Narzędzia administracji zdalnej serwera dla systemu Windows umożliwiają administratorom zarządzanie usługą Active Directory z poziomu komputera zdalnego. Narzędzia te dobieramy ze względu na zainstalowany system i do naszej dyspozycji przygotowane są następujące zestawy:
-
-
- Windows 7 - http://www.microsoft.com/pl-PL/download/details.aspx?id=7887
- Windows Vista - http://www.microsoft.com/pl-PL/download/details.aspx?id=21090
- Windows XP, Server 2003 - http://www.microsoft.com/pl-PL/download/details.aspx?id=6315
-
Po pobraniu odpowiedniej wersji oprogramowania przystępujemy do instalacji. Instalacja sprowadza się do zaakceptowania postanowień licencyjnych gdzie po akceptacji następuje kopiowanie plików.
Zainstalowane narzędzia powinny być dostępne w Narzędziach administracyjnych.
Gdyby tak się nie stało (rysunek powyżej) należy przejść do Panelu Sterowania i dalej wybrać Programy i funkcje a następnie Włącz lub wyłącz funkcje systemu Windows. Z dostępnej listy wybieramy te narzędzia, które nas interesują – gałąź Narzędzia administracji zdalnej serwera (najważniejsze są te funkcje, które dotyczą usługi Active Directory).
Po wybraniu funkcji odpowiednie skróty zostaną umieszczone w Narzędziach administracyjnych.
Zainstalowane narzędzia dostępne są zarówno z poziomu narzędzi administracyjnych jak i konsoli MMC. Poniżej na rysunku pokazane narzędzia: Użytkownicy i komputery usługi Active Directory; Menedżer DNS; Zarządzanie zasadami grupy.
Tak więc spróbujmy wykorzystać zainstalowane narzędzia do przeprowadzenia typowej czynności jaką jest założenie nowego konta dla użytkownika. Po wybraniu Użytkownicy i komputery usługi Active Directory i kliknięciu kontenera Users inastępnym wybraniu z menu kontekstowego Nowy – Użytkownik możemy przeprowadzić proces dodania nowego użytkownika.
Po uzupełnieniu wszystkich danych i ustaleniu hasła (hasło przynajmniej 7 liter i hasło musi być złożone z małych liter + dużych liter + cyfr + znaków specjalnych) będzie można utworzyć konto. W przypadku nie spełnienia warunku złożoności hasła konta nie będzie można utworzyć.
Po utworzeniu konta oczywiście możliwe jest wykorzystanie konta do uzyskania dostępu do komputera. Jak widać poniżej udało nam się uzyskać dostęp do konta, które należy do Jana Kowalskiego.
Więcej informacji na temat kont użytkowników oraz grup znajdziesz w poniższych artykułach:
- http://slow7.pl/item/86-usluga-katalogowa-active-directory-zarzadzanie
- http://slow7.pl/item/85-czym-jest-grupa-w-usludze-activedirectory-tworzenie-modyfikacja-i-zarzadzanie
Oczywiście dodanie konta użytkownika do bazy AD można zrealizować bez pomocy oprogramowania Microsoftu tylko bezpośrednio na serwerze Samba.
Dodanie nowego konta można zrealizować za pomocą następującego polecenia: samba-tool user add tadnow tajnehaslo --given-name=Tadeusz --surname=Nowak Wydanie komendy powinno spowodować utworzenie konta tadnow z hasłem tajnehaslo i dodatkowo zostało zdefiniowane pole imię oraz nazwisko.
Jak można zauważyć po powyższym zrzucie, że jednak operacja dodania konta zakończyła się niepowodzeniem (stąd w apapicie powyżej słowo powinno). Nowe konto nie zostało utworzone ponieważ wybrane hasło nie spełnia wymogów silnego hasła.
Reguły tworzenia haseł sprawdzimy po wydaniu polecenia: samba-tool domain passwordsettings show Jak widać poniżej za hasło silne jest uznawane hasło przynajmniej 7 literowe i zawierające małe litery + duże litery + liczby +znaki specjalne (opcja complexity ustawiona na on).
Po wyłączeniu opcji wymuszającej utworzenie złożonego hasła za pomocą polecenia: samba-tool domain passwordsettings set --complexity=off
Ponowne wydanie komendy nakazującej utworzenie konta tadnow kończy się sukcesem.
Dodatkowe opcje związane z ustaleniem zasad tworzonych haseł możemy zdefiniować za pomocą następujących przełączników:
-
-
- Wymagania co do złożoności hasła (domyślnie on) - password complexity: --complexity=<on/off>
- Przechowywania haseł w postaci zwykłego tekstu - store plaintext passwords: --store-plaintext=<on/off>
- Wymuszaj tworzenie historii haseł - password history length: --history-length=<wartość>
- Minimalna długość hasła - minimum password length: --min-pwd-length=<wartość>
- Minimalny okres ważności hasła (dni) -minimum password age (days): --min-pwd-age=<wartość>
- Maksymalny okres ważności hasła (dni) - maximum password age (days): -max-pwd-age=<wartość>
-
Dodatkowe dostępne parametry związane z tworzeniem i definiowaniem nowego konta użytkownika pokazano na poniższym zrzucie.
Po utworzeniu konta użytkownika można przeprowadzić weryfikację wykonanych operacji poprzez wykonanie próby logowania do domeny. Logowanie zakończyło się sukcesem (rysunek niżej).
Zarządzanie sporą ilością użytkowników staje się bardzie efektywne gdy skorzystamy z zasad grup. O wiele łatwiej jest przypisać konkretne zasady do grupy w której znajdują się użytkownicy (robimy to tylko raz) niż do każdego użytkownika z osobna. Dlatego warto jest łączyć konta użytkowników o podobnych uprawnieniach i wymaganiach w grupy. Utworzenie grupy zrealizujemy za pomocą polecenia: samba-tool group add biuro --group-scope=Domain --group-type=Security Polecenie tworzy grupę biuro, grupa jest typu zabezpieczenia a zakres grupy obejmuje domenę.
Do sprawdzenia poprawności utworzenia danej grupy możemy również wykorzystać narzędzia windowsowe.
Weryfikację utworzonych użytkowników możemy dokonać wydając polecenie: samba-tool user list i analogicznie utworzonych grup: samba-tool group list
Sprawdzenie członków danej grupy wykonujemy za pomocą polecenia: samba-tool group listmembers <nazwa_grupy> Poniżej sprawdzenie członków grupy biuro oraz domain admins.
Jak widać powyżej do grupy biuro nie jest przypisany żaden użytkownik natomiast w grupie domain admins znajduje się jeden użytkownik administrator. Przypisanie użytkownika do danej grupy dokonujemy za pomocą komendy: samba-tool group addmembers <nazwa_grupy> <użykownik> tak więc aby dodać użytkownika tadnow do grupy biuro wydaj polecenie: samba-tool group addmembers biuro tadnow Po dodaniu użytkownika do grupy dokonujemy weryfikacji wykonanej operacji.
Przynależność danego użytkownika do grupy możemy również zweryfikować za pomocą przystawki Użytkownicy i komputery usługi Active Directory.
Ostatnią naszą czynnością jest włączenie funkcji translacji adresów pomiędzy siecią LAN (10.0.0.0/24) a siecią mającą dostęp do Internetu (192.168.0.0/24). Włączenie funkcji pozwoli na uzyskanie dostępu do sieci Internet dla komputerów znajdujących się po stronie sieci lokalnej.
Usługę przekazywania pakietów pomiędzy sieciami włączymy wydając następujące polecenia:
sysctl -w net.ipv4.conf.all.forwarding=1
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth1 -j MASQUERADE
iptables -A FORWARD -s 10.0.0.0/24 -i eth0 -j ACCEPT
gdzie:
-
-
- eth0 – interfejs po stronie sieci LAN,
- eth1 – interfejs z dostepem do Internetu,
- 10.0.0.0/24 0 - sieć lokalna, która ma uzyskać dostęp do Internetu.
-
Po wprowadzeniu wszystkich poleceń komputery znajdujące się w sieci 10.0.0.0/24 uzyskują dostęp do sieci Internet.
I na tym etapie chciałbym zakończyć swój wpis. Przedstawiony przeze mnie sposób konfiguracji serwera Samba 4 do korzystania z usługi Active Directory można oczywiście rozwinąć o dodatkową konfigurację, bo serwer Samba to nie tylko użytkownicy, grupy czy jednostki organizacyjne ale to też usługi współdzielenia plików czy usługi drukowania. Ale te dodatkowe usługi to już temat na kolejny wpis.
BIBLIOGRAFIA
https://git.wiki.kernel.org/index.php/GitHosting
http://ubuntuforums.org/showthread.php?t=2146198
http://crunchbang.org/forums/viewtopic.php?pid=400466
https://www.youtube.com/watch?v=OVrRK8oACBI
http://www.samba.org.pl/2013/09/active-directory-na-linuxie-kompletny.html
https://wiki.samba.org/index.php/Samba_4/OS_Requirements
http://jakilinux.org/linux/debian/instalacja-i-konfiguracja-domowego-serwera-plikow/
http://www.samba.org.pl/2013/03/samba4-jako-podstawowy-kontroler-domeny.html
http://opentodo.net/2013/01/samba4-as-ad-domain-controller-on-centos-6/
Komentarze
wszystko działa jak złoto czasem trzeba samemu po kombinować gdyż w różnych dystrybucjach proces może się troszeczkę różnić
proponuje usunąć ten artykuł, bądź poprawić.
Zawiera on wiele błędów i nie da się poprawie skonfigurować serwera
Taki mam komunikat po uruchomieniu Samba -i
Zrobiłem wszystko krok po korku....
Samba w wersji 4.6.6, debian wersja 9
-------------------
pikolo: ciężko mi powiedzieć trochę się przeliczyłem, wszystko robię sam materiały do tego działu mam tylko muszę to ogarnąć kończę teraz dwa kolejne artykuły a tak poza tym to ciągły, chroniczny brak czasu