ubuntuusers.de

OpenVPN mit Certbot und ssh Keys

Status: Ungelöst | Ubuntu-Version: Lubuntu 22.04 (Jammy Jellyfish)
Antworten |

Felidae

Anmeldungsdatum:
11. Mai 2008

Beiträge: Zähle...

Wohnort: Mecklenburg

Hi@all

Ich möchte mir einen OpenVPN Server aufsetzen. Ich habe mir verschiedene Anleitungen im Netz angeschaut und keine passt so ganz zu meinen Server Aufbau. Ich habe erst mal folgen Fragen:

1. Zertifikat: Alle Anleitungen beginnen immer mit der Erstellung eines CA, mit dem ich dann ein Zertifikat erstelle und signiere. Ich verwende Certbot und Letsencrypt um mir ein signiertes Server Zertifikat zu erstellen. Ich würde dieses Zertifikat auch für den OpenVPN nutzen. Ich finde aber keine Anleitung wie man das bei OpenVPN einstellt.

2. Authentifikation: Bei mir haben alle User einen ssh Schlüsselpaar für ssh und sftp. Diesen Key würde ich auch gerne für den OpenVPN nutzen. Auch dafür finde ich keine Anleitung.

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

Felidae schrieb:

Ich verwende Certbot und Letsencrypt um mir ein signiertes Server Zertifikat zu erstellen. Ich würde dieses Zertifikat auch für den OpenVPN nutzen.

Letsencrypt gibt dir ein Zertifikat, keine CA. Letsencrypt ist die CA. Du brauchst aber eine CA und pro Client ein Zertifikat.

Bei mir haben alle User einen ssh Schlüsselpaar für ssh und sftp. Diesen Key würde ich auch gerne für den OpenVPN nutzen. Auch dafür finde ich keine Anleitung.

weil das was anderes ist.

Felidae

(Themenstarter)

Anmeldungsdatum:
11. Mai 2008

Beiträge: 88

Wohnort: Mecklenburg

Es macht doch aber übergabt keinen Sinn die clients zu zertifizieren. Soll denn der Server bei seinen eingeben Ca nachfragen ob er den Client den er kennt auch wirklich kennt? Selbst signierte Zertifikate sind obendrein auch Blödsinn. Der CA hat die Aufgabe den Server gegen über dem Client zu verifizieren und nicht umgekehrt.

Gibt es keine sinnvolle Methode sich bei OpenVPN zu authentifizieren? Und wenn nein, gibt es dann eine Vernünftige alternative zu OpenVPN?

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17529

Felidae schrieb:

Es macht doch aber übergabt keinen Sinn die clients zu zertifizieren.

Doch, nennt sich mTLS (mehr oder weniger) und sorgt dafür das es keinen unsicheren Teil in der Trust Chain gibt.

Soll denn der Server bei seinen eingeben Ca nachfragen ob er den Client den er kennt auch wirklich kennt?

Der VPN Server, als auch der Client, bekommen gesagt welche CA gültig ist.

Selbst signierte Zertifikate sind obendrein auch Blödsinn. Der CA hat die Aufgabe den Server gegen über dem Client zu verifizieren und nicht umgekehrt.

Die CA macht garnichts, außer Certs + CRL bereitstellen, das ist ihr Job, wenn man von OCSP & Co absieht. Es ist Aufgabe der Application zu entscheiden ob ein Certficate/CA/CRL/Whatever passt, aber nicht der CA.

Und wenn nein, gibt es dann eine Vernünftige alternative zu OpenVPN?

OpenVPN gilt als relativ sicher, und wir von vielen Security Menschen gerne für jede Art Tunnel genommen. Warum? Nun: Weil es sicher ist.

Felidae

(Themenstarter)

Anmeldungsdatum:
11. Mai 2008

Beiträge: 88

Wohnort: Mecklenburg

Das habe ich anders gelernt. TLS (Transport Layer Security) ist eine Verschlüsselte Datenübertragung. Genau so wie bei einer ssh Kommunikation, haben Client und Server je ein Schlüsselpaar mit dem sie die Daten verschlüssel und da sie sich gegenseitig kennen, reichen diese Schlüssel aus, um sich gegenseitig zu identifizieren.

