Qnap OpenVPN WARNING No server certificate verification method has been enabled+Frage

David8161

Lt. Junior Grade
Registriert
Dez. 2013
Beiträge
433
Qnap OpenVPN Einrichtung, Sicherheit

Hallo zusammen,
habe mir einen Qnap Ts453mini gekauft.
Nun habe ich mir den VPN Server eingerichtet. Als DNS Dienst verwende ich den von myqnapcloud. (wenn die Vpn Verbindung richtig eingestellt ist und die QnapCloud kein SSL Zertifikat hat ist dann der Tunnel trotzdem sicher? Der DNS gibt ja nur kurz die Ip vom Router durch oder?)
Als Client verwende ich ein Notebook mit Windows Vista Business 32bit.
Den Port UDP 1194 habe ich am Router (7390) an den Nas weitergeleitet.
Am Notebook habe ich diesen OpenVPN Client installiert. https://www.computerbase.de/downloads/systemtools/netzwerk/openvpn/ natürlich die 32bit Version. Vom Nas habe ich das Zertifikat heruntergeladen. Naja ist ja ein Ordner mit ca, openvpn (OVPN_Datei) und das Readme.
In dem Readme steht ja man soll da OPENVPN_SERVER_IP mit der Server ip ersetzen. Bei mir steht da schon die DNS Adresse und der Port drin. Dann muss ich da ja eigentlich nichts mehr ändern oder?
Das ca und die openvpn Date habe ich in die Config vom Client reinkopiert so wie in dem readme beschrieben. Den Client führe ich als Admin aus. Kann dann auch den Benutzernamen und das Passwort vom Nas Benutzer eingeben. Verbindung wird aufgebaut. Komme auch auf mein Nas dann drauf etc.

Im Log nach der Verbindung steht das. Habe ip Adresse rausgenommen :)

