diff --git a/MA-Inhalt.tex b/MA-Inhalt.tex index da17e2e..3f389a9 100644 --- a/MA-Inhalt.tex +++ b/MA-Inhalt.tex @@ -585,18 +585,19 @@ push "route-ipv6 2001:638:614:1744::/64 2001:638:614:1750::1" # experimental ipv Da der Platzhalter \texttt{vpn\_gateway} für IPv6-Routen leider nicht funktioniert, muss hier die IPv6-Adresse des VPN-Servers im VPN direkt als Ziel der Route angegeben werden. \paragraph{Kompression} -Auf die Kompression des VPN-Datenverkehrs wird aus Sicherheits\-grün\-den verzichtet. +Auf die Kompression des VPN-Datenverkehrs wird aufgrund der in diesem Absatz aufgeführten Punkte verzichtet. Am 03.06.2018 wurden Hinweise in der Manpage von OpenVPN eingefügt\footnote{\url{https://github.com/OpenVPN/openvpn/commit/6795a5f3d55f658fc1a28eb9f3b11d1217e3329c}}, in denen vor der Verwendung von Kompression gewarnt wird. Diese Hinweise sind in der Manpage von OpenVPN in Version~2.4.6 noch nicht enthalten, da diese Version von den Entwicklern bereits am 19.04.2018\footnote{\url{https://github.com/OpenVPN/openvpn/releases/tag/v2.4.6}} freigegeben wurde. Zusätzlich wird in der \enquote{Best Current Practice} RFC~7525 zur Deaktivierung der Kompression von TLS geraten\cite[Vergleich][Kapitel 3.3]{RFC7525}. Auf der DEFCON~26 wurde mit \enquote{VORACLE} ein in diesem Kontext relevanter Angriff auf OpenVPN vorgestellt\footnote{\url{https://media.defcon.org/DEF\%20CON\%2026/DEF\%20CON\%2026\%20presentations/Nafeez/DEFCON-26-Nafeez-Compression-Oracle-attacks-on-VPN-Networks.pdf}}, der die Verwendung von Kompression ausnutzt. -\paragraph{Absicherung der Kommunikation} -Wie in Abschnitt~\ref{ssct:openvpn} bereits erläutert wurde, unterscheidet OpenVPN bei der Kommunikation zwischen zwei OpenVPN-Prozessen zwischen Datenkanal für Nutzdaten und Kontrollkanal für Steuernachrichten. -Um die VPN-Kommunikation nach Anforderung~\ref{req:traffic} aus Abschnitt~\ref{sct:requirements} abzusichern und die in Kapitel~\ref{cpt:user_concept} konzipierte Zertifizierungsstelle zur Benutzerauthentisierung zu verwenden, wird OpenVPN im TLS-Modus betrieben. +\paragraph{Zertifikatgestützte Authentisierung} +Um die in Kapitel~\ref{cpt:user_concept} konzipierte Zertifizierungsstelle zur Benutzerauthentisierung zu verwenden und die VPN-Kommunikation nach Anforderung~\ref{req:traffic} aus Abschnitt~\ref{sct:requirements} abzusichern, wird OpenVPN im TLS-Modus betrieben. -Dadurch werden in der Client- und Serverkonfiguration über die Parameter \texttt{ca}, \texttt{cert} und \texttt{key} Dateipfade konfiguriert, unter denen das Wurzelzertifikat, das Client- beziehungsweise Serverzertifikat und der dazugehörige private Schlüssel abgelegt sind. +In der \textbf{Clientkonfiguration} wird dafür der Parameter \texttt{tls-client} gesetzt, in der \textbf{Serverkonfiguration} wird analog dazu der Parameter \texttt{tls-server} verwendet. + +Anschließend werden in der \textbf{Client- und Serverkonfiguration} über die Parameter \texttt{ca}, \texttt{cert} und \texttt{key} Dateipfade konfiguriert, unter denen das Wurzelzertifikat, das Client- beziehungsweise Serverzertifikat und der dazugehörige private Schlüssel abgelegt sind. In der \textbf{Serverkonfiguration} werden zusätzlich über die Parameter \texttt{dh} und \texttt{crl-verify} Dateipfade angegeben, unter dene die im Voraus berechneten Parameter für den Diffie-Hellman-Schlüsselaustausch und die aktuelle Kopie der von der CA herausgegebenen CRL abgespeichert sind. \begin{lstlisting} ca inform/ca.crt @@ -606,7 +607,18 @@ dh inform/dh.pem crl-verify inform/crl.pem \end{lstlisting} +Um zu unterbinden, dass Clientzertifikate zum Betrieb eines OpenVPN-Servers verwendet werden, wird mit dem Parameter \texttt{remote-cert-tls} in der \textbf{Clientkonfiguration} angegeben, dass von der Gegenseite ein Zertifikat mit \enquote{Serverrolle} präsentiert wird: +\begin{lstlisting} +remote-cert-tls server +\end{lstlisting} +Analog dazu wird in der \textbf{Serverkonfiguration} mit dem selben Parameter verlangt, dass VPN-Clients immer ein Zertifikat mit \enquote{Clientrolle} besitzen. +\begin{lstlisting} +remote-cert-tls client +\end{lstlisting} +\paragraph{Kryptografische Parameter} +Wie in Abschnitt~\ref{ssct:openvpn} bereits erläutert wurde, unterscheidet OpenVPN bei der Kommunikation zwischen zwei OpenVPN-Prozessen zwischen Datenkanal für Nutzdaten und Kontrollkanal für Steuernachrichten. +In diesem Absatz werden die Parameter definiert, die Wir sprechen nur TLS~1.2 oder höher. \begin{lstlisting} @@ -624,7 +636,7 @@ Verschlüsselung der Daten im Datenkanal mit AES-256-GCM. \begin{lstlisting} cipher AES-256-GCM \end{lstlisting} -Die Aushandlung dieses Ciphers ist auf der Serverseite deaktiviert mit ncp-disable +Die Aushandlung dieses Ciphers ist auf der Serverseite deaktiviert mit \texttt{ncp-disable} Die Hashfunktion SHA-256 wird als message digest algorithm in HMAC verwendet, um die Pakete in Daten- und Kontrollkanal zu authentisieren.