diff --git a/MA-Inhalt.tex b/MA-Inhalt.tex index c573ea5..c2de5ea 100644 --- a/MA-Inhalt.tex +++ b/MA-Inhalt.tex @@ -17,6 +17,7 @@ Bisher ist dieser Dienst nur über IPv4 erreichbar und ermöglicht den Zugang in \newpage Im Rahmen dieser Masterarbeit soll ein neuer, IPv6-fähiger VPN-Dienst konzipiert werden, der die Idee des bisherigen IPv4-VPN-Dienst aufgreift. +\todo{Bereich ab hier noch einmal überarbeiten, wenn der Rest der Arbeit fertig ist.} Dafür wird zunächst die zukünftige Umgebung des VPN-Dienstes, die Netzarchitektur der Abteilung Informatik, inklusive ihrem Firewallkonzept vorgestellt. Anschließend werden alle Rahmenbedingungen und Anforderungen erfasst, die bei der Konzeption des neuen VPN-Dienst berücksichtigt werden sollen. Anhand der daraus abgeleiteten Bedingungen werden mögliche Software-Kandidaten vorgestellt und aus ihnen eine Auswahl getroffen. @@ -27,6 +28,33 @@ Die im Rahmen dieser Arbeit erzeugten Dokumente sind dem Anhang beigefügt. \chapter{Arbeitsauftrag} \label{cpt:the_task} \todo{Die Abteilung Informatik benötigt einen neuen VPN-Dienst, der IPv6 gleichermaßen wie IPv4 unterstützt.} +Die Abteilung Informatik betreibt einen VPN-Dienst auf Basis von OpenVPN, über den Mitarbeiter und Studenten auf Netze der Abteilung Informatik aus dem Internet heraus zugreifen können. +Das geht aber noch nicht über IPv6, sondern nur über IPv4. +Deshalb soll ein neuer VPN-Dienst her, der mit aktuellem Stand der Technik (Jahr 2018) umgesetzt werden soll. + +\paragraph{Was ist VPN, welchen Zweck hat es} +\todo{Was ist ein VPN, was macht ein VPN aus? (Basistechnik kurz erklären)} +Virtual +Private +Network + +\paragraph{Ermittelte Anforderungen} \label{par:requirements} +In diesem Abschnitt werden alle Anforderungen und Rahmenbedingungen vorgestellt, die bei der Konzeption des neuen VPN-Dienst berücksichtigt werden müssen. +Es handelt sich hier um Vorgaben, die im persönlichen Gespräch mit dem Auftraggeber und Erstprüfer dieser Arbeit ermittelt wurden. + +\begin{enumerate}[label=Anf\arabic*] +\item \label{req:dualstack} \textbf{Dual-Stack-Betrieb:} Der VPN-Dienst soll aus dem Internet über IPv4 und IPv6 erreichbar sein und auch innerhalb des VPN diese beiden Protokolle anbieten. +\item \label{req:routing} \textbf{VPN-interner Datenverkehr:} Nur die internen Netzbereiche der Abteilung Informatik sollen für Benutzer über das VPN erreichbar sein. +Das betrifft alle Sicherheitszonen außer dem Internet. +\item \label{req:traffic} \textbf{VPN-externer Datenverkehr:} Die Kommunikation zwischen VPN-Client und VPN-Server soll authentisiert und vertraulich stattfinden. +\item \label{req:users} \textbf{Benutzer:} Der VPN-Dienst soll von autorisierten Mitarbeitern und Studenten aus der Abteilung Informatik benutzt werden können. +Die Benutzer des VPN-Dienst sollen durch die Administratoren des VPN-Dienst einfach verwaltet werden können. +\item \label{req:serveros} \textbf{Betrieb des VPN-Servers:} Die Serverkomponente des VPN-Dienst soll auf einer aktuellen Version von Debian (9 oder höher) betrieben werden. +\item \label{req:clientos} \textbf{Betrieb der VPN-Clients:} Die VPN-Clientsoftware soll für aktuelle Versionen gängiger Betriebssysteme zur Verfügung stehen. +Darunter fallen Microsoft Windows 10 (Version~1709 oder höher), Apple MAC OS (ab Version~10.13) und Linux-Distributionen (ab Kernel Version~3.10). +\item \label{req:logging} \textbf{Betriebsprotokoll:} Während des Betrieb des VPN-Dienst sollen keine Daten protokolliert werden, die Rückschlüsse auf das Benutzerverhalten zulassen. Im Rahmen einer laufenden Fehlersuche soll es möglich sein, mehr Daten zu protokollieren. +\item \label{req:finance} \textbf{Finanzieller Rahmen:} Es stehen keine finanziellen Mittel für den Erwerb einer VPN-Lösung zur Verfügung. +\end{enumerate} \chapter{Netzarchitektur der Abteilung Informatik} \label{cpt:netarchitecture} @@ -95,29 +123,21 @@ Labor-Netze & erlaubt & erlaubt & erlaubt & erlaubt & --- \\ \end{table} -\chapter{Konzeption des neuen VPN-Dienst} \label{cpt:concept_vpn_service} -\todo{Wir schauen mal, was so gebraucht wird und wie es aussehen soll.} +\chapter{Abgeleitetes Dienstkonzept} \label{cpt:service_concept} +\todo{Aufgrund der Anforderungen ergibt sich, dass der VPN-Dienst in Client-Server-Architektur aufgesetzt wird, über Dualstack erreichbar ist, eigene IPv4- und IPv6-Adressen an VPN-Clients austeilt, Routen für die relevanten Informatik-Netzt auf den Clients einrichtet, verschlüsselt kommuniziert und Benutzer erst nach Authentisierung zulässt.} + +Client-Server-Architektur, Benutzerauthentisierung muss durchgeführt werden. +Nur bestimmte Netzbereiche der Abteilung Informatik werden durch das VPN geroutet +Wir werden aus Layer~3 tunneln und dafür müssen wir den VPN-Clients VPN-interne IPv4- und IPv6-Adressen vergeben. -\section{Anforderungsanalyse} \label{sct:requirements} -In diesem Abschnitt werden alle Anforderungen und Rahmenbedingungen vorgestellt, die bei der Konzeption des neuen VPN-Dienst berücksichtigt werden müssen. -Es handelt sich hier um Vorgaben, die im persönlichen Gespräch mit dem Auftraggeber und Erstprüfer dieser Arbeit ermittelt wurden. +\chapter{Auswahl der VPN-Software} \label{cpt:choosing_vpn_software} +Das Umfeld, in dem der VPN-Dienst errichtet werden soll, wurde im vorherigen Kapitel bereits vorgestellt. +In diesem Kapitel wird die Software ausgesucht, mit der der VPN-Dienst umgesetzt werden soll. +Dazu werden zunächst die Anforderungen ermittelt und analysiert. +Im Anschluss werden dann passende Softwarekandidaten vorgestellt und für die Auswahl der in dieser Arbeit zu verwendenden Software gegenübergestellt. -\begin{enumerate}[label=Anf\arabic*] -\item \label{req:dualstack} \textbf{Dual-Stack-Betrieb:} Der VPN-Dienst soll aus dem Internet über IPv4 und IPv6 erreichbar sein und auch innerhalb des VPN diese beiden Protokolle anbieten. -\item \label{req:routing} \textbf{VPN-interner Datenverkehr:} Nur die internen Netzbereiche der Abteilung Informatik sollen für Benutzer über das VPN erreichbar sein. -Das betrifft alle Sicherheitszonen außer dem Internet. -\item \label{req:traffic} \textbf{VPN-externer Datenverkehr:} Die Kommunikation zwischen VPN-Client und VPN-Server soll authentisiert und vertraulich stattfinden. -\item \label{req:users} \textbf{Benutzer:} Der VPN-Dienst soll von autorisierten Mitarbeitern und Studenten aus der Abteilung Informatik benutzt werden können. -Die Benutzer des VPN-Dienst sollen durch die Administratoren des VPN-Dienst einfach verwaltet werden können. -\item \label{req:serveros} \textbf{Betrieb des VPN-Servers:} Die Serverkomponente des VPN-Dienst soll auf einer aktuellen Version von Debian (9 oder höher) betrieben werden. -\item \label{req:clientos} \textbf{Betrieb der VPN-Clients:} Die VPN-Clientsoftware soll für aktuelle Versionen gängiger Betriebssysteme zur Verfügung stehen. -Darunter fallen Microsoft Windows 10 (Version~1709 oder höher), Apple MAC OS (ab Version~10.13) und Linux-Distributionen (ab Kernel Version~3.10). -\item \label{req:logging} \textbf{Betriebsprotokoll:} Während des Betrieb des VPN-Dienst sollen keine Daten protokolliert werden, die Rückschlüsse auf das Benutzerverhalten zulassen. Im Rahmen einer laufenden Fehlersuche soll es möglich sein, mehr Daten zu protokollieren. -\item \label{req:finance} \textbf{Finanzieller Rahmen:} Es stehen keine finanziellen Mittel für den Erwerb einer VPN-Lösung zur Verfügung. -\end{enumerate} - -Anhand der Anforderungen~\ref{req:dualstack} bis \ref{req:finance} aus Abschnitt~\ref{sct:requirements} werden vorhandene Programme ermittelt, die sich als Kandidat zur Umsetzung des VPN-Dienstes eignen. +Anhand der Anforderungen~\ref{req:dualstack} bis \ref{req:finance} aus Abschnitt~\ref{par:requirements} werden vorhandene Programme ermittelt, die sich als Kandidat zur Umsetzung des VPN-Dienstes eignen. Aufgrund des finanziellen Rahmens (\ref{req:finance}) kommt nur kostenfreie Software in Frage, deren Serverkomponente mit aktuellem Debian (\ref{req:serveros}) kompatibel ist. Die Clientkomponenten der gesuchten Software müssen unter den aktuellen Betriebssystemen lauffähig sein (\ref{req:clientos}). @@ -130,16 +150,6 @@ Das wirkt sich auch auf Reaktionszeiten der Software-Distributoren aus: Entsprec Weiterhin soll die gesuchte Software IPv4 und IPv6 unterstützen (\ref{req:dualstack}), die Routingtabellen der VPN-Clients (\ref{req:routing}) anpassen können und in Bezug auf Protokollierung (\ref{req:logging}) konfigurierbar sein. -\section{Konzeption des neuen VPN-Dienst} \label{sct:concept_vpn_service} -\todo{Aufgrund der Anforderungen ergibt sich, dass der VPN-Dienst in Client-Server-Architektur aufgesetzt wird, über Dualstack erreichbar ist, eigene IPv4- und IPv6-Adressen an VPN-Clients austeilt, Routen für die relevanten Informatik-Netzt auf den Clients einrichtet, verschlüsselt kommuniziert und Benutzer erst nach Authentisierung zulässt.} - - -\chapter{Auswahl der VPN-Software} \label{cpt:choosing_vpn_software} -Das Umfeld, in dem der VPN-Dienst errichtet werden soll, wurde im vorherigen Kapitel bereits vorgestellt. -In diesem Kapitel wird die Software ausgesucht, mit der der VPN-Dienst umgesetzt werden soll. -Dazu werden zunächst die Anforderungen ermittelt und analysiert. -Im Anschluss werden dann passende Softwarekandidaten vorgestellt und für die Auswahl der in dieser Arbeit zu verwendenden Software gegenübergestellt. - \section{Kandidaten für VPN-Serversoftware} \label{sct:software_candidates} Ausgangspunkt für die Suche nach passender VPN-Software ist die Wahl der Serverkomponente: Sie soll quelloffen sein und auf einem Server mit aktuellem Debian eingesetzt werden können. Deshalb sind die Debian-Paketquellen die erste Anlaufstelle für die Suche. @@ -342,7 +352,7 @@ Die verschiedenen Konfigurationsdateien werden in ihren eigenen Manpages detaill \paragraph{Zusammenfassung und Auswahl} In diesem Abschnitt wurden OpenVPN und Strongswan als Lösungen für die Umsetzung eines VPN gegenübergestellt. Dabei hat sich gezeigt, dass OpenVPN in den Kategorien Plattformabhängigkeit, Verfügbarkeit des Quellcode, Komplexität und Benutzerfreundlichkeit im Vergleich zu Strongswan besser abschneidet. -Dadurch ist OpenVPN besser für die Umsetzung eines VPN-Dienst geeignet, der die in Abschnitt~\ref{sct:requirements} genannten Anforderungen erfüllt. +Dadurch ist OpenVPN besser für die Umsetzung eines VPN-Dienst geeignet, der die in Abschnitt~\ref{par:requirements} genannten Anforderungen erfüllt. Somit wird OpenVPN als VPN-Software zur Umsetzung des VPN-Dienst gewählt. @@ -351,8 +361,7 @@ Nachdem die VPN-Software für das Vorhaben dieser Arbeit ausgewählt wurde, wird Zielgruppe des Dienstes sind Beschäftigte und Studenten der Abteilung Informatik in der Größenordnung von etwa 50-500~Benutzern. Beschäftigte und Studenten sollen im zeitlichen Rahmen Ihrer Tätigkeiten in der Abteilung Informatik über das VPN Zugriff erhalten. - -\section{Methoden zur Benutzerauthentisierung} \label{sct:user_auth_methods} +\paragraph{Methoden zur Benutzerauthentisierung} \label{par:user_auth_methods} OpenVPN ermöglicht die Authentisierung von Benutzern mit den folgenden Methoden: \begin{itemize} \item Authentisierung mit X.509-Public-Key-Zertifikaten @@ -393,6 +402,7 @@ Sollte ein privater Schlüssel dennoch kompromittiert werden, besteht jederzeit Zusätzlich gilt, dass ein kompromittierter Schlüssel lediglich zur Benutzung des VPN-Dienst berechtigt. Dadurch reduziert sich der potentielle Schaden, den ein Angreifer mit einem kompromittierten Schlüssel anrichten könnte. +\paragraph{Wahl der Authentisierungsmethode} Insgesamt bringt die Authentisierung von Benutzern mit Zertifikaten im Vergleich zur Authentisierung auf Basis von Zugangsdaten einen höheren Arbeitsaufwand mit sich. Dafür besteht ein reduziertes Bedrohungsrisiko bei kompromittierten privaten Schlüsseln als im Vergleich zu kompromittierten Zugangsdaten, welche gegebenenfalls für weitere Dienste gültig sein können. Außerdem ist die Angriffsfläche beim Einsatz von Zertifikaten geringer, da kein zusätzlicher Code in das System integriert wird, durch das Zugangsdaten verarbeitet würden. @@ -501,7 +511,7 @@ Um auch bei manueller Installation der CRL einen unterbrechungsfreien Betrieb de \section{Betriebskonzept für die Zertifizierungsstelle} \label{sct:running_ca} Für den Betrieb der Zertifizierungsstelle wird in Absprache mit dem IT-Team eine virtuelle Maschine exklusiv für diesen Zweck erzeugt und im Mitarbeiter-Netz platziert. -Unter Berücksichtigung der Anforderung \ref{req:serveros} aus Abschnitt~\ref{sct:requirements} wird Debian~9 nach den Vorgaben des IT-Teams auf der virtuellen Maschine installiert. +Unter Berücksichtigung der Anforderung \ref{req:serveros} aus Abschnitt~\ref{par:requirements} wird Debian~9 nach den Vorgaben des IT-Teams auf der virtuellen Maschine installiert. Das EasyRSA-Paket wird unterhalb von \texttt{/root} ausgepackt und für den Einsatz als CA für den VPN-Dienst konfiguriert. \paragraph{Berechtigungen} @@ -531,11 +541,11 @@ Details zur Benutzung der CA sind in dem Dokument \enquote{Dokumentation der Zer \chapter{Konfiguration des VPN-Servers} \label{cpt:concept_vpn_server} -In diesem Kapitel wird gezeigt, wie der Server für den VPN-Dienst installiert und konfiguriert wird. Wie in Abschnitt~\ref{sct:requirements} bereits geklärt, wird laut Anforderung \ref{req:serveros} Debian~9 als Betriebssystem verwendet. +In diesem Kapitel wird gezeigt, wie der Server für den VPN-Dienst installiert und konfiguriert wird. Wie in Abschnitt~\ref{par:requirements} bereits geklärt, wird laut Anforderung \ref{req:serveros} Debian~9 als Betriebssystem verwendet. Die Konfiguration des Betriebssystems erfolgt dabei nach den Vorgaben des IT-Teams, damit der Dienst ohne zusätzliche Arbeiten als Produktivsystem übernommen werden kann. -\section{} \label{sct:} +\section{Konzeption} \label{sct:} OpenVPN unterstützt den Aufbau eines VPN-Tunnels auf OSI-Layer~2 und OSI-Layer~3. Im Prinzip könnten beide Tunnelvarianten für den Anwendungsfall dieser Arbeit verwendet werden. @@ -589,7 +599,7 @@ Nach Einrichtung des Servers wird in diesem Schritt die Konfiguration des OpenVP Nähere Informationen zu den verwendeten Optionen können in \cite[][]{man:openvpn} nachgeschlagen werden. \paragraph{Erreichbarkeit des Dienstes} -Laut Anforderung~\ref{req:dualstack} aus Abschnitt~\ref{sct:requirements} soll der VPN-Dienst über IPv4 und IPv6 aus dem Internet erreichbar sein. +Laut Anforderung~\ref{req:dualstack} aus Abschnitt~\ref{par:requirements} soll der VPN-Dienst über IPv4 und IPv6 aus dem Internet erreichbar sein. Als Ausgangspunkt dafür wird der DNS-Name des VPN-Dienst verwendet, der auf die IPv4- und IPv6-Dienst\-adresse zeigt. In der \textbf{Serverkonfiguration} reichen die ersten drei Zeilen aus, um über IPv4 und IPv6 auf UDP-Port~1194 den VPN-Dienst anzubieten: @@ -664,7 +674,7 @@ Zusätzlich wird in der \enquote{Best Current Practice} RFC~7525 zur Deaktivieru 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 auf aktivierter Kompression aufbaut. \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. +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{par:requirements} abzusichern, wird OpenVPN im TLS-Modus betrieben. 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.