Opisywana tutaj konfiguracja jest niezalecaną przez twórców Samby. Dopuszczają oni jej użycie przy małych domenach gdzie nie ma innych serwerów plików ale mimo to zastrzegają, że mogą wystąpić różne dziwne i niespodziewane sytuacje.
Chcemy uruchomić kontroler domeny oparty o Sambę. Nazwa domenty w tym przypadku to domana.lan, REALM w Kerberos to DOMENA.LAN. Trzeba pamiętać o tym, że końcówka domeny .local może narobić problemów. Nazwa netbios środowiska dla systemów Windows to DOMENA. Samba będzie serwerem DNS dla komputerów w sieci lokalnej a zapytania na które nie będzie w stanie odpowiedzieć przekaże do innego DNSa (forwarding).
Sambę instalujemy na świeżym systemie Debian, który nie będzie pełnił żadnych dodatkowych funkcji poza tym, że będzie również serwerem DNS dla komputerów będących członkami domeny. Warto ustawić serwer DHCP w sieci lokalnej tak by jako domyślny adres DNS podawał klientom adres kontrolera domeny a jako dodatkowy jakiś inny by sieć jakkolwiek działał w przypadku kiedy kontroler domeny ma "przerwę".
Ustawić stałe IP w /etc/network/interfaces
allow-hotplug enp1s0
iface enp1s0 inet static
address 192.168.123.1
netmask 255.255.255.0
gateway 192.168.123.254
Musimy do IP przypisać domenę i nazwę hosta w pliku /etc/hosts:
127.0.0.1 localhost
192.168.123.1 dc.domena.lan dc
Do poprawnego działania Kerberos wykorzystuje czas systemowy, potrzebujemy zatem by na wszystkich komputerach w domenie był ten sam czas. Do tego celu wykorzystać możemy NTP.
apt install ntp
Tworzymy plik /etc/ntp.conf o zawartości
server 127.0.0.1
fudge 127.0.0.1 stratum 10
server 0.pool.ntp.org iburst prefer
server 1.pool.ntp.org iburst prefer
driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp
ntpsigndsocket /var/lib/samba/ntp_signed/
restrict default kod nomodify notrap nopeer mssntp
restrict 127.0.0.1
restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
restrict 1.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
Restartujemy ntp:
service ntp restart
Na klientach Windows synchronizujemy czas wydając polecenie:
net time /set
Komputery z Debianem będą wymagać ntpdate.
Synchronizacja odbywa się po wydaniu polecenia ntpdate dc.domena.lan
Instalujemy niezbędne oprogramowanie:
apt -y install samba krb5-config winbind smbclient
Na pytania odnośnie konfiguracji Kerberos odpowiadamy:
domena: domena.lan
REALM: DOMENA.LAN
Kerberos server for realm: dc.domena.lan
Administrative server for realm: dc.domena.lan
Usuwamy domyślną konfigurację SAMBA, jeżeli plik smb.conf będzie istniał to konfiguracja nie powiedzie się.
mv /etc/samba/smb.conf /etc/samba/smb.conf.back
Uruchamiamy provisioning:
samba-tool domain provision --use-rfc2307 --interactive
Na pytania odpowiadamy w następujący sposób:
Realm: DOMENA.LAN



