Samba4 Verzeichnisdienst direkt im Internet freigeben (ohne Stream via rev-proxy)
Wenn Sie den Verzeichnisdienst des Samba4-Containers direkt (d.h. nicht über einen Tunnel via rev-proxy / nginx) im Internet freigeben wollen, folgen Sie bitte dieser Anleitung.
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 LDAPS Port 636 schon durch den OpenLDAP-Dienst belegt ist, wird mit nachfolgendem Shorewall-Eintrag der Port serverintern zunächst auf einen anderen Port umgemappt.
# TCP-Port 636 vom Internet-Router entgegennehmen und auf benutzerdefiniertem Port 1636 zum LXC-Container logosrv weiterleiten
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.
nano /usr/sbin/ldfirewall.custom
Kopieren Sie nun folgenden Text in die Datei.
#!/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)
# -------
# Beispiele:
# * 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="129.143.69.1 129.143.232.18 129.143.255.2 213.208.138.146"
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 mf_internet_cp -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
Info: Durch die letzte iptables-Regel wird der temporär verwendete, benutzerdefinierte TCP-Port 1636 serverintern wieder auf Port 636 zurückgemappt, bevor die Verbindung zum LXC-Container samba4-ad weitergeleitet wird. An diesen Port ist der Samba4 Verzeichnisdienst gebunden.
In der Datei /usr/sbin/ldfirewall.custom müssen nun folgende Werte an die eigene Umgebung 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. eine extern gehostete Moodle-Instanz
IP_LOGOSRV_DMZ=172.28.29.2 # <- ifconfig im logosrv aufrufen, dort die IP-Adresse der Schnittstelle "dmz" anschauen und hier in der Variable eintragen
IP_SAMBA4_SERVERNET=172.28.28.30 # <- ifconfig im samba4-ad Container aufrufen, dort die IP-Adresse der Schnittstelle "servernet" anschauen und hier in der Variable eintragen
Danach müssen Sie das Skript noch 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 im Vordergrund aus und stellen Sie sicher, dass keine Fehlermeldungen an der Konsole ausgegeben werden (Syntaxkontrolle):
bash /usr/sbin/ldfirewall.custom restart
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: