Skip to content

AD autentisering för CIFS med Samba 3

Detta tog faktiskt ett par dagar att få rätt och Samba dokumentationen var näst intill värdelös.

Målet: Dela ut en katalog över CIFS (SMB) från en Linux server med Samba 3.6 och autentisera användarna med Active Directory.

För artikelns skull gjorde jag detta på en Debian Wheezy server.

Några vanliga termer som kan förekomma i texten

| AD-server | dc02.domain.local |
| -------------------------------
| AD-Admin | Administrator |
| AD-klient med Samba | webb01.domain.local | | AD domän | domain.local |
| AD arbetsgrupp | domain |

Installera paket

sudo apt-get install samba winbind cifs-utils krb5-user openntpd

Konfigurera DNS

Se till att alla namn inblandade, speciellt dina domänkontrollanter (DC-servrar) kan lösas upp utan problem. Det kan se ut så här i ''/etc/resolv.conf''.

search domain.local
domain domain.local
nameserver dc02.domain.local

Se till att din maskin kan lösa upp sitt eget namn, men även att namnet finns i namnservern (dc02.domain.local). Så ''/etc/hosts'' kan se ut så här.

127.0.0.1       localhost
10.221.111.51   webb01.domain.local webb01

Testa DNS

Se till att alla relevanta maskiner kan lösas upp, t.ex. pinga dc02.domain.local.

Konfigurera NTP

Jag hade inga problem med tid mot Debians egna serverpool, men det kan vara bra att använda domänkontrollanten som tidserver. Redigera ''/etc/openntpd/ntpd.conf'' och ändra raderna längst ner i filen till att se ut så här.

# sync to a single server
server dc02.domain.local

# use a random selection of 8 public stratum 2 servers
# see http://twiki.ntp.org/bin/view/Servers/NTPPoolServers
#servers pool.ntp.org

# Choose servers announced from Debian NTP Pool
#servers 0.debian.pool.ntp.org
#servers 1.debian.pool.ntp.org
#servers 2.debian.pool.ntp.org
#servers 3.debian.pool.ntp.org

Starta om NTP-tjänsten.

sudo service openntpd restart

Konfigurera Kerberos

''/etc/krb5.conf'' kan se ut så här.

[libdefaults]

default_realm = DOMAIN.LOCAL ticket_lifetime = 24000 clock-skew = 300

[realms]

DOMAIN.LOCAL = { kdc = DC02.DOMAIN.LOCAL:88 admin_server = DC02.DOMAIN.LOCAL:464 default_domain = DOMAIN.LOCAL }

[domain_realm]

.DOMAIN.LOCAL = DC02.DOMAIN.LOCAL DOMAIN.LOCAL = DC02.DOMAIN.LOCAL

Testa Kerberos

Omedelbart ska man kunna begära ett autentiseringsbevis (//token//) från vår domänkontrollant med ''kinit''-kommandot.

sudo kinit Administrator@DOMAIN.LOCAL

Lägg märke till versalerna både i kommandot och i ''/etc/krb5.conf'' från tidigare. Otroligt nog är de faktiskt viktiga.

Kontrollera att servern godkände lösenordet med ''klist''.

sudo klist

Det går även att börja om genom att radera autentiseringsbeviset med ''kdestroy''.

Konfigurera Samba

Jag ska vara ärlig, jag vet inte mycket av vad som pågår här. Jag vet bara att det fungerar och ska försöka förklara de viktiga raderna så gott som möjligt.

[global]

workgroup = DOMAIN realm = DOMAIN.LOCAL server string = %h server security = ads allow trusted domains = no local master = no domain master = no interfaces = eth0 10.221.111.51/24 bind interfaces only = yes log level = 0 auth:10 smb:10 log file = /var/log/samba/log.%m max log size = 1000 #syslog only = no syslog = 0 load printers = no printing = bsd printcap name = /etc/printcap # Bug #8676 workaround idmap config * : backend = tdb idmap config * : range = 2000-4999 idmap config DOMAIN : backend = rid idmap config DOMAIN : range = 10000-49999 winbind use default domain = yes winbind enum users = yes winbind enum groups = yes encrypt passwords = yes valid users = @"Domain Users"

[webbrot]

comment = Kundens Share path = /var/www/webbsida.domain.local valid users = @"Domain Users" writable = yes force user = kunden force group = kunden force directory mode = 0775 force create mode = 0664

På Windows 2008 och upp så är början av domänen arbetsgruppen (//WORKGROUP//).

Starta alltid om Samba efter ändringar. Jag har även plockat upp en vana att starta winbind efter samba, dock vet jag inte riktigt varför än.

sudo service winbind stop
sudo service samba restart && sudo service winbind start

Testa Samba och gå med i AD domän

Vi kan testa att Samba fungerar genom att be den gå med i AD domänen som en medlem. Detta kommandot ska, om det fungerar, skapa en ny dator i OU-trädet på DC-servern. Den ska ligga under ''CN=webb01,OU=Computers,DC=DOMAIN,DC=LOCAL'', namnet är domännamnet av servern så DNS måste verkligen fungera.

sudo net ads join -U Administrator
Enter Administrator's password:

Status på medlemskapet kan testas med samma kommando och andra argument.

sudo net ads testjoin
Join is OK

Testa Winbind

Winbind ska kunna lista alla användare i domänen, annars är något fel.

sudo wbinfo -i stemid

Det kommandot kommer till exempel visa information för användaren stemid. Ett annat argument som ''wbinfo -u'' kommer lista alla användare och ''wbinfo -g'' listar alla grupper.

Det går även att se informationen via NSS med kommandot ''getent passwd -s winbind''.

Konfigurera NSS

NSS är en sorts namntjänst i Linux som kan slå upp mycket mer än bara namn, bland annat lösenord.

Redigera filen ''/etc/nsswitch.conf'' och ändra följande rader, jag visar bara de tre rader som behöver ändras.

passwd:         compat winbind
group:          compat winbind
shadow:         compat

hosts:          files dns wins

Jag har lagt till winbind som en tjänst för att slå upp lösenord, och wins som en tjänst för att slå upp värdnamn (//hostnames//).

Testa NSS

När detta är gjort så kommer ''getent passwd'' kommandot från tidigare även lista AD-användare som standard. Likaså kommer ''getent group'' lista alla grupper i AD, efter det har listat lokala grupper på Linux-servern.


Last update: March 29, 2020