So sichern Sie Rsync


Dienstprogramme im Unternehmen

Moderne Unternehmensrechenzentren sind eine komplexe Mischung aus verschiedenen Technologien, die auf das Erreichen von Geschäftszielen ausgerichtet sind. Einige dieser Technologien sind teure, namhafte Geschäftslösungen, aber andere sind einfache Tools und Dienstprogramme, die Prozesse erleichtern. Linux-Systemadministratoren verwenden rsync (Remote Synchronisation) seit zwei Jahrzehnten, um Dateien zu verschieben und zu spiegeln, obwohl Versionen davon jetzt auf fast jeder Plattform laufen. Seine leichte Bauweise, der geringe Platzbedarf und die Benutzerfreundlichkeit machen ihn zu einer guten Wahl für einfache Dateikopiervorgänge. Derselbe Vermögenswert ist jedoch auch eine Belastung für viele Versorgungsunternehmen: Sie sind rein auf Funktionalität ausgelegt und berücksichtigen möglicherweise nicht automatisch potenzielle Risiken für Unternehmensdaten. Um rsync erfolgreich im Unternehmen einzusetzen, müssen die Daten, die über rsync übertragen werden, vor versehentlicher Offenlegung geschützt werden.

Über Rsync

Einer der großen Vorteile von rsync gegenüber anderen ähnlichen Dienstprogrammen besteht darin, dass es in der Lage ist, nur das Delta zwischen Systemen zu übertragen. Wenn Sie z. B. rsync auf einem Dateiserver einrichten und einen Backup-Server als Spiegelserver verbinden, wird bei der ersten Synchronisierung jede Datei im angegebenen Pfad verschoben. Nach dieser ersten Synchronisierung verschiebt rsync nur die Änderungen, wobei der Spiegel mit dem primären Server identisch bleibt und der Netzwerkverkehr minimiert wird. Diese Art des Verfahrens zum Kopieren von Dateien ist in den meisten Unternehmen sehr verbreitet und ohne Prozessrichtlinien, Techniken und Dienstprogramme variieren stark zwischen den einzelnen Administratoren.

Trotz seiner kompakten Bauweise verfügt rsync über Sicherheitsoptionen, die die übertragenen Daten schützen können. Aber wie viele abgespeckte Tools ruft es sie nicht standardmäßig auf, und die Last liegt daher bei der Person, die es einrichtet, um es sicher zu konfigurieren.

Warum es wichtig ist

Offenlegung von Daten

Dienstprogramme sind datenunabhängig. Sie unterscheiden nicht zwischen sensibel und unempfindlich, und sie unterscheiden nicht zwischen gefährlich und harmlos. Sie tun nur, was Sie ihnen sagen, und im Falle der meisten Linux-basierten Dienstprogramme nur genau das, was Sie ihnen sagen. Wenn rsync von Unternehmen, Behörden und anderen großen Organisationen verwendet wird, können die zu übertragenden Dateien äußerst vertrauliche Informationen enthalten. Obwohl rsync diese Dateien auf die gleiche Weise verschieben kann, wie es der Fall wäre, wenn sie Kauderwelsch enthalten würden, kann das Risiko für das Unternehmen groß sein, wenn diese Informationen durchsickern.

Die Offenlegung von Daten ist zu einem bedeutenden Geschäftsrisiko geworden, und Unternehmen, die ein solches Leck erlebt haben, mussten auch die damit verbundenen finanziellen und Reputationsschäden erleiden. Rsync kann ein leistungsstarkes Dienstprogramm für die einfache Dateispiegelung oder -übertragung sein, aber das Maß an Sorgfalt, das bei der Konfiguration angewendet wird, sollte der Sensibilität der übertragenen Daten angemessen sein.

Wichtige Konfigurationen

Rsync im Vergleich zu Rsyncd

