Automatisches Firewalling von DigitalOcean Private Network-Schnittstellen mit Droplan

Einführung

Mit der Funktion für private Netzwerke von DigitalOcean erhalten Ihre Droplets eine Netzwerkschnittstelle, die https://www.digitalocean.com/community/tutorials/digitalocean-private-networking-faq ist und auf die nur andere Droplets im selben Team oder Konto zugreifen können, die sich im selben befinden Rechenzentrum].

Das Dienstprogramm "+ droplan +" kann zum Sichern privater Netzwerkschnittstellen auf einem Droplet beitragen, indem * iptables * -Firewall-Regeln hinzugefügt werden, die nur Datenverkehr von Ihren anderen Droplets im selben Datencenter zulassen. Indem Sie das Dienstprogramm auf jedem Droplet installieren und ausführen, können Sie sicherstellen, dass Ihre Systeme nur lokalen Datenverkehr voneinander akzeptieren.

In diesem Handbuch wird die Installation von "+ droplan " auf einem einzelnen Droplet beschrieben. Außerdem wird die regelmäßige Ausführung eines " cron +" - Jobs geplant und sichergestellt, dass die Firewall-Regeln auch nach einem Neustart des Droplets oder einem Stromausfall bestehen bleiben.

Voraussetzungen

In diesem Handbuch wird davon ausgegangen, dass Sie zwei oder mehr Linux-Droplets in derselben Region haben, die jeweils mit einem Nicht-Root-Benutzer mit den Rechten "+ sudo " für administrative Aufgaben konfiguriert sind. Insbesondere enthält es Anweisungen für aktuelle Debian-, Ubuntu- und CentOS-Versionen. Auf CentOS-Systemen wird " firewalld +" deaktiviert, daher sollten Sie sich darüber im Klaren sein, dass die vorhandene Firewall-Konfiguration möglicherweise außer Kraft gesetzt wird.

Abrufen eines schreibgeschützten persönlichen Zugriffstokens

Das Dienstprogramm "+ droplan " Um die API nach einer Liste Ihrer Droplets zu fragen, benötigt der Befehl " droplan +" Zugriff auf ein * persönliches Zugriffstoken * mit Lesebereich. Sie können ein Token abrufen, indem Sie auf die DigitalOcean-Systemsteuerung zugreifen, im oberen Menü auf * API * und dann auf die Schaltfläche * Neues Token erstellen * klicken. Geben Sie einen aussagekräftigen Namen für das neue Token in das Feld * Tokenname * ein, z. B. "Nur Droplan", und deaktivieren Sie das Kontrollkästchen * Schreiben (optional) *:

image: https: //assets.digitalocean.com/articles/droplan/enter_name_small.png [Neues Token generieren]

Klicken Sie auf "Token generieren" und kopieren Sie das resultierende Token auf Ihren lokalen Computer:

Weitere Informationen zu diesem Vorgang und zu den Grundlagen der API-Verwendung finden Sie unter How To Use the DigitalOcean API v2 .

Droplan installieren

Debian- und Ubuntu-Voraussetzungen installieren

Wenn Sie unter Debian oder einer von Debian abgeleiteten Distribution wie Ubuntu arbeiten, installieren Sie das Paket "+ unzip " mit " apt-get +":

sudo apt-get install unzip iptables-persistent

Wir benötigen "+ iptables-persistent +" in einem Moment, wenn wir persistente Firewall-Regeln konfigurieren. Wahrscheinlich werden Sie vom Installationsprogramm gefragt, ob Sie die aktuellen Firewall-Regeln zum Zeitpunkt der Installation speichern möchten. Es sollte nicht schaden, wenn Sie Ja sagen.

CentOS-Voraussetzungen installieren

Wenn Sie CentOS 7 verwenden, installieren Sie das Paket + unzip und` + iptables-services` mit + yum:

sudo yum install unzip iptables-services

Wir werden in einem Moment + iptables-services brauchen, wenn wir persistente Firewall-Regeln konfigurieren.

Archiv abrufen und extrahieren

Besuchen Sie die Seite releases im GitHub-Projekt + droplan + und suchen Sie eine URL für die neueste Version, die Ihre Architektur unterstützt. Kopieren Sie die URL, melden Sie sich in einem Ihrer Droplets an und rufen Sie die Datei mit + wget + oder + curl + ab:

wget https://github.com/tam7t/droplan/releases/download//

Verwenden Sie nun den Befehl + unzip +, um die Binärdatei + droplan + aus dem Versionsarchiv zu extrahieren:

unzip

Erstellen Sie ein Verzeichnis in + / opt + für + droplan + und verschieben Sie die Binärdatei dorthin:

sudo mkdir /opt/droplan
sudo mv ./droplan /opt/droplan/

Das Verzeichnis "+ / opt +" ist ein Standardverzeichnis für Software, die von anderen Quellen als den offiziellen Paket-Repositorys einer Distribution installiert wurde.

Erstellen von Iptables-Regeln

Mit der Binärdatei "+ droplan " können Sie Regeln erstellen. Führen Sie den Befehl unter ` sudo ` aus und setzen Sie die Umgebungsvariable ` DO_KEY +` auf Ihr Token:

sudo DO_KEY= /opt/droplan/droplan

Überprüfen Sie nun Ihre Iptables-Regeln:

sudo iptables -L

Angenommen, Sie haben zwei andere Tröpfchen in derselben Region, dann sollten Sie ungefähr Folgendes sehen:

OutputChain INPUT (policy ACCEPT)
target     prot opt source               destination
droplan-peers  all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain droplan-peers (1 references)
target     prot opt source               destination
ACCEPT     all  --         anywhere
ACCEPT     all  --          anywhere