Sun Apr 17 13:25:49 2016 OpenVPN 2.3.10 i686-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on Jan 4 2016
Sun Apr 17 13:25:49 2016 Windows version 6.0 (Windows Vista)
Sun Apr 17 13:25:49 2016 library versions: OpenSSL 1.0.1q 3 Dec 2015, LZO 2.09
Enter Management Password:
Sun Apr 17 13:26:00 2016 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Sun Apr 17 13:26:04 2016 UDPv4 link local: [undef]
Sun Apr 17 13:26:04 2016 UDPv4 link remote: [AF_INET](IP Adresse und Port)
Sun Apr 17 13:26:04 2016 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Sun Apr 17 13:26:06 2016 [TS Series NAS] Peer Connection Initiated with [AF_INET](IP Adresse und Port)
Sun Apr 17 13:26:08 2016 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Sun Apr 17 13:26:08 2016 open_tun, tt->ipv6=0
Sun Apr 17 13:26:08 2016 TAP-WIN32 device [LAN-Verbindung 2] opened: \\.\Global\{COde habe ich mal rausgenommen}.tap
Sun Apr 17 13:26:08 2016 Notified TAP-Windows driver to set a DHCP IP/netmask of 10.8.0.6/255.255.255.252 on interface {COde habe ich mal rausgenommen} [DHCP-serv: 10.8.0.5, lease-time: 31536000]
Sun Apr 17 13:26:08 2016 Successful ARP Flush on interface [19] {COde habe ich mal rausgenommen}
Sun Apr 17 13:26:13 2016 Initialization Sequence Completed
Sun Apr 17 13:27:32 2016 Authenticate/Decrypt packet error: bad packet ID (may be a replay): [ #71 ] -- see the man page entry for --no-replay and --replay-window for more info or silence this warning with --mute-replay-warnings
Sun Apr 17 13:28:59 2016 SIGTERM[hard,] received, process exiting


Was bedeutet diese Warnung? bzw wie bekomme ich diese gelöst? Und was ist das für ein Error? könnt ihr mir da helfen?
Wäre die Verbindung so momentan überhaupt sicher?
Und dann gibt es beim Client ja noch so ein easy-rsa. damit kann ich irgendwie nichts anfangen und wurde auch nicht wirklich schlau drüber. Ich hoffe ihr könnt mir helfen.
 
Zuletzt bearbeitet:
Die Warnung kommt daher, dass man bei der Erstellung der Zertifikate den "ns-cert-type" setzen kann. Damit wird ein Zertifikat explizit als Server-Zertifikat oder eben als normales Client-Zertifikat ausgewiesen. Nun kann man im OpenVPN-Client einstellen, dass er sich ausschließlich mit Serverzertifikaten verbinden darf. Warum? Man-In-The-Middle. Wenn du an 5 Familienmitglieder jeweils ein Zertifikat ausgibst und einer verliert seinen Laptop samt Zertifikat (zB geklaut), dann kann der Finder/Dieb mit dem Zertifikat keinen eigenen Server starten und potentiell deine Clients hinter's Licht führen. Zwar würde die Zertifikatsprüfung trotzdem erfolgreich sein, sind ja alle von derselben CA (Root-Zertifikat) zertifiziert, aber spätestens bei der "Server-Zertifikats-Kontrolle" würde dein Client dann sagen: Nö, du bist ja nur ein Client.Zertifikat!

Leider sind die meisten Zertifikate, die durch Wizards in Routern automatisch erzeugt werden ohne diesee Eigenschaft im Zertifikat. Daher kommt beim Verbindungsaufbau eine Warnung, dass der Server, mit dem man sich gerade verbinden will, nicht explizit als Server gekennzeichnet ist und eben auch mit einem CLient-Zertifikat läuft. OpenVPN warnt dann, dass es sich potentiell um eine Man-In-The-Middle-Attacke handeln kann.

ns-cert-type server

Das wäre die Zeile in der client.conf / client.ovpn , die dafür sorgen würde, dass man sich NUR mit einem Server-Zertifikat verbinden kann.


Lange Rede kurzer Sinn: Da das automatisch generierte Zertifikat vom Router nicht als Server-Zertifikat definiert ist, kannst du diese Warnung mehr oder weniger ignorieren, weil du eh nichts dagegen tun kannst - es sei denn man könnte die Zertifikate auf dem PC mit OpenSSL erstellen und auf den Router laden. Dann könnte man das Server-Flag setzen.

Zur zweiten Meldung kann ich so auf Anhieb wenig sagen. Mit "verb 3" oder gar mehr kannst du das Log etwas aufblasen. Evtl. stehen dann noch weitere Infos da. Darüberhinaus wäre es natürlich sehr hilfreich, wenn du generell mal die configs hier postest.

*edit
Ersetze Router mit NAS. Hab erst im Nachhinein gelesen, dass es um ein QNAP NAS geht. Ändert aber nichts an der Sache.
 
Zuletzt bearbeitet:
okay, das habe ich jetzt nicht ganz mit der Überprüfung verstanden... Das ist ja auch einfach 1 Zertifikat, nicht mehrere... Wo kann ich in dem Client einstellen, dass der sich nur mit Serverzertifikaten (Ist damit das Zertifikat gemeint das ich vom Nas runterladen muss?) verbinden darf?
bei mir wurde das Zertifikat vom VPN Server, der auf dem Qnap Nas ist erstellt. Da kann man auch gar nicht viel einstellen.
Ich glaube ich könnte gar nicht ein Zertifikat für den VPN Server hochladen. Wenn doch wüsste ich leider nicht wie. :/
Kann gut sein, dass ich da gerade ein kleines Durcheinander drin hab :D

oh dein Edit hats mir erst jetzt angezeigt aber okay
 
Zuletzt bearbeitet: (edit)
Moin,

es geht um das Zertifikat des Qnap. Dieses muss das Attribut "ns-cert-type server" haben. Damit wird nur gesagt, das Qnap ist ein Server.
In der Config müsste das hier sein:
Code:
# Verify server certificate by checking
# that the certicate has the nsCertType
# field set to "server".  This is an
# important precaution to protect against
# a potential attack discussed here:
#  http://openvpn.net/howto.html#mitm
#
# To use this feature, you will need to generate
# your server certificates with the nsCertType
# field set to "server".  The build-key-server
# script in the easy-rsa folder will do this.
;ns-cert-type server

Auf die schnelle hat google das hier dazu ausgespuckt: http://wiki.qnap.com/wiki/Use_OpenSSL_to_generate_certificate_for_QNAP_NAS_SSL_connection

gruß
 
Ich sag ja, bei solchen VPN-Wizards in Routern oder NAS, wird das Server-Flag einfach nicht gesetzt.

Grundsätzlich werden für eine OpenVPN-Verbindung immer folgende Zertifikate erstellt:

1 Root-Zertifikat (CA)
1 Server-Zertifikat
x Client-Zertifikate

Das Serverzertifikat wird man bei den Wizards nie zu Gesicht bekommen. Man bekommt als Download nur das Root- sowie das Client-Zertifikat, unter Umständen auch beides zusammen in einem Container (zB PKCS12 = .p12 Datei). Wenn das NAS das Zertifikat für den Server nicht selbst explizit mit Server-Flag generiert, kannst du wenig tun. Die Warnung beim Client wird dann immer kommen, weil das theoretisch eine Sicherheitslücke darstellen kann. Für einen erfolgreichen Angriff müsste der Angreifer aber 1. ein Client-Zertifikat von dir haben und 2. irgendwie zwischen dir und deinen Server kommen. Fiktives Beispiel: Du sitzt beim Kumpel in der Wohnung und er biegt in seinem Internet-Router die öffentliche IP deines VPN-Servers auf eine interne IP um - und startet dort einen OpenVPN-Server mit dem geklauten Zertifikat. Dein Laptop würde das nicht merken und munter mit dem PC vom Kumpel VPN machen und denken, er würde mit dem QNAP reden. Ähnliches könnte zB in einem öffentlichen WLAN passieren. Wie (un)wahrscheinlich das ist, kann man so nicht sagen. Wenn jemand es auf dich abgesehen hat, wäre das ein potentieller Angriffsvektor. Wenn nicht, ist es eher vernachlässigbar würde ich meinen.

*edit
Ah, error hat's rausgefunden. Offenbar kann man doch eigene Zertifikate auf das QNAP laden. Dann könnte man für das Server-Zertifikat auch das Flag setzen. easy-rsa wird bei OpenVPN auf dem PC eigentlich immer mitinstalliert. Da sind fertige Scripte dafür dabei. Anleitung dazu bei der OpenVPN-Seite.
 
Zuletzt bearbeitet:
Dumme Frage. Ist das was error gepostet hat nicht für die SSL Verbindung auf den Nas also Cloud und Config? Der VPN Server hat nochmal andere zertifikate oder passt das trotzdem?
 
David8161 schrieb:
Dumme Frage. Ist das was error gepostet hat nicht für die SSL Verbindung auf den Nas also Cloud und Config? Der VPN Server hat nochmal andere zertifikate oder passt das trotzdem?
Moin,

ein Zertifikat ist ein Zertifikat. Wofür du es verwendest, ist deine eigene Entscheidung.
Der Name "SSL" ist hierbei irreführend. SSL ist die Vorgehensweise, wie die Verschlüsselung zustande kommt.
Es gibt SSL für Websites, SSL für VPN usw.. Die Zertifikatsattribute sind hierbei entscheidend.

Generell kannst du jedes Zertifikat für alles verwenden. Technisch ist das schwieriger, da für bestimmte Rollen, z.B. "VPN-Server", andere Attribute verlangt werden als für SSL bei Webisten. Der Vorgang zum Erzeugen der Zertifikate ist aber immer ähnlich. Nur die Attribute unterscheiden sich.

Tl;dr:
Ja, meine Anletung richtet sich vorranig für die Browserzertifikate, aber kann mit etwas googlen für das VPN angepasst werden :)