Bevor wir uns mit den Konfigurationen selbst befassen, ist es wichtig zu beachten, dass es zwei verschiedene Möglichkeiten gibt, rsync zu verwenden. Eines davon ist ein Befehlszeilenprogramm, bei dem alle Details als Argumentvariablen übergeben werden, dies ist rsync. Die daemonisierte Version von rsync ist als rsyncd bekannt und lauscht auf einem bestimmten Port als Dienst. Rsyncd verlässt sich für seine Konfigurationen auf rsyncd.conf, wobei jeder Synchronisationspfad seinen eigenen Optionsblock hat. Rsyncd ist der Vektor für die Offenlegung von Daten mit rsync, da sie von einem anonymen Dritten ohne angemessenen Schutz geöffnet werden können. Für unsere Zwecke konzentrieren wir uns auf rsyncd, die gebräuchlichste Art und Weise, wie rsync in großem Maßstab verwendet wird.

Rsyncd.conf

Der rsync-Daemon ist für seine Authentifizierungs-, Zugriffs-, Protokollierungs- und verfügbaren Module von rsyncd.conf abhängig. Im Dienstmodus kann rsync Details für viele verschiedene Synchronisationspfade bereitstellen. Organisationen, die sich auf rsync verlassen, stellen möglicherweise fest, dass sich diese Pfade im Laufe der Zeit ansammeln. Da jeder Pfad eine separate Konfiguration erfordert, kann es leicht passieren, dass einer durch das Raster fällt und eine wichtige Anweisung auslässt.

Beispiel rsyncd.conf

pid-Datei=/var/run/rsyncd.pid-Sperrdatei
= /var/run/rsync.lock-Protokolldatei
= /var/log/rsync.log
Port=12000

[Dateien]
Pfad=/var/storage/
comment=Zeitüberschreitung des primären Dateiservers
= 300

In ihrer einfachsten Form deklariert die Datei rsync.conf die folgenden globalen Parameter:

  • Pfad der Prozess-ID-Datei - Erforderlich, damit der Daemon ausgeführt werden kann
  • Dateipfad sperren - Notwendig, damit der Daemon ausgeführt werden kann
  • Pfad der Protokolldatei: Wichtig für die Fehlerbehandlung, die Dienstüberwachung und die Problembehandlung
  • Port zum Abhören - Der Standardport von rsync ist 873, kann aber hier überschrieben werden.

Es gibt weitere globale Optionen, wie z. B. das Angeben der IP-Adresse, die überwacht werden soll, erweiterte Socket-Optionen und die Möglichkeit, eine Nachricht des Tages (MOTD), im Wesentlichen ein Dienstbanner, an Benutzer des rsync-Dienstes zu senden.

Darüber hinaus kann es eine beliebige Anzahl von "Modulen" oder Dateipfaden enthalten, die synchronisiert werden sollen. Im obigen Beispiel bezeichnet unser [files]-Block das einzige Modul für dieses System. Unter diesem Modul können viele Direktiven gesetzt werden. Die wichtigsten unter diesen sind:

  • Pfad - Dies ist der Pfad, der synchronisiert wird. Beachten Sie den abschließenden Schrägstrich im Pfad /var/storage/. Dies bedeutet, dass der Inhalt dieses Ordners und nicht der Ordner selbst synchronisiert wird. Ohne den abschließenden Schrägstrich legt rsync eine Kopie des Ordners innerhalb des Ziels ab, anstatt nur den Inhalt zu kopieren.
  • Timeout - Die Zahl hier wird mit Sekunden als Einheit berechnet. Verhindert, dass embryonale Verbindungen den Server überlasten.
  • Nur Lesen/Nur Schreiben - Diese Parameter schränken den Zugriff nach Funktion ein. Schreibgeschützt erlaubt nur Downloads, während Schreibzugriff nur Uploads zulässt.
  • Max. Verbindungen: Standardmäßig ist diese Option auf 0 festgelegt, was bedeutet, dass unbegrenzte Verbindungen hergestellt werden, aber gelegentlich ist eine Drosselung von Verbindungen erforderlich, um die Leistung zu steigern oder sich vor Denial-of-Service-Angriffen zu schützen.
  • Include/Exclude - Diese Parameter ermöglichen es rsync, innerhalb des angegebenen Pfads granularer zu agieren, indem Dateien und Verzeichnisse ausgeschlossen werden und das Einschließen bestimmter Dateien aus diesen Ausschlüssen zugelassen wird.
  • Eingehender/ausgehender chmod - Die chmod-Parameter ermöglichen es rsync, während des Übertragungsprozesses ACLs auf die Dateien zu setzen. Dies kann entscheidend sein, wenn Quelle und Ziel unterschiedliche Berechtigungssätze haben sollen.

