Ältere Versionen dieses Dokuments mit Hinweisen zu früheren Samba-Versionen finden sie über die Dokument-History (Menü mit 3 Punkten rechts oben)
Voraussetzungen
Ubuntu 14.04 (getestete Versionen Ubuntu 14.04.3 und Lubuntu for Banana Pro V14.12)
samba Version >= V4.1.6
root-Rechte
Dateisystem ext4
feste IP-Adresse für die Server
- IPV6 deaktivieren
Ich habe bisher nur Anleitungen gefunden die dies ebenfalls voraussetzen.
Und es hat auch bei aktiviertem IPV6 nicht funktioniert den Port 88 zu belegen. dnsmasq deaktivieren
Synchronisierung der Systemzeit über einen ntp-Dienst
- Clientcomputer die Mitglied in der Domain werden sollen müssen den DNS-Service des Samba verwenden.
Überblick über die verwendeten Konfigurationen
Bitte nach eigenen Vorstellungen/Gegebenheiten anpassen.
In diesem Beispiel wird der Samba-Server nur in einem privaten Netzwerk betrieben.
Realm: ubuntu.fritz.box
Domain: UB
IP-Adresse 192.168.101.14
DNS-Server (für die Internetadressen) 192.168.101.1
Samba-Administrator: Administrator
Vorbedingungen prüfen, ggf. umsetzen
IPv6 deaktivieren
Ob an den Netzwerkgeräten eine IPv6-Adresse vergeben wurde prüft man wie folgt:
root@ubuntu:~# ifconfig|grep -i inet6 inet6 addr: fe80::48:6ff:fe00:ebb9/64 Scope:Link inet6 addr: ::1/128 Scope:Host inet6 addr: fe80::9a3a:16ff:fef9:6c51/64 Scope:Link root@ubuntu:~#
Wäre IPv6 deaktiviert würde "ifconfig" auch keine "inet6"-Einträge liefern
Um IPv6 zu deaktivieren legt man die Datei "/etc/sysctl.d/01-disable-ipv6.conf"
mit u.a. Inhalt an und startet das System neu.
net.ipv6.conf.all.disable_ipv6 = 1
ntp-Dienst prüfen
Für den ordnungsgemäßen Betrieb des Domaincontrollers ist es wichtig, dass alle Computer an der Domain die gleiche Zeit verwenden.
Dies erreicht man am besten in dem man einen netzbasierten Zeitserver verwendet (ntp = Network Time Protocol")
Häufig ist dies bei einer Ubuntu-Installation bereits gegeben.
Prüfung:
#Ist ntpdate installiert? root@ubuntu:~# type ntpdate ntpdate is /usr/sbin/ntpdate #Versuch eines Zeitupdates root@ubuntu:~# ntpdate -u de.pool.ntp.org 16 Jan 17:42:07 ntpdate[1784]: adjust time server 89.163.209.233 offset 0.299721 sec root@lemaker:~# #Ist die regelmäßige Zeitsynchronisation aktiv ? root@ubuntu:~# service ntp status * NTP server is running root@ubuntu:~#
dnsmasq deaktivieren
Nach der Standardinstallation bietet ubuntu ggf. bereits einen eigenen DNS-Service auf Port 53 an.
Dieser darf nicht weiter betrieben werden, weil samba diesen Service in Zukunft anbieten soll.
netstat -tlpn|grep dnsmasq ----------- tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 1241/dnsmasq
In diesem Fall muss man im Networkmanager die Einstellung "dns=dnsmasq" entfernen.
#Folgenden Eintrag auskommentieren oder entfernen #dns=dnsmasq
Danach Netzwerkservice neu starten und vorhandenen Service stoppen (Prozess killen):
/etc/init.d/networking restart killall dnsmasq
Der Port 53 sollte nun nicht mehr in der Liste der belegten Ports erscheinen.
Zur Abfrage der offenen Ports siehe ggf. auch den folgenden Artikel: http://keipke.de/wiki/display/HOWTO/Abfrage+offener+Netzwerkports
Installation / Konfiguration
Samba Pakete installieren
root@ubuntu:~# apt-get install samba smbclient libpam-smbpass Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Die folgenden zusätzlichen Pakete werden installiert: attr libaio1 libavahi-client3 libavahi-common-data libavahi-common3 libcups2 libfile-copy-recursive-perl libgmp10 libhdb9-heimdal libkdc2-heimdal libldb1 libntdb1 libsmbclient libtalloc2 libtdb1 libtevent0 libwbclient0 python-crypto python-dnspython python-ldb python-ntdb python-samba python-talloc python-tdb samba-common samba-common-bin samba-dsdb-modules samba-libs samba-vfs-modules tdb-tools update-inetd Vorgeschlagene Pakete: cups-common python-crypto-dbg python-crypto-doc bind9 bind9utils ldb-tools ntp smbldap-tools winbind heimdal-clients cifs-utils Die folgenden NEUEN Pakete werden installiert: attr libaio1 libavahi-client3 libavahi-common-data libavahi-common3 libcups2 libfile-copy-recursive-perl libgmp10 libhdb9-heimdal libkdc2-heimdal libldb1 libntdb1 libpam-smbpass libsmbclient libtalloc2 libtdb1 libtevent0 libwbclient0 python-crypto python-dnspython python-ldb python-ntdb python-samba python-talloc python-tdb samba samba-common samba-common-bin samba-dsdb-modules samba-libs samba-vfs-modules smbclient tdb-tools update-inetd 0 aktualisiert, 34 neu installiert, 0 zu entfernen und 3 nicht aktualisiert. Es müssen 8.491 kB an Archiven heruntergeladen werden. Nach dieser Operation werden 48,0 MB Plattenplatz zusätzlich benutzt. Möchten Sie fortfahren? [J/n]j
Alte Konfiguration entfernen
Die vorhandene Konfigurationsdatei entfernen / verschieben.
Es darf bei der Konfiguration der Domain keine alte Konfiguration vorhanden sein!
Auch wenn die Samba-Pakete erst vor kurzer Zeit installiert wurden ist trotzdem eine Konfiguration vorhanden und der Server gestart
root@ubuntu:~# service smbd stop smbd stop/waiting root@ubuntu:~# service nmbd stop nmbd stop/waiting root@ubuntu:~# cd /etc/samba/ root@ubuntu:/etc/samba# mv smb.conf smb.conf.sicherung root@ubuntu:/etc/samba#
Sollte die im folgenden Abschnitt beschriebene "Domain Provision" fehlschlagen muss ebenfalls vor einem neuen Versuch die smb.conf entfernt werden.
Domain provisionieren
Bitte passen sie die eingegebenen Konfigurationsdaten ihren Vorstellung und Gegebenheiten entsprechend an.
Durch den Vorgang des provisionieren wird die Domain angelegt.
Bitte beachten: Nach den Namenskonventionen müssen Realms immer in Großbuchstaben geschrieben werden und DNS-Namen in Kleinbuchstaben!
Alle Namen in der Kerberosdatenbank sind case-sensitive, d.h. es wird zwischen Groß- und Kleinbuchstaben unterschieden.
root@ubuntu:/etc/samba# samba-tool domain provision --use-rfc2307 --interactive --use-ntvfs Realm: UBUNTU.FRITZ.BOX Domain [ubuntu]: UB Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [192.168.101.1]: Administrator password: Retype password: Looking up IPv4 addresses Looking up IPv6 addresses No IPv6 address will be assigned Setting up share.ldb Setting up secrets.ldb Setting up the registry Setting up the privileges database Setting up idmap db Setting up SAM db Setting up sam.ldb partitions and settings Setting up sam.ldb rootDSE Pre-loading the Samba 4 and AD schema Adding DomainDN: DC=ubuntu,DC=fritz,DC=box Adding configuration container Setting up sam.ldb schema Setting up sam.ldb configuration data Setting up display specifiers Modifying display specifiers Adding users container Modifying users container Adding computers container Modifying computers container Setting up sam.ldb data Setting up well known security principals Setting up sam.ldb users and groups Setting up self join Adding DNS accounts Creating CN=MicrosoftDNS,CN=System,DC=ubuntu,DC=fritz,DC=box Creating DomainDnsZones and ForestDnsZones partitions Populating DomainDnsZones and ForestDnsZones partitions Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/samba/private/krb5.conf Setting up fake yp server settings Once the above files are installed, your Samba4 server will be ready to use Server Role: active directory domain controller Hostname: ubuntu NetBIOS Domain: UB DNS Domain: ubuntu.fritz.box DOMAIN SID: S-1-5-21-10513728964-4136389889-3013419481
Einen Test der Samba-Installation würde ich zu diesem Zeitpunkt nicht zwingend empfehlen, da ohne Kerberos-Service kein sinnvoller Betrieb statt finden kann.
Kerberos Pakete installieren
root@ubuntu:/etc/samba# apt-get install krb5-user krb5-admin-server krb5-kdc
Während der Installation der Pakete werden bereits einige Konfigurationsparameter abgefragt.
Bitte diese nach eigenen Vorstellungen und Gegebenheiten entsprechend anpassen.
There are no images attached to this page. |
Am Ende der Installation der Kerberos-Pakete wird versucht die Dienste "krb5-kdc" und "krb5-admin-server" zu starten.
Dies schlägt erstmal fehl. Das kann aber ignoriert werden!!
---------------
krb5-kdc (1.12+dfsg-2ubuntu5.2) wird eingerichtet ...
* Starting Kerberos KDC krb5kdc
krb5kdc: cannot initialize realm ubuntu.fritz.box - see log file for details
[fail]
Trigger für ureadahead (0.100.0-16) werden verarbeitet ...
krb5-admin-server (1.12+dfsg-2ubuntu5.2) wird eingerichtet ...
* Starting Kerberos administrative servers kadmind
kadmind: Datei oder Verzeichnis nicht gefunden while initializing, aborting
[fail]
Trigger für libc-bin (2.19-0ubuntu6.6) werden verarbeitet ...
Trigger für ureadahead (0.100.0-16) werden verarbeitet ...
root@ubuntu:~#
Danach erst mal nichts weiter unternehmen, sondern den Server neu starten.
#Server neu starten init 6
Neue Realm initialisieren
root@ubuntu:~# krb5_newrealm This script should be run on the master KDC/admin server to initialize a Kerberos realm. It will ask you to type in a master key password. This password will be used to generate a key that is stored in /etc/krb5kdc/stash. You should try to remember this password, but it is much more important that it be a strong password than that it be remembered. However, if you lose the password and /etc/krb5kdc/stash, you cannot decrypt your Kerberos database. Loading random data Initializing database '/var/lib/krb5kdc/principal' for realm 'ubuntu.fritz.box', master key name 'K/M@ubuntu.fritz.box' You will be prompted for the database Master Password. It is important that you NOT FORGET this password. Enter KDC database master key: Re-enter KDC database master key to verify: * Starting Kerberos KDC krb5kdc [ OK ] * Starting Kerberos administrative servers kadmind [ OK ] Now that your realm is set up you may wish to create an administrative principal using the addprinc subcommand of the kadmin.local program. Then, this principal can be added to /etc/krb5kdc/kadm5.acl so that you can use the kadmin program on other computers. Kerberos admin principals usually belong to a single user and end in /admin. For example, if jruser is a Kerberos administrator, then in addition to the normal jruser principal, a jruser/admin principal should be created. Don't forget to set up DNS information so your clients can find your KDC and admin servers. Doing so is documented in the administration guide. root@ubuntu:~#
Nach der Installation
Nameservice anpassen
#vorhandenen Nameserver anzeigen root@ubuntu:~# cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 192.168.101.1 search fritz.box root@ubuntu:~# #neuen Nameserver setzen auf den eigenen Server (localhost) #Damit wird der von Samba bereitgestellte Nameservice genutzt. root@ubuntu:~# echo nameserver 127.0.0.1|resolvconf -a eth0 root@ubuntu:~# cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 127.0.0.1 search fritz.box root@ubuntu:~#
Domainaccount Administrator anlegen
root@ubuntu:/etc/samba# kadmin.local Authenticating as principal root/admin@ubuntu.fritz.box with password. kadmin.local: addprinc Administrator WARNING: no policy specified for Administrator@ubuntu.fritz.box; defaulting to no policy Enter password for principal "Administrator@ubuntu.fritz.box": Re-enter password for principal "Administrator@ubuntu.fritz.box": Principal "Administrator@ubuntu.fritz.box" created. kadmin.local: exit root@ubuntu:/etc/samba#
Adminrechte für den Benutzer Administrator einrichten
Administrator/admin *
und danach noch den admin-service neu starten:
root@ubuntu:/etc/samba# service krb5-admin-server restart * Restarting Kerberos administrative servers kadmind [ OK ] root@ubuntu:/etc/samba#
Abschluß / Test
Kerberos-Installation testen
root@ubuntu:~# kinit Administrator Password for Administrator@ubuntu.fritz.box: root@ubuntu:~# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: Administrator@ubuntu.fritz.box Valid starting Expires Service principal 17.01.2016 20:04:13 18.01.2016 06:04:13 krbtgt/ubuntu.fritz.box@ubuntu.fritz.box renew until 18.01.2016 20:04:07 root@ubuntu:~#
Serverdienste starten
Aktuelles Problem:
Samba ist in der Lage ebenfalls einen "KDC"-Dienst anzubieten.
Hierzu muss in der Konfigurationsdatei /etc/samba/smb.conf unter [global] und "server services" u.a. der Eintrag "kdc" vorhanden sein.
In diesem Fall benötigt man den Service "krb5-kdc" nicht.
Auch der Dienst "krb5-admin-server" wird in der Regel nicht benötigt.
Man sollte also zunächst versuchen auf diese beiden Dienst zu verzichten und nur den Service "samba-ad-dc" starten.
Wenn man krb5-kdc bzw. krb5-admin-server starten möchte sollte der Start der Dienste in einer bestimmten Reihenfolge durchgeführt werden, da sonst ggf. Konflikte entstehen bei der Verwendung der Ports.
Nach meinen Tests ist folgende Reihenfolge funktionsfähig:
- samba bzw. samba-ad-dc
- krb5-kdc
- krb5-admin-server
Statt den Service "samba" zu starten kann man auch den Service "samba-ad-ac" verwenden.
root@ubuntu:~# service krb5-admin-server stop * Stopping Kerberos administrative servers kadmind [ OK ] root@ubuntu:~# service krb5-kdc stop * Stopping Kerberos KDC krb5kdc root@ubuntu:~# service samba-ad-dc status samba-ad-dc stop/waiting root@ubuntu:~# service samba-ad-dc start samba-ad-dc start/running, process 3489 root@ubuntu:~# service samba-ad-dc status samba-ad-dc start/running, process 3489 root@ubuntu:~# service krb5-kdc start * Starting Kerberos KDC krb5kdc [ OK ] root@ubuntu:~# service krb5-admin-server start * Starting Kerberos administrative servers kadmind [ OK ] root@ubuntu:~#
DNS Namensauflöung testen
Hierbei geht es nicht darum die Auflösung des Namens ubuntu.fritz.box zu testen (diesen Namen haben wir als realm verwendet).
Sondern einige "Unter"-Bezeichnung, wie _ldap._tcp. bzw. _kerberos.udp.
Sollte diese Auflösung funktionieren und die u.a. Antworten erscheinen ist das ein Anzeichen dafür, dass als Namensauflösung der samba-Service verwendet wird.
Ein vorhandener anderer Router kennt diese Namen nicht.
Man sollte aber auch testen, ob z.B. Internetadressen (wie t-online.de oder ubuntu.com) aufgelöst werden.
Damit wäre geklärt, dass alle Anforderungen an den Samba-Service die dieser nicht auflösen kann an die oben angegebene "DNS forwarder IP address" weitergeleitet werden.
root@ubuntu:~# host -t SRV _ldap._tcp.ubuntu.fritz.box _ldap._tcp.ubuntu.fritz.box has SRV record 0 100 389 ubuntu.ubuntu.fritz.box. root@ubuntu:~# host -t SRV _kerberos._udp.ubuntu.fritz.box _kerberos._udp.ubuntu.fritz.box has SRV record 0 100 88 ubuntu.ubuntu.fritz.box. root@ubuntu:~# host -t A ubuntu.fritz.box ubuntu.fritz.box has address 192.168.101.14 root@ubuntu:~#
Samba-Installation testen
Alle Shares auflisten (Test 1)
root@ubuntu:~# smbclient -L localhost -U% Domain=[UB] OS=[Unix] Server=[Samba 4.1.6-Ubuntu] Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service Domain=[UB] OS=[Unix] Server=[Samba 4.1.6-Ubuntu] Server Comment --------- ------- Workgroup Master --------- ------- root@ubuntu:~#
Authentifizierung testen (Test 2)
root@ubuntu:~# smbclient //localhost/netlogon -UAdministrator -c 'ls' Enter Administrator's password: Domain=[UB] OS=[Unix] Server=[Samba 4.1.6-Ubuntu] . D 0 Sun Jan 17 17:29:13 2016 .. D 0 Sun Jan 17 17:29:20 2016 59942 blocks of size 524288. 54112 blocks available root@ubuntu:~#
Portbelegung testen:
Bitte beachten: Die u.a. Portbelegung zeigt die belegten Ports wenn der Service "samba-ad-dc" gestartet ist und alle Funktionen übernommen hat
Siehe Abschnitt "Serverdienste starten".
Wenn die Dienste "krb5-admin-server" und "krb5-kdc" gestartet sind werden möglicherweise einige Ports von diesen Diensten belegt, die sonst von Samba belegt werden.
root@ubuntu:~# netstat -tulpn Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:464 0.0.0.0:* LISTEN 6445/samba tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 6451/samba tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 710/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 8006/cupsd tcp 0 0 0.0.0.0:88 0.0.0.0:* LISTEN 6445/samba tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1055/master tcp 0 0 0.0.0.0:636 0.0.0.0:* LISTEN 6443/samba tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 6452/samba tcp 0 0 0.0.0.0:1024 0.0.0.0:* LISTEN 6440/samba tcp 0 0 0.0.0.0:3268 0.0.0.0:* LISTEN 6443/samba tcp 0 0 0.0.0.0:3269 0.0.0.0:* LISTEN 6443/samba tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 6443/samba tcp 0 0 0.0.0.0:135 0.0.0.0:* LISTEN 6440/samba tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1011/mysqld tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 6452/samba tcp6 0 0 :::80 :::* LISTEN 1217/apache2 tcp6 0 0 :::22 :::* LISTEN 710/sshd tcp6 0 0 :::25 :::* LISTEN 1055/master udp 0 0 0.0.0.0:23293 0.0.0.0:* 902/dhclient udp 0 0 192.168.101.14:389 0.0.0.0:* 6444/samba udp 0 0 0.0.0.0:389 0.0.0.0:* 6444/samba udp 0 0 192.168.101.14:464 0.0.0.0:* 6445/samba udp 0 0 0.0.0.0:464 0.0.0.0:* 6445/samba udp 0 0 0.0.0.0:53 0.0.0.0:* 6451/samba udp 0 0 0.0.0.0:68 0.0.0.0:* 902/dhclient udp 0 0 192.168.101.14:88 0.0.0.0:* 6445/samba udp 0 0 0.0.0.0:88 0.0.0.0:* 6445/samba udp 0 0 192.168.101.14:123 0.0.0.0:* 1681/ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 1681/ntpd udp 0 0 0.0.0.0:123 0.0.0.0:* 1681/ntpd udp 0 0 192.168.101.14:137 0.0.0.0:* 6441/samba udp 0 0 192.168.101.255:137 0.0.0.0:* 6441/samba udp 0 0 0.0.0.0:137 0.0.0.0:* 6441/samba udp 0 0 192.168.101.14:138 0.0.0.0:* 6441/samba udp 0 0 192.168.101.255:138 0.0.0.0:* 6441/samba udp 0 0 0.0.0.0:138 0.0.0.0:* 6441/samba udp6 0 0 :::46857 :::* 902/dhclient udp6 0 0 :::123 :::* 1681/ntpd root@ubuntu:~#
------------
Betrieb / Wartung / Administration
Hinzufügen Clientcomputer
There are no images attached to this page. |
Kerberos-Principals
Bitte beachten: Kerberos-Pricipals können sich am Kerberosservice anmelden und haben dort Berechtigungen, sind aber keine Domainbenutzer.
Hinzufügen/Löschen/Ändern Kerberos-Principals
root@ubuntu:~# kadmin.local Authenticating as principal root/admin@ubuntu.fritz.box with password. kadmin.local: addprinc klaus WARNING: no policy specified for klaus@ubuntu.fritz.box; defaulting to no policy Enter password for principal "klaus@ubuntu.fritz.box": Re-enter password for principal "klaus@ubuntu.fritz.box": Principal "klaus@ubuntu.fritz.box" created. kadmin.local: exit root@ubuntu:~#
root@ubuntu:~# kadmin.local Authenticating as principal root/admin@ubuntu.fritz.box with password. kadmin.local: delprinc klaus Are you sure you want to delete the principal "klaus@ubuntu.fritz.box"? (yes/no): yes Principal "klaus@ubuntu.fritz.box" deleted. Make sure that you have removed this principal from all ACLs before reusing. kadmin.local: exit root@ubuntu:~#
Kennwortänderung Kerberos-Principals
root@ubuntu:~# kadmin.local Authenticating as principal root/admin@ubuntu.fritz.box with password. kadmin.local: cpw klaus Enter password for principal "klaus@ubuntu.fritz.box": Re-enter password for principal "klaus@ubuntu.fritz.box": Password for "klaus@ubuntu.fritz.box" changed. kadmin.local: exit root@ubuntu:~#
Domainbenutzer
Anlegen/Löschen und Ändern eines Domainbenutzers.
Domainbenutzer können sich an der Domain anmelden und können z.B. zur Anmeldung an einem Windowssystem verwendet werden.
#Domainbenutzer sind Sambabenutzer und deren Administration erfolgt mit dem Programm "smbpasswd" #Beispiele: #Anlegen eines Benutzers smbpasswd -a BENUTZERNAME #Löschen eines Benutzers smbpasswd -x BENUTZERNAME #Deaktivieren eines Benutzers smbpasswd -d BENUTZERNAME #Aktivieren eines Benutzers smbpasswd -e BENUTZERNAME #Kennwortänderung eines Benutzers smbpasswd BENUTZERNAME
Häufig gestellte Fragen (FAQ)
Weitere Links zum Thema
https://wiki.ubuntuusers.de/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/
Dokumentation der Optionen in der Datei smb.conf:
https://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html