gruß
 
Ah okay ja dann ignoriere ich die Nachricht bei der vpn verbindung... Würdet ihr auch oder?
Und wisst ihr was der Error aussagt?
 
Authenticate/Decrypt packet error: bad packet ID (may be a replay): [ #71 ] -- see the man page entry for --no-replay and --replay-window for more info or silence this warning with --mute-replay-warnings

Er sagt nur aus, dass zwei Pakete mit der selben ID bei dir angekommen sind. Und dass es vermutlich ein erneut gesendetes Paket ist, weil die Bestätigung dafür zu spät oder gar nicht angekommen ist. Also hat es der Server doppelt gesendet.

Ah okay ja dann ignoriere ich die Nachricht bei der vpn verbindung... Würdet ihr auch oder?
Nuja, ich persönlich würde versuchen mir ein passendes Zertifikat zu erzeugen. Ich bin aber auch jemand, der so lange optimiert bis es perfekt ist ^^

Es ist zwar sehr unwahrscheinlich, dass dich jemand abhören will aber wissen kann es keiner.
 
Okay ja hättest du ein lösungsvorschlag?
Habe leider nur noch morgen Zeit dann ist der Client erst mal ne Runde weg... Und es wäre gut wenn dann der Client laufen würde...
 
Sooo,

ich hat etwas rumprobiert ^^

WICHTIG: Wenn wenig Zeit vorhanden ist, dann mach es bitte wenn du genügen Zeit hast Fehler zu suchen!
Unbedingt ein BACKUP der Einstellungen/des Qnap machen!
Ich übernehme keine Haftung für evtl. Probleme!


Zuallererst brauchst du OpenSSL Windows. Dieses bitte installieren.
Nach der installation gehst du auf "C:\OpenSSL-Win64\bin" und ersetzt dort die openssl.cfg mit meiner. Ich habe dort
[server]
nsCertType=server
hinzugefügt für Serverzertifikate. Du kannst es auch selbst in deine Config hinzufügen. Es ist ca. Zeile 104 über den #################

Nachdem das erledigt ist, öffnest du bitte eine Eingabezeile mit Administratorrechten in dem Ordner.
Das Zertifikate ist nachher als server.crt im Ordner sichtbar.

Nun die Befehle:
1) Neuen Server-Key generieren mit 2048 Bits.
openssl genrsa -policy server -out server.key 2048
2) Den Key als Zertifikat ausgeben. Das "-policy server" verweist hierbei auf unseren neuen Eintrag, dass das nsCertType hinzugefügt werden soll.
openssl req -new -key server.key -out server.crt -x509 -days 365 -policy server
Das Zertifikat ist nun für 365 Tage gültig und sollte den passenden Eintrag haben:
Unbenannt.jpg
EDIT 2:
3) Das zertifikat von crt nach pem konvertieren
openssl x509 -in server.crt -out server.pem -outform PEM
/EDIT 2