Noch wichtiger sind jedoch die Direktiven, die die Sicherheit festlegen. Da rsync ein schlankes Dienstprogramm ist, ist keines von ihnen standardmäßig aktiviert. Dies erfordert, dass Administratoren ihre rsync-Modulkonfigurationen verstehen und validieren, um den Zugriff auf die von ihnen verarbeiteten Informationen ordnungsgemäß einzuschränken. Schauen wir uns jeden von ihnen im Detail an.

Liste

Die Listenoption ermöglicht es rsync, ein Modul vor jedem zu "verstecken", der nicht weiß, wonach er sucht. Wenn der rsync-Daemon nach verfügbaren Modulen abgefragt wird, werden die auf list=false gesetzten Module in den Ergebnissen weggelassen. Diese Art der Sicherheit durch Verschleierung allein reicht zwar nicht aus, ist aber eine zusätzliche Schicht, die Sie hinzufügen können, um besonders sensible Dateipfade zu schützen. Standardmäßig können Module aufgelistet werden, daher muss dieser Parameter für ausgeblendete Module explizit auf false festgelegt werden.

List=false
Das Modul ist in der Liste des Daemons nicht sichtbar und muss direkt aufgerufen werden.

Standardwert: True. Das Modul wird sichtbar.

Hosts zulassen/verweigern

Die einfachste Möglichkeit, rsync-Module vor versehentlicher Offenlegung zu schützen, besteht darin, einzuschränken, welche externen Rechner mit ihnen kommunizieren können. Durch die Verwendung der Direktiven hosts allow und hosts deny kann rsync eine Richtlinie der geringsten Rechte erstellen, indem nur die Clients zugelassen werden, die für Geschäftsziele erforderlich sind. Mit hosts allow werden alle nicht angegebenen Quell-IPs automatisch nicht zugelassen. Dies verkleinert die Angriffsfläche des rsync-Servers drastisch und sollte immer auch für etwas sensible Informationen eingerichtet werden. Hosts deny können bestimmte IP-Adressen blockieren, was eine weitere Zugriffsgranularität auf einen zulässigen IP-Bereich bietet.

Hosts verweigern [IP-Adresse, IP-Bereich, Hostname]
Die angegebenen Clients werden blockiert. Alle anderen werden erlaubt, es sei denn, die hosts-allow-Direktive wird verwendet, in diesem Fall müssen sie auch dort angegeben werden.

Standard: Alle Hosts sind erlaubt.

Wenn sie in Verbindung verwendet wird, wird die Allow-Direktive des Hosts zuerst gelesen. Wenn der Client dort zugelassen ist, wird die hosts-deny-Direktive gelesen. Wenn ein Client darauf zutrifft, wird ihm der Zugriff verweigert - auch wenn er in der Zulassungsliste angegeben ist.

Authentifizierungsbenutzer und die Secrets-Datei

IP- und Hostnamen-Beschränkungen schränken die Angriffsfläche je nach Gerät ein, aber jeder Benutzer auf diesen zugelassenen Geräten kann auf das rsync-Modul zugreifen. Die auth users-Direktive verkleinert die Angriffsfläche nach Benutzer und beschränkt den Zugriff auf bestimmte Konten, unabhängig vom Gerät. Wenn auth users aktiviert ist und eine Liste von Benutzernamen erhält, können nur diese Benutzer eine Verbindung zum rsync-Daemon herstellen.