Der CA kommt nur zum Einsatz wenn, der Client den Server vor dem Verbindungsaufbau noch nicht kennt. (z.B. Https) Dann weißt der Server sich gegen über dem Client mit einem Zertifikat aus, in dem zusätzlich der Öffentliche Schlüssel enthalten ist. So ein Zertifikat kann sich aber jeder selbst erstellen. Daher wird es als unsicher angesehen, bis es von einer dritten Partei Signiert wurde. Das ist dann der CA (Certification Authority). Der CA ist ein Server der zwei aufgaben hat. 1. Zertifikate zu signieren und 2. Clients gegenüber die Echtheit eines Zertifikat zu bestätigen. Daher sind Selbst signierte Zertifikate wertlos.

Das ist wie bei einem Perso. den kann man ja auch nicht selbst aus ducken. Die Polizei fragt dann ja auch nicht dich ob die Daten dein Perso richtig sind. Für ein privaten VPN reicht es einen Server Schlüsselpaar zu erstellen und das der Server den öffentlichen Schlüssel des Client kennt, um eine sichere verschlüsselte Verbindung aufzubauen.

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17529

Felidae schrieb:

Das habe ich anders gelernt. TLS (Transport Layer Security) ist eine Verschlüsselte Datenübertragung. Genau so wie bei einer ssh Kommunikation, haben Client und Server je ein Schlüsselpaar mit dem sie die Daten verschlüssel und da sie sich gegenseitig kennen, reichen diese Schlüssel aus, um sich gegenseitig zu identifizieren.

Die Verschlüssel am Transport ist z.B. AES, der Schlüssel für AES wird per DH ausgehandelt, da reicht dir ein Öffentliches Zertifikat (Client) und ein Private Key (Server), aber du hast am Anfang keinen Private Key am Client, dieser wird erst per DH ermittelt. Das Certifikat funktioniert nur als Trust Anchor, nicht mehr, nicht weniger.

SSH kann übrigens auch mit X509 verwendet werden, ebenso kennt SSH auch das Konzept von Key Signing, was z.B. durch Hashicorp Vault und andere Tools sogar gut automatisierbar ist.

Der CA ist ein Server der zwei aufgaben hat. 1. Zertifikate zu signieren und 2. Clients gegenüber die Echtheit eines Zertifikat zu bestätigen.

Kaum ein Client prüft heute Zertifikate, abgesehen von Datum, Trust Chain und paar andre Faktoren noch groß. OCSP und andere haben Impact auf die Latenz von Anwendungen, und würden dazu führen das bei nicht Verfügbarkeit dieser die Verbindung abgebrochen werden müsste. Gibt natürlich noch OCSP Stapling, aber lassen wir es mal mit den Details, zumal nicht jede Anwendung heute ein vorbildlicher Browser ist.

Daher sind Selbst signierte Zertifikate wertlos.

Nein, für den Browser, nicht für diverse andere Anwendungen, wie z.b. ein VPN. Auch mTLS kommt prima mit nicht öffentlich signierten Certs aus. Der Client hat hart kodiert die CA, nur der Client muss davon wissen, egal was alle anderen Programme oder Tools an Meinung dazu haben.

Das ist wie bei einem Perso. den kann man ja auch nicht selbst aus ducken.

Kann ich den Autovergleich nochmal sehen?

Für ein privaten VPN reicht es einen Server Schlüsselpaar zu erstellen und das der Server den öffentlichen Schlüssel des Client kennt, um eine sichere verschlüsselte Verbindung aufzubauen.

So arbeiten, moderne, VPNs nicht. Beide Seiten müssen sich gegenseitig vertrauen, oben drauf prüft ein VPN Server noch die CRL der CA, weitere Authentifizierung (z.B. Azure AD) und ob der Cert Typ (Client/Server) korrekt ist.

Der Client muss dem Server vertrauen, das machen übrigens Browser auch: Google Chrome traut für bestimmte Dienste nur der CA die man ihm "einprogrammiert" hat, früher gab es sogar mal HPKP.

Akedia

Anmeldungsdatum:
3. Januar 2018

Beiträge: 92

Warum nicht Wireguard? Sicher, einfach, schnell eingerichtet.

https://wiki.ubuntuusers.de/WireGuard/

Antworten |