TCP 873 auf der Tunnelschnittstelle zuzulassen, schiebt rsync nicht durch OpenVPN, und es bringt das Gegenüber auch nicht dazu, das Modul zu akzeptieren. Ein Tunnel trägt eine innere Verbindung, deren Protokoll- und Zielregeln genau so bleiben, wie sie waren. Die erste Frage ist deshalb nicht, welcher Port zu öffnen ist, sondern welche Art von Verbindung rsync aufbaut. Alles Folgende setzt voraus, dass der Tunnel bereits steht und nur der innere Dienst noch unklar ist.

Entscheiden Sie, welche Verbindung rsync tatsächlich aufbaut

Das Remote-Argument im Befehl beantwortet diese Frage meist vor jeder Firewall-Änderung. Ein doppelter Doppelpunkt oder ein URL-Schema wählt den Daemon, während ein einzelner Doppelpunkt nach einem Hostnamen eine Remote-Shell wählt. Lesen Sie das Argument, das Sie tatsächlich ausführen, nicht das aus dem Dokumentationsbeispiel.

Eine ausdrückliche Remote-Shell-Option kann die Antwort erneut ändern, weil sie rsync sagt, welches Programm für den Transport zu starten ist. Lesen Sie die ganze Befehlszeile, einschließlich geerbter Wrapper-Skripte, nicht nur den Host-Teil.

Remote argumentWhat it opens
rsync://vault.corp.internal/archive/rsync daemon, normally TCP 873
vault.corp.internal::archive/rsync daemon, normally TCP 873
[email protected]:/srv/archive/Remote shell, normally SSH on its configured port

Daemon-Modus: Bindeadresse, Modul und Port

In der Daemon-Syntax benennt das Pfadsegment ein konfiguriertes Modul, kein Verzeichnis auf der Festplatte. Ein Modulpasswort wird erst geprüft, nachdem die Verbindung angenommen wurde, und das Modul kann zusätzlich schreibgeschützt oder aus der Auflistung ausgeblendet sein. Diese Reihenfolge zählt, wenn Sie eine Fehlermeldung lesen, denn eine abgelehnte Verbindung und ein abgelehntes Modul sind Fehler an zwei verschiedenen Stellen. Keine der beiden Meldungen sagt Ihnen etwas über den Tunnel selbst.

Ein eigenständiger Daemon lässt sich in seiner Konfigurationsdatei an die Tunneladresse binden, was ihn ohne jede Firewallregel von der öffentlichen Schnittstelle fernhält. Der Wert muss beim Binden des Daemons existieren, und ein socket-aktivierter oder inetd-verwalteter Listener kann ihn völlig ignorieren.

address = 10.44.0.1
port = 873
[archive]
    path = /srv/archive
    read only = yes

Testen Sie dann gegen die private Adresse statt gegen den öffentlichen Namen. Ein öffentlicher Hostname löst auf eine WAN-Adresse auf und nimmt einen anderen Pfad, selbst wenn eine Maschine auf beides antwortet.

rsync --list-only rsync://10.44.0.1/archive/

Remote-Shell-Modus: SSH trägt die Übertragung

Mit einem einzelnen Doppelpunkt startet rsync ein Remote-Shell-Programm und spricht dessen Protokoll über diesen Kanal, sodass der einzige erreichbare Dienst SSH auf dem Port ist, auf dem der Server lauscht. Der rsync-Daemon läuft nie, Port 873 ist irrelevant, und die Zugriffsentscheidung wird zu einer SSH-Kontoentscheidung. Der entfernte Pfad ist dann ein echter Dateisystempfad, den die Shell auf der Gegenseite interpretiert. Deshalb bewirkt eine Firewall-Änderung, die auf 873 zielt, für diesen Modus überhaupt nichts.

Dieses Design braucht ein autorisiertes Konto und die Prüfung des Hostschlüssels, und es erbt die eigene Authentifizierungsrichtlinie von SSH. Oft ist es die bessere Wahl, wenn die Übertragung ein nicht vertrauenswürdiges Netz überqueren muss, weil die Verschlüsselung zu einem Protokoll gehört, das dafür gebaut wurde. Ein Daemon mit Passwortabfrage ist nicht dasselbe.

Öffnen Sie nur den Pfad, den Sie gewählt haben

Sobald der Modus feststeht, erlauben Sie den einen inneren Dienst auf der einen Schnittstelle, die den Tunnel trägt. Grenzen Sie die Regel nach Schnittstelle, Quellpool und Zieladresse ein, damit eine spätere Standard-Ablehnung sie nicht stillschweigend erweitert. Prüfen Sie danach die Regelreihenfolge, denn eine erlaubende Regel weiter oben in der Kette macht die enge Regel dekorativ.

Läuft der Daemon auf einer Maschine hinter dem VPN-Gateway statt auf dem Gateway selbst, braucht das Gateway auch einen Weiterleitungspfad, und das Ziel braucht seine eigene Freigabe und Rückroute. Nur auf dem Gateway den Port zu öffnen, erzeugt eine Verbindung, die angenommen wird und dann nirgendwohin führt.

Prüfen Sie vom Client aus mit demselben Modus und Ziel, die Sie in der Produktion verwenden wollen. Eine erfolgreiche Auflistung beweist Listener, Route und Regel zusammen; eine Zeitüberschreitung deutet auf den Pfad, eine Ablehnung auf den Listener.

ufw allow in on tun0 from 10.44.0.0/24 to 10.44.0.1 port 873 proto tcp
ss -ltnp | grep 873

Ähnliche Artikel