Wiki-Quellcode von Samba4 Verzeichnisdienst direkt im Internet freigeben (ohne Stream via rev-proxy)
Version 19.1 von jonasmayer@sbede am 2022/05/23 10:36
Verstecke letzte Bearbeiter
author | version | line-number | content |
---|---|---|---|
![]() |
15.1 | 1 | (% class="box warningmessage" %) |
2 | ((( | ||
3 | (% style="font-size:16px" %)__**Wichtig**__(%%) | ||
4 | Diese Art der Verzeichnisdienst-Freigabe wird von SBE nicht empfohlen, da hier die Freischaltung ohne zertifikatsgesicherte Transportverschlüsselung erfolgt. | ||
5 | Wir empfehlen Ihnen stattdessen, dieser [[Anleitung >>doc:Main.LD Server.Puppet-Version.1\.3\.22\.14.Geändert\: LDAP Admin-Benutzer und ReadOnly-Benutzer im logosrv.WebHome||target="_blank"]]zu folgen, um den LDAP-Dienst auf sichere Art mit Lets' Encrypt SSL-Zertifikaten freizugeben! | ||
6 | ))) | ||
![]() |
6.1 | 7 | |
8 | |||
![]() |
10.1 | 9 | ---- |
![]() |
2.1 | 10 | |
![]() |
4.1 | 11 | |
![]() |
18.1 | 12 | (% style="color:#000000" %)Wenn Sie den Verzeichnisdienst des Samba4-Containers direkt (d.h. nicht über einen Tunnel via (% style="color:#2980b9" %)**rev-proxy**(% style="color:#000000" %) / (% style="color:#27ae60" %)**nginx**(% style="color:#000000" %)) im Internet freigeben wollen, folgen Sie bitte dieser Anleitung. |
![]() |
4.1 | 13 | |
![]() |
10.1 | 14 | {{toc start="4" numbered="true"/}} |
![]() |
4.1 | 15 | |
![]() |
10.1 | 16 | |
17 | ==== (% style="color:#000000" %)Schritte im Container (% style="color:#2980b9" %)ldhost(%%) ==== | ||
18 | |||
19 | |||
20 | (% style="color:#000000" %)Öffnen Sie die die Datei {{box}}/etc/nano/shorewall/rules{{/box}} mit einem Editor Ihrer Wahl und fügen Sie am Anfang folgende Zeile hinzu. | ||
![]() |
16.1 | 21 | 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. |
![]() |
4.1 | 22 | |
![]() |
2.1 | 23 | (% class="box" %) |
24 | ((( | ||
![]() |
18.1 | 25 | (% style="color:#16a085" %)### TCP-Port 636 vom Internet-Router entgegennehmen und auf benutzerdefiniertem Port 1636 zum LXC-Container logosrv weiterleiten##(%%) |
26 | (% style="color:#000000" %)##DNAT ext dmz:172.28.29.2:1636 tcp 636## | ||
![]() |
2.1 | 27 | ))) |
28 | |||
![]() |
10.1 | 29 | (% style="color:#000000" %)Im Anschluß daran starten Sie mit folgendem Befehl die Shorewall neu: |
![]() |
4.1 | 30 | |
![]() |
2.1 | 31 | (% class="box" %) |
32 | ((( | ||
33 | (% style="color:#000000" %)##shorewall restart## | ||
34 | ))) | ||
35 | |||
36 | |||
![]() |
10.1 | 37 | ==== (% style="color:#000000" %)Schritte im Container (% style="color:#2980b9" %)logosrv(%%) ==== |
![]() |
2.1 | 38 | |
![]() |
4.1 | 39 | |
![]() |
10.1 | 40 | (% style="color:#000000" %)Erstellen Sie die Datei {{box}}/usr/sbin/ldfirewall.custom{{/box}} mit einem Editor Ihrer Wahl. |
![]() |
4.1 | 41 | |
![]() |
2.1 | 42 | (% class="box" %) |
43 | ((( | ||
44 | (% style="color:#000000" %)##nano /usr/sbin/ldfirewall.custom## | ||
45 | ))) | ||
46 | |||
47 | |||
![]() |
16.1 | 48 | (% style="color:#000000" %)Kopieren Sie nun folgenden Text in die Datei. |
![]() |
4.1 | 49 | |
![]() |
16.1 | 50 | (% class="box infomessage" %) |
51 | ((( | ||
![]() |
18.1 | 52 | (% style="color:#000000; font-size:12px" %)**Hinweis:** Sollte die Datei schon mit anderweitigen Regeln existieren, bearbeiten Sie stattdessen den Inhalt in geeigneter Form und fügen Sie die relevanten Regeln darin ein. Es handelt sich um die rot & orange markierten Zeilen. |
![]() |
16.1 | 53 | ))) |
54 | |||
55 | |||
![]() |
2.1 | 56 | (% class="box" %) |
57 | ((( | ||
58 | (% style="color:#000000" %)###!/bin/bash | ||
59 | \\DRYRUN=no | ||
60 | VERBOSE=no | ||
61 | ipt=do_iptables | ||
62 | PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/bin:/usr/local/bin/support" | ||
63 | \\do_iptables() | ||
64 | { | ||
65 | run iptables "$@" | ||
66 | } | ||
67 | run() | ||
68 | { | ||
![]() |
18.1 | 69 | if [ "$VERBOSE" = "yes" ]; then |
70 | echo "$@" | ||
71 | fi | ||
72 | if [ "$DRYRUN" = "no" ]; then | ||
73 | "$@" | ||
74 | fi | ||
![]() |
2.1 | 75 | } |
76 | \\case "$1" in | ||
![]() |
18.1 | 77 | start|restart)##(%%) |
78 | (% style="color:#16a085" %)## # Zugelassene externe IP-Adressen (falls mehrere IP-Adressen nötig, diese per Leerzeichen trennen) | ||
79 | # ~-~-~-~-~-~-- | ||
80 | # Beispiele: | ||
81 | # * BelWue-Moodle-Server IPs: 129.143.69.1 129.143.232.18 129.143.255.2 | ||
![]() |
19.1 | 82 | # * Webuntis Server in Österreich IP: 213.208.138.146##(%%) |
83 | (% style="color:#e74c3c" %)## SOURCEIP="129.143.69.1 129.143.232.18 129.143.255.2 213.208.138.146" | ||
![]() |
18.1 | 84 | IP_LOGOSRV_DMZ=172.28.29.2 |
![]() |
19.1 | 85 | IP_SAMBA4_SERVERNET=172.28.28.30##(%%) |
![]() |
18.1 | 86 | \\(% style="color:#e67e22" %)## for ipaddr in $SOURCEIP |
87 | do | ||
88 | echo -n "Adding custom rules to allow ldaps connections (tcp/1636) from host '${ipaddr}' and redirect to 'samba4-ad:636'... " | ||
89 | $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 | ||
90 | $ipt -t mangle -I mf_internet_cp -p tcp -s ${ipaddr} -d ${IP_LOGOSRV_DMZ} ~-~-dport 1636 -g mark_from_internet_allowed | ||
91 | echo "OK" | ||
92 | done##(%%) | ||
93 | (% style="color:#000000" %)## ;; | ||
![]() |
2.1 | 94 | stop) |
95 | ;; | ||
96 | *) | ||
![]() |
18.1 | 97 | echo "Benutzung: $0 {start|restart}" |
98 | exit 1 | ||
![]() |
2.1 | 99 | ;; |
![]() |
18.1 | 100 | esac## |
![]() |
2.1 | 101 | ))) |
102 | |||
![]() |
18.1 | 103 | (% style="color:#000000; font-size:12px" %)**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. |
![]() |
2.1 | 104 | |
![]() |
4.1 | 105 | |
![]() |
16.1 | 106 | (% style="color:#000000" %)In der Datei {{box}}/usr/sbin/ldfirewall.custom{{/box}} müssen nun folgende Werte an die eigene Umgebung angepasst werden: |
107 | |||
![]() |
2.1 | 108 | (% class="box" %) |
109 | ((( | ||
![]() |
16.1 | 110 | (% style="color:#e74c3c" %)##SOURCEIP="87.130.28.26"##(% style="color:#16a085" %)## # <- Ö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##(%%) |
111 | (% style="color:#e74c3c" %)##IP_LOGOSRV_DMZ=172.28.29.2##(% style="color:#16a085" %)## # <- ifconfig im logosrv aufrufen, dort die IP-Adresse der Schnittstelle "dmz" anschauen und hier in der Variable eintragen##(%%) | ||
112 | (% style="color:#e74c3c" %)##IP_SAMBA4_SERVERNET=172.28.28.30##(% style="color:#16a085" %)## # <- ifconfig im samba4-ad Container aufrufen, dort die IP-Adresse der Schnittstelle "servernet" anschauen und hier in der Variable eintragen## | ||
![]() |
2.1 | 113 | ))) |
114 | |||
115 | |||
![]() |
16.1 | 116 | (% style="color:#000000" %)Danach müssen Sie das Skript noch ausführbar machen, damit sie im Zuge eines Firewall-Restarts automatisch verarbeitet wird: |
![]() |
4.1 | 117 | |
![]() |
2.1 | 118 | (% class="box" %) |
119 | ((( | ||
![]() |
10.1 | 120 | (% style="color:#000000" %)##chmod +x /usr/sbin/ldfirewall.custom## |
![]() |
2.1 | 121 | ))) |
122 | |||
![]() |
4.1 | 123 | |
![]() |
16.1 | 124 | (% style="color:#000000" %)Führen Sie nun das Skript einmal im Vordergrund aus und stellen Sie sicher, dass keine Fehlermeldungen an der Konsole ausgegeben werden (Syntaxkontrolle): |
![]() |
4.1 | 125 | |
![]() |
2.1 | 126 | (% class="box" %) |
127 | ((( | ||
![]() |
16.1 | 128 | (% style="color:#000000" %)##bash /usr/sbin/ldfirewall.custom restart## |
![]() |
4.1 | 129 | ))) |
130 | |||
131 | |||
![]() |
19.1 | 132 | (% style="color:#000000" %)Im Anschluß daran starten Sie die Firewall komplett neu, um die Regeln zu laden: |
![]() |
4.1 | 133 | |
134 | (% class="box" %) | ||
135 | ((( | ||
![]() |
19.1 | 136 | (% style="color:#000000" %)##ldfirewall restart## |
![]() |
2.1 | 137 | ))) |
138 | |||
139 | |||
![]() |
19.1 | 140 | ==== (% style="color:#000000" %)Schritte am vorgeschalteten Router für den Internetzugriff(%%) ==== |
![]() |
4.1 | 141 | |
142 | |||
![]() |
18.1 | 143 | (% style="color:#000000" %)Damit die Freigabe des Samba4-LDAP im Internet funktioniert, ist es außerdem noch wichtig, die Portfreigabe (TCP-Port 636) am vorgeschalteten Router zum LogoDIDACT Server hinzuzufügen: |
![]() |
4.1 | 144 | |
![]() |
18.1 | 145 | [[image:1653294111427-417.png||class="img-thumbnail"]] |
![]() |
10.1 | 146 | |
147 | |||
148 | (% class="box successmessage" %) | ||
149 | ((( | ||
![]() |
11.1 | 150 | (% style="color:#000000" %)**__Hinweise:__**(%%) |
151 | (% style="color:#000000" %)- Bei der IP-Adresse 192.168.1.254 in der Abbildung handelt es sich um die Schnittstelle p_extern des LogoDIDACT Servers(%%) | ||
![]() |
18.1 | 152 | - (% style="color:#000000" %)Neben dem Port 636 (LDAP-Freigabe wie im Artikel hier beschrieben) werden hier in der Abbildung außerdem noch die Ports 80+443 zur Freischaltung von LogoDIDACT Webdiensten durch den Router weitergeleitet |
![]() |
10.1 | 153 | ))) |