samba4 direkt im Internet freigeben (ohne Stream im rev-proxy)

Version 12.1 von jonasmayer@sbede am 2022/05/19 19:20

Wichtig
Diese Art der Verzeichnisdienst-Freigabe wird von SBE nicht empfohlen, da hier die Freischaltung ohne zertifikatsgesicherte Transportverschlüsselung erfolgt.
Wir empfehlen Ihnen stattdessen, dieser 
Anleitung zu folgen, um den LDAP-Dienst auf sichere Art mit Lets' Encrypt SSL-Zertifikaten freizugeben!


Wenn Sie den Verzeichnisdienst des Samba4-Containers direkt (und nicht über einen Tunnel via rev-proxy / nginx) im Internet freigeben wollen, folgen Sie bitte dieser Anleitung.

  1. Schritte im Container ldhost
  2. Schritte im Container logosrv

Schritte im Container ldhost

Öffnen Sie die die Datei /etc/nano/shorewall/rules mit einem Editor Ihrer Wahl und fügen Sie am Anfang folgende Zeile hinzu.
Da der Port 636  intern schon vergeben ist wird mit diesem Eintrag der Port intern auf einen anderen Port umgemappt.

DNAT        ext        dmz:172.28.29.2:1636   tcp        636

Im Anschluß daran starten Sie mit folgendem Befehl die Shorewall neu:

shorewall restart

Schritte im Container logosrv

Erstellen Sie die Datei /usr/sbin/ldfirewall.custom mit einem Editor Ihrer Wahl.
Sollte die Datei schon mit anderweitigen Regeln existieren, bearbeiten Sie stattdessen den Inhalt in geeigneter Form.

nano /usr/sbin/ldfirewall.custom

Kopieren Sie nun folgenden Text in die Datei. Wichtig sollte sich schon Inhalt in der Datei befinden fügen sie folgenden Text hinzu.
Wie Sie dem Abschnitt unter ipaddr sehen können wird, hier der Port auf 636 zurückgemappt:

#!/bin/bash

DRYRUN=no
VERBOSE=no
ipt=do_iptables
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/bin:/usr/local/bin/support"

do_iptables()
{
  run iptables "$@"
}
run()
{
 if [ "$VERBOSE" = "yes" ]; then
   echo "$@"
 fi
 if [ "$DRYRUN" = "no" ]; then
   "$@"
 fi
}

case "$1" in
  start|restart)
   # Zugelassene externe IP-Adressen
   # (falls mehrere IP-Adressen nötig, diese per Leerzeichen trennen)
   # -------
   # - BelWue-Moodle-Server IPs: 129.143.69.1 129.143.232.18 129.143.255.2
   # - Webuntis Server in Österreich IP: 213.208.138.146
  
 SOURCEIP="213.23.76.144 213.23.76.123 195.34.83.83 87.130.28.26"
   IP_LOGOSRV_DMZ=172.28.29.2
   IP_SAMBA4_SERVERNET=172.28.28.30


   for ipaddr in $SOURCEIP
   do
     echo -n "Adding custom rules to allow ldaps connections (tcp/1636) from host '${ipaddr}' and redirect to 'samba4-ad:636'... "
     $ipt -t nat -I PREROUTING -i dmz -p tcp -s ${ipaddr} -d ${IP_LOGOSRV_DMZ} --dport 1636 -j DNAT --to-destination ${IP_SAMBA4_SERVERNET}:636
     $ipt -t mangle -I mark_from_internet_check_ports -p tcp -s ${ipaddr} -d ${IP_LOGOSRV_DMZ} --dport 1636 -g mark_from_internet_allowed
     echo "OK"
   done
    ;;
  stop)
    ;;
  *)
   echo "Benutzung: $0 {start|restart}"
   exit 1
    ;;
esac

Hier müssen nun folgende Werte angepasst werden:

SOURCEIP="87.130.28.26"               #  <- Öffentliche IP(s), von denen aus Verbindungen erlaubt werden. In der Regel handelt es sich um IPv4-Adressen von Webservern, z.B. ein extern gehostete Moodle-Instanz
IP_LOGOSRV_DMZ=172.28.29.2            #  <- ifconfig im logosrv und IP-Adresse der Schnittstelle "dmz" anschauen
IP_SAMBA4_SERVERNET=172.28.28.30      #  <- ifconfig im Samba4-ad Container und IP-Adresse der Schnittstelle "servernet" anschauen

Danach müssen Sie das Skript ausführbar machen, damit sie im Zuge eines Firewall-Restarts automatisch verarbeitet wird:

chmod +x /usr/sbin/ldfirewall.custom

Führen Sie nun das Skript einmal aus und stellen Sie sicher, dass keine Fehlermeldungen an der Konsole ausgegeben werden (Syntaxkontrolle):

bash /usr/sbin/ldfirewall.custom

Im nächsten Schritt öffnen Sie mit einem Editor Ihrer Wahl die internet.conf

nano /etc/logodidact/internet.conf

Hier fügen Sie nun den Port 1636 im Abschnitt FromInternetAllowTCP hinzu

FromInternetAllowTCP 1636

Im Anschluß daran starten Sie die Firewall neu

ldfirewall restart

Damit die Freigabe des Samba4-LDAP funktioniert, ist es außerdem noch wichtig, die Portfreigabe (TCP-Port 636) am vorgeschalteten Router nicht zu vergessen:

Port_Router.png

Hinweise:
- Bei der IP-Adresse 192.168.1.254 in der Abbildung handelt es sich um die Schnittstelle p_extern des LogoDIDACT Servers
Neben dem Port 636 (LDAP-Freigabe als Thema dieses Artikels) werden hier außerdem noch die Ports 80+443 zur Freischaltung von Webdiensten durch den Router weitergeleitet