Samba 3.x an Active Directory Domäne anbinden

… es war mal wieder einfacher als gedacht und trotzdem Bastelei… Wenn man Samba an eine Windows Active Directory Domäne anbinden will ist das eigentlich einfach – hängt aber an der ein oder anderen Stelle.

Hiermit möchte ich eine schnelle Lösung für die mir bekannten Probleme liefern.

Man benötigt Samba, Krb5 oder Heimdal, NTP und Winbind um diese Aufgabe meistern zu können. Da man für diese Aufhabe Kerberos benötig und für Kerberos eine möglichst exakte Zeit auf den betroffenen Maschinen notwendig ist kann man nicht auf die Synchronisieren der Zeit mit NTP verzichten.

Unter debian installiert man die notwendigen Pakete so:

apt-get install samba winbind krb5-config krb5-user ntpd

Kerberos konfiguriert man in der Datei /etc/krb5.conf:

[libdefaults]
        default_realm = MEINEDOMAIN.LOCAL
        clockskew = 300
        dns_lookup_realm = true
        dns_lookup_kdc = true
        ticket_lifetime = 24h
        krb4_config = /etc/krb.conf
        krb4_realms = /etc/krb.realms
        kdc_timesync = 1
        ccache_type = 4
        forwardable = true
        proxiable = true

[realms]
        MEINEDOMAIN.LOCAL = {
                kdc = dc.meinedomain.local:88
                admin_server = dc.meinedomain.local
                default_domain = MEINEDOMAIN.LOCAL
        }

[domain_realm]
        .meinedomain.local = MEINEDOMAIN.LOCAL
        meinedomain.local = MEINEDOMAIN.LOCAL
        .meinedomain = MEINEDOMAIN.LOCAL

[login]
        krb4_convert = true
        krb4_get_tickets = false

[appdefaults]
        pam = {
                ticket_lifetime = 1d
                renew_lifetime = 1d
                forwardable = true
                proxiable = false
                retain_after_close = false
                minimum_uid = 0
                debug = false
        }

In dieser Datei muss man unbedingt auf die Groß und Kleinschreibung achten. Es funktioniert nur so wie hier angegeben! Allerdings sollte man MEINEDOMAIN.LOCAL und meinedomain durch die eigene Domäne ersetzten.

Wenn man diese Datei angelegt hat kann man schon gegen Kerberos authentifizieren:

root@opsi:/etc/pam.d# kinit -V Administrator
Password for Administrator@MEINEDOMAIN.LOCAL:
Authenticated to Kerberos v5

root@opsi:/etc/pam.d# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Administrator@MEINEDOMAIN.LOCAL

Valid starting     Expires            Service principal
06/10/12 01:47:34  06/10/12 11:47:39  krbtgt/MEINEDOMAIN.LOCAL@MEINEDOMAIN.LOCAL
        renew until 06/11/12 01:47:34

Sollte es hier bereits Probleme geben muss man darauf achten, dass die Namensauflösung funktionert. Man muss den DC als DNS Server auf dem Linuxrechner angeben oder in der Datei /etc/hosts alle notwendigen hosts eintragen.

Achtung – ein Fallstrick kann hier und auch für winbind die Konfiguration der Namensauflösung werden. Es muss unbedingt eine dns Abfrage erfolgen – dafür muss die Datei /etc/nsswitch.conf so aussehen:

# winbind verwenden für die Benutzerdaten
passwd:         compat winbind
group:          compat winbind
shadow:         compat winbind

hosts:          files dns mdns4
# so wird kein dns abgefragt - das funktioniert nicht!
#hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Wenn die Konfiguration korrekt ist kann man per DNS die Kerberos Server erfragen:

root@opsi:~# host -t srv _kerberos._tcp.meinedomain.local
_kerberos._tcp.meinedomain.local has SRV record 0 100 88 dc.meinedomain.local.
_kerberos._tcp.meinedomain.local has SRV record 0 100 88 bdc.meinedomain.local.

Wenn man diese Schritte erfolgreich durchgeführt hat kann man mit Samba beginnen. Eine einfache Konfiguration würde so aussehen:

[global]
        workgroup = MEINEDOMAIN
        realm = MEINEDOMAIN.LOCAL
        server string = %h server
        security = ADS
        obey pam restrictions = Yes
        password server = *
        pam password change = Yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        unix password sync = Yes
        syslog = 0
        log file = /var/log/samba/log.%m
        max log size = 1000
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        local master = No
        domain master = No
        preferred master = No
        # Adressen der WINS Server
        wins server = 192.168.1.1, 192.168.1.2
        panic action = /usr/share/samba/panic-action %d
        idmap backend = rid
        idmap uid = 10000-20000
        idmap gid = 10000-20000
        template shell = /bin/nologin
        template homedir = /home/%U
        winbind enum users = Yes
        winbind enum groups = Yes
        winbind use default domain = Yes
        winbind nss info = rfc2307
        winbind separator = /
        client use spnego = yes
        client ntlmv2 auth = yes
        restrict anonymous = 2
        os level = 0
        # Verschlüsselung notwendig?
        #client ldap sasl wrapping = seal

# .... Weitere Einstellungen wie gewünscht - nur der General Bereich ist für die Konfiguration entscheidend

Nachdem die Konfiguration angepasst wurde muss man Samba und Winbind neustarten. Dann kann man mit diesen Befehlen der Domäne beitreten und sich die Informationen der Domäne anzeigen lassen:

# Der Domäne beitreten
net ads join -U Administrator

# hat der Join geklappt
net ads join

# Informationen über die Domäne anzeigen
net ads info

# Authentifizierung testen
wbinfo -a Benutzer%Passwort

Sollte man hier bei „net ads info“ eine Meldung bekommen, dass die Uhrzeit des DC nicht gelesen werden kann, dann muss man sich um die DNS Auflösung kümmern – wie oben beschrieben muss die Auflösung klappen und die /etc/nsswitch.conf angepasst werden!

Ein paar weitere Testmöglichkeiten hat man mit wbinfo:

# Online Status der Domänen
wbinfo --online-status

# Benutzer anzeigen
wbinfo -u

# Gruppen anzeigen
wbinfo -g

# Aktuellen DC anzeigen
wbinfo --getdcname MEINEDOMAIN

# Status der Domäne/der Vertrauensstellung
wbinfo -t

 

 

Share

Ein Gedanke zu „Samba 3.x an Active Directory Domäne anbinden

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

ZAsaK

Bitte geben Sie den Text vor: