Script zum Aktivieren/Deaktivieren einer Port Forwarding Rule?

Es gibt 10 Antworten in diesem Thema, welches 4.186 mal aufgerufen wurde. Der letzte Beitrag () ist von Tuxtom007.

  • Hallo Leute,


    ich habe eine Synology, die regelmäßig ihr Let's Encrypt Zertifikat erneuert. Dazu muss Port 80 & 443 geöffnet werden, die aber standardmäßig dicht sind.

    Da ich bisher mit einer Fritz!Box gearbeitet habe, hatte ich auf der Synology ein Bash Script laufen, welches folgenden Ablauf hatte:

    1. Script zum Aktivieren einer vorhandenen PortForwarding Rule für Port 80
    2. Befehl zum Deaktivieren der Synology Firewall
    3. Renew Befehl für das Zertifikat
    4. Befehl zum Aktivieren der Synology Firewall
    5. Script zum Deaktivieren der PortForwarding Rule für Port 80
    6. Script zum automatischen Kopieren des Zertifikats von der Synology auf die Fritz!Box

    Da die Fritz!Box jetzt nur noch als Telefonanlage hinter der UDM Pro hängt, fallen diese Schritte zum Großteil weg.


    Zum Aktualisieren des Zertifikats auf der Synology muss ich aber innerhalb des Netzwerks einen Befehl ausführen auf der UDM Pro, der auf der UDM Pro eine vorhandene PortForwarding Rule aktiviert und später deaktiviert.


    Ist sowas möglich? Das Ganze soll danach in einem BashScript laufen, welches von der Synology ausgeführt wird.


    Viele Grüße

    Max

    Vigor 165 > UDM Pro > USW-48-POE + USW-Flex + 3x USW-Flex-Mini > 2x UAP-AC-Pro + 1x UAP-AC-M + 1x UAP-FlexHD

  • Bin mir nicht sicher ob es mit einer UDM geht.

    Außer UPnP, was sich dann aber auf alle Geräte bezieht, oder kann man eingrenzen?

    Die UDM basiert nicht auf EdgeOS daher bin ich mir nicht sicher:

    Geh mal über SSH rein und Versuche:

    Code
    configure

    Wenn er den Befehl nimmt könnte es gehen.

    • Offizieller Beitrag

    In einem anderen Script (zum USG) habe ich folgendes gefunden:

    Code
     WR="/opt/vyatta/sbin/vyatta-cfg-cmd-wrapper"
     #Validating the existing config, and comparing it to retrieved remote IP
     $WR begin
     Validate=$($WR show vpn ipsec site-to-site peer $RemoteIP)

    Vielleicht könnte man das ja auch hier nutzen. Nur eine Idee...

    • Offizieller Beitrag

    Scheint mir eher das es die IP einer Site2Site Verbindung anzeigt??

    Es ging mir bei meiner Ausführung nur um die Art und Weise, wie das in diesem Fall (ja, VPN :winking_face_with_tongue:) gelöst wurde. Vielleicht kann man dieses Vorgehen auch für den Fall von maxwellpity verwenden.

    Das geht ein wenig in Deine Richtung.

  • Vielen Dank für die Antworten.


    BlackSpy configure funktioniert leider nicht.

    An SSH hatte ich auch schon gedacht, das lässt sich in Bash ja auch ganz gut machen.


    Was ich nur benötige, ist der SSH/CLI Befehl für die UDM Pro zum aktivieren der vorhandenen Port Weiterleitung.

    Vigor 165 > UDM Pro > USW-48-POE + USW-Flex + 3x USW-Flex-Mini > 2x UAP-AC-Pro + 1x UAP-AC-M + 1x UAP-FlexHD

  • Tach,


    auf der UDM(Pro) läuft als Firewall "iptables", per ssh-Kommando lassen sich das denke ich recht problemlos Firewall-Rules aktivieren / deaktivieren


    Beispiel:

    ssh <user>@<server> -t "<befehl 1> && <befehl 2> && <befehl 3>"


    ssh root@<IP-Adresse> -t "iptables --list-rules"

    zeigt alle vorhanden Firewall-Regeln

    (ich habe meinen ssh-Key auf der UDMPro abgelegt, so brauch ich kein Passwort)


    iptable ist gut dokumentiert, man muss sich damit etwas beschäftigen um die Struktur zu verstehen.

    CHAIN sind z.b. die einzelnen Firewall-Bereiche in der WebGUI ( WAN_IN, LAN_OUT, usw- )


    Ich würde die Regel über die webGUI erstellen und dann auf Commandline auslesen, das hast du zumindest schon mal die Struktur des iptables-kommando, dann kannst du ein "insert" oder "delete" in die entsprechende CHAIN machen.


    Ich hab auf die schnelle nicht gefunden, ob man so eine Regel ggf. deaktivieren / aktivieren kann.


    Viel Spass dabei, kannst dann ja mal einen Wiki-Artikel erstellen. :smiling_face:

  • @Tuxtom007 Ich habe in der Liste folgende Kommandos gefunden und konnte auch über die Kommandozeile manuell Zeilen löschen und hinzufügen.

    Auf die Weboberfläche wirkt sich diese Änderung dann nicht aus, da wird der zuletzt dort gewählte Status weiter angezeigt.


    Problem ist jetzt, dass der Port 80 nach dem manuellen Hinzufügen zu iptables nicht erreichbar ist. Bei der Weboberfläche gehts sofort.


    Entsprechend -D für Zeile löschen oder -A für Zeile hinzufügen:

    Code
    iptables -D UBIOS_WAN_PF_IN_USER -d 10.0.0.10/32 -p tcp -m tcp --dport 80 -m comment --comment 00000000001234567890 -j RETURN
    iptables -A UBIOS_WAN_PF_IN_USER -d 10.0.0.10/32 -p tcp -m tcp --dport 80 -m comment --comment 00000000001234567890 -j RETURN
    
    iptables -D UBIOS_WAN_PF_OUT_USER -s 10.0.0.10/32 -p tcp -m tcp --sport 80 -m comment --comment 00000000001234567890 -j RETURN
    iptables -A UBIOS_WAN_PF_OUT_USER -s 10.0.0.10/32 -p tcp -m tcp --sport 80 -m comment --comment 00000000001234567890 -j RETURN
    
    iptables -D UBIOS_WAN_IN_USER -d 10.0.0.10/32 -p tcp -m tcp --dport 80 -m comment --comment 00000000009876543210 -j RETURN
    iptables -A UBIOS_WAN_IN_USER -d 10.0.0.10/32 -p tcp -m tcp --dport 80 -m comment --comment 00000000009876543210 -j RETURN

    Vigor 165 > UDM Pro > USW-48-POE + USW-Flex + 3x USW-Flex-Mini > 2x UAP-AC-Pro + 1x UAP-AC-M + 1x UAP-FlexHD

  • Es könnte sein, das man nach zufügen von Rules den iptables-service neu starten muss - bin da aber gerade nicht sicher - vermuttlich wird die WebGUI da machen


    Hab schon längere kein iptables mehr gemacht - aber wie gesagt, bin nicht sicher. Vielleicht ist die Unifi-Plattform auch so verbogen, das dies alles über die WebGUI laufen muss.

  • Da iptables kein Service ist, klappt das leider nicht.

    Problem wird meines Erachtens sein, dass ich zwar die Regeln angelegt habt, aber keine Provisionierung forciert wurde.


    Und dafür gibts leider kein CLI command...

    Vigor 165 > UDM Pro > USW-48-POE + USW-Flex + 3x USW-Flex-Mini > 2x UAP-AC-Pro + 1x UAP-AC-M + 1x UAP-FlexHD

  • Da iptables kein Service ist, klappt das leider nicht.

    Problem wird meines Erachtens sein, dass ich zwar die Regeln angelegt habt, aber keine Provisionierung forciert wurde.


    Und dafür gibts leider kein CLI command...

    Stimmt, ist kein service - zumindest auf der UDM nicht.


    iptable normalerweise als service unter systemd gestartet.


    Normalerweise werden neue Rule in /etc/sysconfig/iptables bzw. /etc/sysconfig/ip6tables geschrieben und dann mit einem iptables.init save bootfest gemacht und somit aktiviert.

    Aber Unifi hat das Betriebssystem der UDM ziemlich verbogen.


    Ich kann mir gut vorstellen, das die Regel nur über die WebGUI erstellt werden können udn im Hintergrund dann ein Prozess die Bootfest macht / aktiviert.



    Mein sshkey ist auch nach jedem reboot weg, auch lästig.