Das müsstest du nun in das Qnap importieren und dort als VPN-Serverzertifikat nutzen.

gruß

EDIT: Ich vermute du müsstest für alle Clients das Serverzertifikat/ die Config neu exportieren. Ich bin aber nicht mit QNAP vertraut.!
 
Zuletzt bearbeitet:
Okay danke!
2 fragen noch
Wie meinst du eingabezeilw in den Ordner öffnen? Einfach das 'ne mit Admin Rechten und dann mit cd in das verzeichnis rutschen oder gibt es elegantere Lösungen?
Und wie bekommw ich das Zertifikat als von zertifikat imporriert? :0
Es kann sein dass ich heute Abend nicht mehr antworte schreibe morgen früh Klassen Arbeit
Trotzdem danke schon mal melde mich dann morgen wieder
 
David8161 schrieb:
Wie meinst du eingabezeilw in den Ordner öffnen? Einfach das 'ne mit Admin Rechten und dann mit cd in das verzeichnis rutschen oder gibt es elegantere Lösungen?
Über Shift+Rechtsklick kannst du vor Ort eine CMD öffnen. Da ich aber als "Nichtadmin" arbeite bin ich über cmd als Admin öffnen und dann mit cd rüber.
David8161 schrieb:
Und wie bekommw ich das Zertifikat als von zertifikat imporriert? :0
Es kann sein dass ich heute Abend nicht mehr antworte schreibe morgen früh Klassen Arbeit
Trotzdem danke schon mal melde mich dann morgen wieder
Im Qnap gibt es unter "Systemsteuerung" -> "Sicherheit" ->"Zertifikat & Privater SChlüssel" eine Importmöglichkeit.
Hierzu kannst du das Zertifikat "server.pem" mit z.B. notepad öffnen und ins Qnap kopieren.

Ich habe oben die Anleitung angepasst.

gruß

EDIT:
In der QNAP Demo gibt es ein Zertifikat, das ist das "server.pem" und den privaten Schlüssel, das ist die Datei der "server.key". Das müsste dann so klappen. Ich hab leider kein Qnap zu ausprobieren ^^
 
Zuletzt bearbeitet:
Sorry für die Schreibfehler schuld ist die Autokorrektur von Handy ... Okay ich glaube nur dass das so nicht funzt... Bin mir nicht sicher aber ich glaube das Zertifikat das man da einfügt ist für die weboberfläche also myqnapcloud und die Dienste photo, fileststion etc. Es gibt ja extra eine Anwendung vpn server. Und da lädt man ja das Zertifikat für den client runter... Ich vermute fast dass man dazu in den root vom nas müsste mit SSH oder was es da auch gibt um die Zertifikate dann zu ersetzen
 
Ich kann dir leider nicht sagen, wie Qnap das Ganze intern verarbeitet. :(
Es kann sein, dass das eine Zertifikat für alles genutzt wird.
Oder für jede Anwendung ein Eigenes erstellt wird.

Das müsste jemand ausprobieren.
 
Zurück
Oben