Thema Samba-Dateiserver: Zentralisierte Freigaben mit LDAP und Virenscan
Abschnitt 1: Installation und LDAP-Vorbereitung
Dieser Samba-Server wird als **Standalone-Server** betrieben, wobei die Authentifizierung von Benutzern und Gruppen vollständig über einen zentralen **LDAP-Server** (z.B. OpenLDAP) erfolgt.
1. Installation der Pakete:
Für dieses Setup benötigen wir Samba, die LDAP-Bibliotheken zur Authentifizierung und die **ClamAV VFS-Module** für den Virenscan.
apt install samba samba-common samba-client libnss-ldap libpam-ldap \
samba-vfs-modules clamav-daemon -y
2. Samba Konfigurationsdatei (smb.conf):
Wir arbeiten mit der Datei **/etc/samba/smb.conf**. Die folgenden Abschnitte zeigen die kritischen **LDAP- und ID-Mapping-Einstellungen**.
Abschnitt 2: Globale LDAP- und Sicherheitskonfiguration
Die Konfiguration stellt sicher, dass Samba über **SSL (LDAPS)** auf den LDAP-Server zugreift und das **RID-Backend** für das ID-Mapping verwendet, um Unix-IDs eindeutig zuzuordnen.
[global]
# WICHTIG: Ersetzen Sie 'ihredomain.com' durch Ihre Domain
workgroup = FIRMENNAME
passdb backend = ldapsam:ldaps://ldap.ihredomain.com
ldap suffix = dc=ihredomain,dc=com
ldap admin dn = cn=admin,dc=ihredomain,dc=com
ldap passwd sync = yes
ldap user suffix = ou=samba
ldap group suffix = ou=samba
server role = standalone server
# Neues ID-Mapping mit dem rid-Backend (für LDAP-Integration empfohlen)
idmap backend = rid
idmap rid:range = 10000-20000
idmap rid:unix_nss_mode = yes
idmap rid:unix_nss_mode:rid_base = 200000
log level = 3
# Hinweis: LDAP SSL ist hier aktiviert ('ldaps://'), die Option 'ldap ssl = no' \
# kann in modernen Setups entfernt werden, wenn SSL aktiv genutzt wird.
ldap ssl = no
security = user
#### Debugging/Accounting ####
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
panic action = /usr/share/samba/panic-action %d
Abschnitt 3: Freigaben (Shares) und VFS-Module
Die Freigaben nutzen erweiterte **VFS-Module** (**Virtual File System**-Module) für den **Virenschutz (ClamAV)** und einen **Papierkorb (Recycle Bin)**.
1. Home-Verzeichnisse ([homes])
Jeder Benutzer erhält eine private Freigabe zu seinem Home-Verzeichnis, das automatisch über /home/%S bereitgestellt wird. Der Virenfilter ist aktiv.
[homes]
comment = Home Directories
browseable = no
path = /home/%S
writeable = yes
create mode = 0640
directory mode = 0740
read only = no
valid users = @smb-user
force user = %S
force group = smb-user
# VFS-Module für ACLs und Virenschutz
vfs objects = acl_xattr virusfilter
virusfilter:scanner = clamav
virusfilter:infected file action = quarantine
# aktiviert Beschränkungen für die Laufwerksgröße je Benutzer
# quota = user
# quota limit = 5G
2. Allgemeine Freigabe ([beispiel2]) mit Papierkorb
Diese Freigabe beinhaltet das **Recycle Bin** Modul, das gelöschte Dateien für zwei Tage (recycle:maxage = 2d) in einem versteckten Ordner speichert.
[beispiel2]
path = /home/sharing
guest ok = no
writeable = yes
browseable = yes
read only = no
create mask = 0774
directory mask = 0774
# Zugriff für explizite Benutzer und LDAP-Gruppe
valid users = @familie benutzer1 benutzer2 @ldap
# Papierkorb-Modul
vfs objects = recycle acl_xattr virusfilter
recycle:repository = .recycle/%U
recycle:keeptree = yes
recycle:versions = yes
recycle:maxsize = 0
recycle:exclude = *.tmp, *.temp, *.bak, ~$*
recycle:exclude_dir = .tmp, .cache
recycle:touch = yes
recycle:perms = 0600
recycle:directory_perms = 0700
recycle:noversions = *.pst
recycle:mode = DELETED_FILES
recycle:maxage = 2d
# Virusfilter Modul
virusfilter:scanner = clamav
virusfilter:infected file action = quarantine
Abschnitt 4: ClamAV-Integration und Überwachung
Damit der **Virusfilter** zuverlässig funktioniert, muss ClamAV aktuell gehalten werden.
1. Manueller Virenscan (Beispiel-Skript):
Das Skript aktualisiert die Virendatenbank und scannt das gesamte /home/-Verzeichnis. Infizierte Dateien werden in den Ordner /home/quarantaene verschoben.
root@mail-srv:~# cat /root/scan-av.sh
clamscan -ir /home/ --move=/home/quarantaene
freshclam
2. Automatisierter Cron-Job:
Um das Skript täglich um 01:00 Uhr auszuführen und die Virendefinitionen zu aktualisieren, verwenden Sie diesen Cron-Job (in der root-Crontab):
0 1 * * * /root/scan-av.sh > /dev/null 2>&1
3. Abschließende Schritte:
Nach dem Speichern der smb.conf die Syntax prüfen und die Dienste neustarten:
testparm /etc/samba/smb.conf
systemctl restart smbd nmbd