Die auth users-Direktive basiert auf einer "secrets"-Datei, z.B. /etc/rsyncd/rsyncd.secrets. Diese Datei enthält die Kombinationen aus Benutzername und Passwort für rsync-Konten. Es ist wichtig zu beachten, dass die Geheimnisdatei im Klartext gespeichert wird, einschließlich Kennwörtern. Das bedeutet, dass die Datei stark eingeschränkt sein sollte.

Wenn die auth users-Direktive nicht vorhanden ist, wird standardmäßig allen Benutzern erlaubt. Und wenn Ihr rsync-Server über das Internet erreichbar ist, haben Sie ein Datenleck. Die wichtigste Erkenntnis, die Sie beim Erstellen eines sicheren rsync-Setups beachten sollten, ist, dass standardmäßig jeder auf den Pfad zugreifen kann. Wenn die Zulassungs-/Verweigerungseinstellungen für Authentifizierungsbenutzer und -hosts nicht ordnungsgemäß konfiguriert werden, werden alle Daten, die synchronisiert werden, auf eine öffentlich zugängliche Webseite verschoben. Jeder, der den rsync-Server findet, kann den Inhalt anonym abrufen, ohne ein Passwort zu benötigen. Übrigens ist es trivial, über das Internet exponierte rsync-Hosts zu finden, wenn der Standardport verwendet wird. Es wird immer empfohlen, den Zugriff auf rsync nach Benutzer und Gerät zu beschränken. Jede Schicht reduziert das Risiko der Offenlegung von Daten.

Secrets-Datei /etc/rsyncd/rsyncd.secrets
Gibt den Speicherort der Kombinationen aus Benutzername und Passwort an, die von der auth users-Direktive verwendet werden.

Standardwert: Keine. Muss in Verbindung mit Authentifizierungsbenutzern verwendet werden.

Strenge Modi

>

Eine Klartextdatei mit Benutzernamen und Passwörtern zu haben, wie die der rsync-Datei "secrets", ist keine gute Idee. Dies verdeutlicht die Risiken des Einsatzes von rsync im Unternehmen, die Unternehmen bereit sein müssen einzugehen, um seine Funktionalität zu nutzen. Es gibt jedoch eine andere Anweisung, die als strikte Modi bezeichnet wird und das Risiko einer Kompromittierung der Secrets-Datei bis zu einem gewissen Grad ausgleichen kann. Der strikte Modus überprüft, ob nur das Konto auf die Secrets-Datei zugreifen kann, unter dem der rsync-Daemon ausgeführt wird. Wenn rsyncd beispielsweise unter unserem dedizierten rsync-Benutzer läuft (was es sollte, mit minimalen Berechtigungen), sollte nur der rsync-Benutzer Zugriff auf das Lesen der Secrets-Datei haben. Der Daemon überprüft die Dateiberechtigungen und wird nur ausgeführt, wenn sie korrekt sind. Dies ist eine nette zusätzliche Bestätigung, dass nicht autorisierte Benutzer nicht auf die Klartext-Passwörter in der Secrets-Datei zugreifen können.

Allerdings würden die meisten Technologien der Enterprise-Klasse Passwörter niemals unverschlüsselt in einer Textdatei speichern. Dies ist ein qualitativer Unterschied zwischen Tools, die auf maximale Funktionalität ausgerichtet sind, und Plattformen, die unter Berücksichtigung von Geschäftsrisiken entwickelt wurden. Mit der richtigen Sorgfalt kann jedoch auch rsync ziemlich gut vor versehentlichem und böswilligem Zugriff geschützt werden.

Strict modes=false (default)
Die Secrets-Datei wird nicht auf die richtigen Berechtigungen überprüft.