Um zu bestätigen, dass diese Regeln nur auf * eth1 * angewendet werden, können Sie die Option + -v + für eine ausführlichere Ausgabe hinzufügen, die Schnittstellen enthält:

sudo iptables -L -v

Bestehende Iptables-Regeln

Derzeit können alle Ihre anderen Droplets in derselben Region eine Verbindung zum aktuellen System herstellen, während der Datenverkehr von Systemen, die Sie nicht steuern, blockiert wird. Wenn das System jedoch neu startet, verschwinden die iptables-Regeln. Es ist auch wahrscheinlich, dass Sie zu einem späteren Zeitpunkt neue Droplets erstellen (oder vorhandene löschen). Um diese Probleme zu beheben, stellen wir sicher, dass die Regeln beim Neustart bestehen bleiben, und planen, dass "+ droplan +" regelmäßig ausgeführt wird und alle erforderlichen Änderungen an der Firewall vorgenommen werden.

Bestehende Regeln für Debian oder Ubuntu

Firewall-Regeln befinden sich in + / etc / iptables / rules.v4 + (und + / etc / iptables / rules.v6 + für ipv6-Regeln). Sie können eine neue Version dieser Datei mit dem Befehl + iptables-save + erstellen:

sudo iptables-save | sudo tee /etc/iptables/rules.v4

Bestehende Regeln für CentOS 7

Standardmäßig verwendet CentOS 7 den Firewall-Dienst anstelle von iptables. Da wir oben bereits das Paket "+ iptables-services" installiert haben, können wir "+ systemctl" verwenden, um diesen Dienst zu stoppen und zu maskieren. So stellen Sie sicher, dass er nicht neu gestartet wird:

sudo systemctl stop firewalld
sudo systemctl mask firewalld

Aktivieren Sie nun den Dienst "+ iptables +":

systemctl enable iptables

Speichern Sie mit dem Dienst "+ iptables +" die aktuellen Firewall-Regeln:

sudo service iptables save

Testen der Regelpersistenz

Möglicherweise möchten Sie das System neu starten, die Verbindung wiederherstellen und überprüfen, ob die Regeln weiterhin gelten. Starten Sie zuerst neu:

sudo reboot

Stellen Sie nun erneut eine Verbindung zu Ihrem Droplet her (dies dauert einige Sekunden) und überprüfen Sie die Regeln:

sudo iptables -L

Planen eines Cron-Jobs zum Aktualisieren von Iptables-Regeln

Als letzten Schritt stellen wir sicher, dass "+ droplan +" regelmäßig ausgeführt wird, damit Änderungen in Ihrer Sammlung von Droplets erfasst werden.

Beginnen Sie mit dem Erstellen eines neuen Skripts mit dem Namen "+ / opt / droplan / refresh.sh " mit " nano +" (oder einem Editor Ihrer Wahl):

sudo nano /opt/droplan/refresh.sh

Fügen Sie Folgendes ein und kommentieren Sie die entsprechende Zeile für Ihre Distribution, indem Sie das führende ++ löschen:

/opt/droplan/refresh.sh

#!/usr/bin/env bash

/opt/droplan/droplan

# Uncomment for Centos:


# Uncomment for Debian or Ubuntu:

Beenden und speichern Sie die Datei und markieren Sie sie als ausführbar:

sudo chmod +x /opt/droplan/refresh.sh

Als nächstes erstellen Sie eine neue Datei unter + / etc / cron.d / droplan +:

sudo nano /etc/cron.d/droplan

Fügen Sie der Datei die folgende Zeile hinzu, um das Skript alle 5 Minuten als * root * auszuführen:

crontab

*/5 * * * * root PATH=/sbin:/usr/bin:/bin DO_KEY= /opt/droplan/refresh.sh > /var/log/droplan.log 2>&1

Dadurch wird das Skript "+ refresh.sh " alle 5 Minuten ausgeführt, wie durch " * / 5 " im ersten Feld angegeben, und die letzte Ausgabe wird in " / var / log / droplan.log +" protokolliert.

Beenden und speichern Sie die Datei. Sie können jetzt den Befehl + watch + verwenden, der alle paar Sekunden die Ausgabe eines anderen Befehls anzeigt, um sicherzustellen, dass das Skript erfolgreich ausgeführt wird:

sudo watch cat /var/log/droplan.log

Sobald das Skript ausgeführt wird, sollte eine Ausgabe wie die folgende angezeigt werden:

Sample CentOS OutputEvery 2.0s: cat droplan.log                      Fri Mar 25 01:14:45 2016

2016/03/25 01:14:02 Added 2 peers to droplan-peers
iptables: Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]

Auf von Debian abgeleiteten Systemen zeigt + systemctl iptables save + keine Ausgabe an.

Drücken Sie * Ctrl-C *, um + watch zu verlassen.

Fazit und nächste Schritte

Nachdem Sie die Firewall auf einem einzelnen Droplet konfiguriert haben, möchten Sie diesen Vorgang mit dem Rest Ihrer Infrastruktur wiederholen. Für mehr als eine Handvoll Tropfen wäre es wahrscheinlich am einfachsten, diesen Prozess zu automatisieren. Wenn Sie Hashicorps Terraform für die Bereitstellung von Systemen verwenden, finden Sie example templates auf dem Droplan GitHub Projekt. Einen umfassenden Überblick über Automatisierungsaufgaben wie diese finden Sie unter Eine Einführung in Configuration Management.

Weitere Informationen zu Firewalls finden Sie unter Was ist eine Firewall und wie funktioniert sie?