Der zweite Teil dieses Tutorials erläutert, wie die Installation der Crowdec-Sicherheitsmotor für Multi-Server-Crowdec eingerichtet und sichert. Im ersten Teil erläutern wir, wie die Crowdec -Sicherheits -Engine auf mehreren Servern eingerichtet wird, von denen einer als übergeordnete Server dient und die anderen beiden die Warnung an sie weiterleiten.
In diesem Abschnitt wird die durch Klartext-HTTP-Kommunikation in früheren Multi-Server-Sicherheitsmotoreninstallationen verursachten Sicherheitsprobleme gelöst. Um dieses Problem zu lösen, empfehlen wir, Kommunikation zwischen Sicherheitsmotoren durch verschlüsselte Kanäle zu errichten. Mit dieser Lösung kann Server 2 oder Server 3 der Identität von Server 1 vertrauen und Angriffe von Man-in-the-Middle-Angriffen vermeiden.
Erstellen Sie ein Zertifikat Zuerst müssen Sie ein Zertifikat erstellen. Dies kann erreicht werden, indem ein einzelner Zeilenbefehl folgt:
openssl req -x509 -newkey rsa:4096 -keyout encrypted-key.pem -out cert.pem -days 365 -addext "subjectAltName = IP:172.31.100.242"
Derzeit kann die Sicherheitsmotor das Passwort für den privaten Schlüssel nicht anfordern, wenn er gestartet wird. Daher können Sie den privaten Schlüssel jedes Mal, wenn Sie den Sicherheitsmotor starten oder neu laden, manuell entschlüsseln oder den Schlüssel nicht verknagt werden. Um das Passwort zu löschen, können Sie den folgenden Befehl verwenden:
openssl rsa -in encrypted-key.pem -out key.pem
Dann kann die unverschlüsselte Schlüsseldatei sicher gelöscht werden, nachdem die Sicherheitsmotor gestartet wurde.
Konfigurieren Sie die Sicherheits-Engine, um das selbstsignierte Zertifikat auf Server 1 zu verwenden. Sie müssen die Sicherheitsmotor so konfigurieren, dass sie das generierte Zertifikat verwenden. Wie unten gezeigt, werden die Optionen /etc/crowdec/config.yaml
und api.server
im Abschnitt tls.cert_file
des folgenden tls.key_file
-auszugs auf die generierte Zertifikatdatei eingestellt.
api: server: log_level: info listen_uri: 10.0.0.1:8080 profiles_path: /etc/crowdsec/profiles.yaml online_client: # Crowdsec API credentials (to push signals and receive bad tls: cert_file: /etc/crowdsec/ssl/cert.pem key_file: /etc/crowdsec/ssl/key.pem
Auf dem Client tritt die Konfigurationsänderung in beiden Dateien auf. Ändern Sie zunächst /etc/crowdec/config.yaml
, um ein selbstsigniertes Zertifikat zu akzeptieren, indem Sie insecure_skip_verify
auf true
festlegen.
Sie müssen auch HTTP in HTTPS in der Datei /etc/crowdsec/local_api_credentials.yaml
ändern, um diese Änderungen widerzuspiegeln. Diese kleine Änderung muss auf allen drei Servern vorgenommen werden (Server 1, Server 2 und Server 3).
Hinweis: Denken Sie daran, dass Sie diese LAPI -Konfiguration auch auf diesem Server durchführen müssen, wenn Server 1 auch als Protokollprozessor verwendet wird.
url: https://10.0.0.1:8080/ login: <login> password: <password></password></login>
Randnotiz: Die Verwendung eines selbstsignierten Zertifikats bietet natürlich keine Garantie für den Besitz des LAPI-Servers. Server, die den Dienst verwenden (Server 2 oder Server 3 in dieser Einstellung), sind immer noch anfällig für Angriffe von Menschen in den Mitte, aber zumindest diese Einstellung bietet verschlüsseltes Kommunikation. Aus diesem Grund wird die Option InsecureSkipVerify
benötigt.
Dienste wie Let's Encrypt oder Amazon ACM können das Problem /etc/hosts
beheben, indem Zertifikate für vollständig qualifizierte Domain -Namen ausgestellt werden, die zu InsecureSkipVerify
oder lokalen DNS -Servern hinzugefügt werden können. Sie können dann /etc/crowdsec/local_api_credentials.yaml
mit diesem angegebenen voll qualifizierten Domänennamen bevölkern.
Dies funktioniert und verhindert, dass die Option InsecureSkipVerify
festgelegt wird. Solange die DNS -Konfiguration vertraut ist, stellt dies sicher, dass die Kommunikation zwischen dem Client und dem Server nicht manipuliert wird, dies sollte jedoch dennoch als Problemumgehung angesehen werden.
Der Prozess der Konfiguration und Verwaltung der SSL Public Key Infrastructure (PKI) liegt nicht im Rahmen dieses Tutorials, aber ich empfehle dringend, die offizielle OpenSSL -Dokumentation zu lesen. Eine einfache PKI -Lösung reicht aus, um die Anforderungen dieses Sicherheitsmotor -Setups zu erfüllen.
Nach der OpenSSL -Dokumentation sind einige Dinge erwähnenswert.
In unserem Crowdec -TLS -Szenario müssen Zertifikatanfragen mit dem themen alternativen Namen ausgestellt werden, der der IP des Crowdec -Lapi -Servers entspricht. Dies kann durch Aufrufen der SAN -Umgebungsvariablen beim Aufrufen von OpenSSL -Anfragen erfolgen (siehe Schritt 3.3 in OpenSSL Simple PKI -Schema).
openssl req -x509 -newkey rsa:4096 -keyout encrypted-key.pem -out cert.pem -days 365 -addext "subjectAltName = IP:172.31.100.242"
Bevor Sie mit der Crowdec -Sicherheitsmotor starten, muss der gemeinsame Teil des Stammzertifikats und das unterschriebene Zertifikat (die in Schritt 4.5 erstellte Datei der OpenSSL Simple PKI -Schema) zum lokalen Zertifikatspeicher hinzugefügt werden. In diesem Setup ist dies erforderlich, um eine Verbindung zum LAPI -Server herzustellen. Dies gibt viele Möglichkeiten, der Golang -Quellcode gibt den Ort des erwarteten Zertifikats an, oder Sie können die Umgebungsvariable SSL_CERT_FILE
in der Systemd -Dienstdatei verwenden, um anzugeben, wo das Zertifikat beim Starten der Sicherheitsmotor suchen soll.
Nachdem dieser Artikel zum ersten Mal veröffentlicht wurde, haben wir der Security Engine eine neue Funktion hinzugefügt, in der Sie jetzt nicht nur die Kommunikation auf TLS schützen können, sondern auch die Authentifizierung mit Zertifikaten sicherstellen können. In der offiziellen Dokumentation finden Sie ein gutes Beispiel, das zeigt, wie Zertifikate für die TLS -Authentifizierung zwischen Sicherheitsmotoren oder zwischen Sicherheitsmotoren und Sanierungskomponenten verwendet werden.
Dieser Artikel konzentriert sich darauf, wie die Kommunikation zwischen verschiedenen Installationen von Crowdec -Sicherheitsmotoren schützt. Der in Betracht gezogene Anwendungsfall ist die Installation der Sicherheitsmotor in einem privaten Netzwerk. Dies kann jedoch auch in öffentlichen Netzwerken mit Internetkommunikation bereitgestellt werden. In diesem Fall kann ein Drittanbieter-Zertifikat das Problem leicht lösen.
Nach Bedarf schlagen wir drei verschiedene Methoden vor, um eine sichere TLS-Kommunikation zwischen Sicherheitsmotoren zu erreichen, indem wir selbstsignierte Zertifikate verwenden, Zertifikate verwenden, die von Zertifikatbehörden ausgestellt wurden, und die Verwendung von SSL Public Key Infrastructure.
Die erste Lösung (unter Verwendung eines selbstsignierten Zertifikats) eignet sich nur für Situationen, in denen Sie eine verschlüsselte Kommunikation ohne Authentifizierung sicherstellen möchten. Die zweite Lösung kann nur berücksichtigt werden, wenn Sie die lokale DNS -Auflösung ändern können. Die dritte Lösung ist die komplexeste, passt jedoch zu den meisten Anwendungsfällen und ist möglicherweise die beste Wahl, wenn Sicherheitsprobleme schwerwiegend sind.
Ich hoffe, dieses Tutorial wird Ihnen hilfreich sein. Danke fürs Lesen, bitte bleiben Sie dran!
Wenn Sie Fragen oder Feedback haben, können Sie uns gerne über unsere Discord- und Diskurs -Community -Plattformen kontaktieren.
Das obige ist der detaillierte Inhalt vonSichern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!