Domain: DOMENA (nazwa dla netbios - maksymalnie 15 znaków)
Server role: dc
DNS backend: SAMBA_INTERNAL (następnie wskazujemy nadrzędny serwer DNS)
Przenosimy wygenerowany plik krb5.conf we właściwe miejsce:
cp /var/lib/samba/private/krb5.conf /etc/
Konfigurujemy autostart właściwych usług Samby:
systemctl stop smbd nmbd winbind
systemctl disable smbd nmbd winbind
systemctl unmask samba-ad-dc
systemctl start samba-ad-dc
systemctl enable samba-ad-dc
Weryfikujemy czy Samba działa:
smbclient -L localhost -U%
samba-tool domain level show
W pliku /etc/resolv.conf dodajemy wpisy wskazujace na nowy DNS:
search domena.lan
nameserver 192.168.123.1
Winbindd pozwala na przypisywanie uprawnień do katalogów i plików na serwerze zgodnie z danymi zawartymi w kontrolerze domeny. Dzięki temu nazwy użytkowników i grupy pedą wiodczny przy korzystaniu z np.: ls i będzie się dało korzystać z chown i chgrp.
W pliku /etc/nsswitch.conf edytujemy pierwsze linie dodając w nich na drugiej pozycji winbind. Mogą wyglądać tak:
passwd: files winbind
group: files winbind
lub tak:
passwd: files winbind systemd
group: files winbind systemd
UWAGA - nie używać takich samych nazw użytkowników w /etc/passwd jak w domenie.
Przy udostępnianiu zasobu w smb.conf trzeba podać parametr:
vfs objects = dfs_samba4 acl_xattr recycle
jeżeli ta sama instancja jest kontrolerem domeny. Uprawnienia do katalogów będzie można nadawać tylko przez Sambę używając komputerów, które montują zasób.
Sprawdzamy czy poniższe polecenia zwrócą adres nasszego serwera SAMBA obsługującego domenę Windows:
host -t A nasza.domena
host -t A dc.nasza.domena
host -t SRV _kerberos._udp.nasza.domena
host -t SRV _ldap._tcp.nasza.domena
Jeżeli nie otrzymujemy zwrotek wskazujących na nasz serwer trzeba poprawić konfigurację DNS w naszej sieci.
Weryfikujemy czy serwer SAMBA jest widoczny w sieci i jakie zasoby są dostępne w naszej sieci:
# smbclient -L nasza.domena -N
Istotnym jest by w tym polecenie domenę wpisać WIELKIMI LITERAMI
kinit administrator@NASZA.DOMENA
Sprawdzamy przyznane uprawnienia:
# klist
Teraz mamy już w domenie poprawnie działającego użytkownika administrator dla Windows i możemy zacząć pracować z RSA (Remote Server Administration) na Windows. Ewentualnie możnan dodać dodatkowego użytkownika z pomoca serwera SAMBA:
# samba-tool user create tmpuser
Użytkowników możemy zweryfikować wydając polecenie:
# samba-tool user list
W moim przypadku DNSem jest mikrotik, poniżej konfiguracja jaką należy dodać by DNS działał poprawnie dla domeny Windows. W przypadku posługiwania się innym DNSem należy go skonfigurować tak by w taki sam sposób rozwiązywał nazwy w domenie.
/ip dns static add name=ns.nasza.domena address=adres_mt
/ip dns static add name=nazwa_hosta.nasza.domena address=192.168.x.y
/ip dns static add name=nasza.domena address=192.168.x.y
/ip dns static add name=nasza.domena ns=ns.nasza.domena
/ip dns static add name=_gc._tcp.nasza.domena srv-port=3268 srv-target=nazwa_hosta.nasza.domena srv-weight=100
/ip dns static add name=_kerberos._tcp.dc._msdcs.nasza.domena srv-port=88 srv-target=nazwa_hosta.nasza.domena srv-weight=100
/ip dns static add name=_kerberos._tcp.nasza.domena srv-port=88 srv-target=nazwa_hosta.nasza.domena srv-weight=100
/ip dns static add name=_kerberos._udp.nasza.domena srv-port=88 srv-target=nazwa_hosta.nasza.domena srv-weight=100
/ip dns static add name=_kpasswd._tcp.nasza.domena srv-port=464 srv-target=nazwa_hosta.nasza.domena srv-weight=100
/ip dns static add name=_kpasswd._udp.nasza.domena srv-port=464 srv-target=nazwa_hosta.nasza.domena srv-weight=100
/ip dns static add name=_ldap._tcp.dc._msdcs.nasza.domena srv-port=389 srv-target=nazwa_hosta.nasza.domena srv-weight=100
/ip dns static add name=_ldap._tcp.DomainDnsZones.nasza.domena srv-port=389 srv-target=nazwa_hosta.nasza.domena srv-weight=100
/ip dns static add name=_ldap._tcp.DomainGUID.domains._msdcs.nasza.domena srv-port=389 srv-target=nazwa_hosta.nasza.domena srv-weight=100
/ip dns static add name=_ldap._tcp.gc._msdcs.nasza.domena srv-port=389 srv-target=nazwa_hosta.nasza.domena srv-weight=100
/ip dns static add name=_ldap._tcp.nasza.domena srv-port=389 srv-target=nazwa_hosta.nasza.domena srv-weight=100
/ip dns static add name=_ldap._tcp.pdc._msdcs.nasza.domena srv-port=389 srv-target=nazwa_hosta.nasza.domena srv-weight=100
/ip dns static add name=_msdcs.nasza.domena ns=ns.nasza.domena
/ip dns static add name=DomainDnsZones.nasza.domena address=192.168.x.y
/ip dns static add name=DsaGUID._msdcs.nasza.domena cname=nazwa_hosta.nasza.domena
/ip dns static add name=ForestDnsZones.nasza.domena address=192.168.x.y
nazwa_hosta to nazwa naszego kontrolera domeny a 192.168.x.y to jego adres IP należy jeszcze mieć na uwadze by podać w pierwszym wpisie adres naszego mikrotika.
Po zalogowaniu się na komputrze z Windows (w wersji Pro lub wyższej) ustawiamy nazwę hosta dla tego komputera. Następnie uruchamiamy PowerShella z prawami administatora i wydajemy polecenie:
Add-Computer -DomainName "nasza.domena" -Restart
W nowym okienku podajemy login i hasło administratora domeny.
Jeżeli zajdzie potrzeba usunięcia komputera z domeny, która już nie istnieje to w wierszu poleceń należy wydać jako administrator polecenie:
netdom remove computername /Domain:domain /UserD:user /PasswordD:* /Force
Natychmiastowe odświeżenie konfiguracji z domeny uzyskamy po wydaniu polecania: gpupdate /Force
To polecenie pozwala też łatwo zweryfikować czy mamy łączność z kontrolerem domeny.
Microsoft strasznie pokombinował z instalacją narzędzi do zdalnej administracji od Windows 10 w wersji 1809. Na tą chwilę najłatwiej zainstalować RSAT używając PowerShella z uprawnieniami administratora wydając polecenie:
Get-WindowsCapability -Name RSAT* -Online | where State -EQ NotPresent | Add-WindowsCapability –Online
Ewentualnie należy wybrać opcję Dodaj funkcję opcjonalną a następnie dodać narzędzia administracji zdalnej:
Główne zadania administracyjne wykonujemy za pomocą aplikacji nazwanej Użytkownicy i komputery usługi Active Directory. Warto na wstępie wybrać w tej aplikacji Widok/Opcje zaawansowane.
Zarządzanie politykami domeny możemy wywołać przez Zarządzaj zasadami grupy po kliknięciu prawym przyciskiem w Obiekty zasad grup dla danej domeny i wybraniu Edytuj.

samba-tool user setpassword Administrator
samba-tool domain passwordsettings show
samba-tool domain passwordsettings set --complexity=on \
--store-plaintext=off \
--history-length=24 \
--min-pwd-length=7 \
--min-pwd-age=0 \
--max-pwd-age=180 \
--account-lockout-duration=30 \
--account-lockout-threshold=10 \
--reset-account-lockout-after=30
ipconfig /flushdns
gpupdate /force