Standardwert: False. Die Secrets-Datei wird nur überprüft, wenn die Authentifizierungsbenutzer, die Secrets-Datei und die strikten Modi aktiviert sind.

Verschlüsselung

Die Verschlüsselung ist ein Bereich, in dem sich rsync und rsyncd stark unterscheiden. Wenn rsync auf der Kommandozeile verwendet wird, muss für die Übertragung ein separates Protokoll, in der Regel SSH, angegeben werden. Der rsync-Daemon verschlüsselt den Datenverkehr jedoch nicht. Das bedeutet, dass ein rsync-Prozess möglicherweise während der Übertragung von einem Dritten ausspioniert werden kann, wodurch er Zugriff auf die zu übertragenden Informationen erhält. Daher sind rsync-Operationen, die offen über das Internet stattfinden, extrem anfällig für die Offenlegung von Daten.

Der gesamte rsyncd-Datenverkehr sollte innerhalb eines geschützten Intranets oder innerhalb eines verschlüsselten Tunnels oder VPNs erfolgen. Auf Unternehmensebene gibt es keine Entschuldigung dafür, unverschlüsselte Daten über das Netz zu übertragen. Alternative einfache Dateikopierlösungen wie SCP und SFTP unterstützen ebenfalls die integrierte Verschlüsselung.

Standard: Unverschlüsselt auf rsyncd.

Port öffnen

Wenn rsync für das Netz offen ist, findet jeder, der den Server scannt, einen offenen Port. Das Ändern des Ports von 873 in der Datei rsyncd.conf kann helfen, dies zu verschleiern, aber letztendlich, wenn der rsync-Port offengelegt wird, wird ihn irgendwann jemand finden und sehen, was er tun kann. Wie bei jedem Unternehmensdienst sollte der Zugriff auf den rsync-Port in seinem Umfang begrenzt sein. Firewall-ACLs können nicht autorisierte Quell-IPs blockieren, ähnlich wie die Hosts in rsync selbst Direktiven zulassen und ablehnen.

Betrachten Sie die Operationen, die von rsync ausgeführt werden. Sind die zu kopierenden Daten wichtig? Wenn ja, ist rsync mit dem Internet ein massiver Risikovektor und kann sich selbst bei sorgfältiger Konfiguration im Laufe der Zeit als gefährlich erweisen.

Standardeinstellung: Port 837.

Schlussfolgerung

Das Erstellen eines sicheren rsync-Setups für den Unternehmensbetrieb erfordert die Anwendung mehrerer Schutzschichten, die jeweils dazu beitragen, die Oberfläche des Daemons zu minimieren und die Remote-Verbindungen zu begrenzen, auf die Zugriff gewährt wird.

  • Nur notwendige Remote-Hosts und Benutzerkonten zulassen
  • Erzwingen Sie strenge Modi, um den Dateizugriff auf Geheimnisse zu validieren
  • Verschlüsseln Sie alle rsync-Übertragungen über einen Tunnel oder beschränken Sie sie auf ein Intranet

Wenn Sie diese drei Regeln bei jedem rsync-Modul befolgen, können Sie die Wahrscheinlichkeit einer rsync-basierten Datenoffenlegung erheblich verringern, sodass Sie die Funktionalität von rsync nutzen können, ohne seinen Risiken zu erliegen. Unabhängig davon, ob es sich um eine Unternehmensplattform oder ein einfaches Dienstprogramm handelt, sind Fehlkonfigurationen das größte Risiko. Menschen machen ständig Fehler, und ohne die richtigen Prozesskontrollen können sich diese Fehler als Datenschutzverletzung oder größerer Ausfall rächen. Es macht Spaß, über 0-Day-Exploits und ausgefallene Hacking-Methoden zu sprechen, aber ein ungeschützter rsync-Server ist weitaus wahrscheinlicher und genauso gefährlich.

Verwandte Artikel