diff --git a/MA-Inhalt.tex b/MA-Inhalt.tex index fbe0ff6..ad25611 100644 --- a/MA-Inhalt.tex +++ b/MA-Inhalt.tex @@ -101,7 +101,7 @@ Das betrifft alle Sicherheitszonen außer dem Internet. \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 Betriebsysteme zur Verfügung stehen. +\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. @@ -109,7 +109,7 @@ Darunter fallen Microsoft Windows 10 (Version 1709 oder höher), Apple MAC OS (a Anhand der Anforderungen~\ref{req:dualstack} bis \ref{req:finance} 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 Betriebsystemen lauffähig sein (\ref{req:clientos}). +Die Clientkomponenten der gesuchten Software müssen unter den aktuellen Betriebssystemen lauffähig sein (\ref{req:clientos}). Die Vorgabe von vertraulicher und authentisierter Kommunikation zwischen VPN-Client und VPN-Server (\ref{req:traffic}) impliziert, dass in der gesuchten Software Algorithmen zum Verschlüsseln und Signieren von Daten verwendet werden. Deshalb soll Kerckhoffs' Prinzip bei der Wahl der VPN-Software angewendet werden, indem ausschließlich @@ -125,7 +125,7 @@ Weiterhin soll die gesuchte Software IPv4 und IPv6 unterstützen (\ref{req:duals 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. Durch die Nutzung der Paketquellen ist das Installieren von Sicherheitsaktualisierungen über den Debian-Paketmanager möglich. -Arbeitsschritte wie das Patchen und Kompilieren des Quellcodes, sowie Tests und das Paketieren der Software werden von den Verwaltern der Debian-Pakete ausgeführt. +Arbeitsschritte wie das Anpassen und Kompilieren des Quellcodes, sowie Tests und das Paketieren der Software werden von den Verwaltern der Debian-Pakete ausgeführt. Die Authentizität der Pakete wird anhand von GPG-Signaturen durch den Paketmanager vor der Installation überprüft\cite[][Kapitel 6.5]{book:debian}. Um den Wartungsaufwand des VPN-Servers zu reduzieren, kann die Installation von Updates durch den Debian-Paketmanager automatisiert werden\cite[][Kapitel 6.7 und 6.8]{book:debian}. @@ -135,8 +135,8 @@ Im Folgenden werden mögliche Software-Kandidaten aus den Debian-Paketquellen vo \subsection{Strongswan} \label{ssct:strongswan} -Strongswan\footnote{\url{https://wiki.strongswan.org/projects/strongswan/wiki/IntroductionTostrongSwan},\\zuletzt abgerufen am 18.07.2018} ist eine quelloffene, modular aufgebaute Software, die unter den in \ref{req:serveros} und \ref{req:clientos} genannten Betriebsystemen lauffähig ist. -Sie kann verwendet werden, um in Kombination mit IPsec-fähigen Betriebsystem-Kerneln geschützte Verbindungen zwischen zwei oder mehr Computern einzurichten. +Strongswan\footnote{\url{https://wiki.strongswan.org/projects/strongswan/wiki/IntroductionTostrongSwan},\\zuletzt abgerufen am 18.07.2018} ist eine quelloffene, modular aufgebaute Software, die unter den in \ref{req:serveros} und \ref{req:clientos} genannten Betriebssystemen lauffähig ist. +Sie kann verwendet werden, um in Kombination mit IPsec-fähigen Betriebssystem-Kerneln geschützte Verbindungen zwischen zwei oder mehr Computern einzurichten. Strongswan wird unter der Lizenz GPLv2 verbreitet\footnote{\url{https://wiki.strongswan.org/projects/strongswan/wiki/Contributions},\\ zuletzt abgerufen am 04.09.2018}. IPsec ist ein Internetstandard, der kryptografische Sicherheit für IPv4 und IPv6 (sowie darüber übertragenen Daten) bieten soll. @@ -156,22 +156,22 @@ Das Protokoll \enquote{IP Encapsulating Security Payload} (ESP) ist in \cite[][] Aktuell empfohlene Algorithmen zum Berechnen der Prüfsumme oder zum Verschlüsseln der Paketinhalte sind in \cite[][]{RFC8221} aufgeführt. IPsec definiert zwei Betriebsvarianten: Den Transportmodus und den Tunnelmodus. -Im Transportmodus werden die Inhalte von IP-Paketen in AH- bzw. ESP-Pakete gekapselt. +Im Transportmodus werden die Inhalte von IP-Paketen in AH- beziehungsweise ESP-Pakete gekapselt. Da die Sender- und Empfängeradressen der IP-Pakete hierbei nicht verändert wird, kann dieser Modus nur für direkte Ende-zu-Ende-Kommunikation verwendet werden. -Im Tunnelmodus werden die IP-Paketen selbst in AH- bzw. ESP-Pakete gekapselt. -Im Anschluss werden die AH- bzw. ESP-Pakete dann in neue IP-Pakete gekapselt, deren Sender- und Empfängeradressen sich von denen des inneren IP-Paketes unterscheiden dürfen. +Im Tunnelmodus werden die IP-Paketen selbst in AH- beziehungsweise ESP-Pakete gekapselt. +Im Anschluss werden die AH- beziehungsweise ESP-Pakete dann in neue IP-Pakete gekapselt, deren Sender- und Empfängeradressen sich von denen des inneren IP-Paketes unterscheiden dürfen. Somit ist der Tunnelmodus im Prinzip für die Umsetzung eines VPN geeignet. Strongswan implementiert das Protokoll IKEv2\footnote{Internet Key Exchange Protokoll Version 2, definiert in \cite[][]{RFC7296}} und kann darüber authentisiert und verschlüsselt mit Gegenstellen kommunizieren. -Dabei werden mit der Gegenstelle Schlüssel- und Konfigurationsparameter ausgehandelt beziehungsweise ausgetauscht, anhand derer Strongswan IPsec-Verbindungen im Kernel des Host-Betriebsystems konfigurieren kann. +Dabei werden mit der Gegenstelle Schlüssel- und Konfigurationsparameter ausgehandelt beziehungsweise ausgetauscht, anhand derer Strongswan IPsec-Verbindungen im Kernel des Host-Betriebssystems konfigurieren kann. Die Verarbeitung des durch IPsec geschützten Da\-ten\-ver\-kehrs über die Protokolle AH oder ESP wird jedoch direkt im IPsec-Stack des Kernels abgewickelt. Für lokal ausgeführte Programme ist der Einsatz von IPsec transparent. \subsection{OpenVPN} \label{ssct:openvpn} OpenVPN ist eine quelloffene Software zur Einrichtung von VPNs in Peer-to-Peer oder Client-Server-Architektur\cite[][Abschnitt \enquote{Server Mode}]{man:openvpn}. -Sie ist unter den in \ref{req:serveros} und \ref{req:clientos} genannten Betriebsystemen lauffähig und wird unter der GPLv2-Lizenz verbreitet. +Sie ist unter den in \ref{req:serveros} und \ref{req:clientos} genannten Betriebssystemen lauffähig und wird unter der GPLv2-Lizenz verbreitet. OpenVPN läuft vollständig im Benutzerkontext und unterstützt nach dem Programmstart den Wechsel in einen nicht-privilegierten Benutzerkontext\cite[Siehe][\texttt{--user}]{man:openvpn}. Für die Bereitstellung einer virtuellen Netzwerkkarte als Schnittstelle zum VPN wird ein TUN/TAP-Treiber verwendet. Kryptografische Operationen werden nur in OpenVPN durchgeführt, welches diese zu großen Teilen an die quelloffene Bibliothek openssl auslagert\cite[][Abschnitt \enquote{Introduction}]{man:openvpn}. @@ -190,19 +190,19 @@ IPsec: Konfiguration der IPsec-Verbindungen findet im Kernel statt, es ist ein zusätzliches IKEv2-Dienstprogramm notwendig, um die Konfigurationsparameter auszuhandeln und Schlüssel auszutauschen. Die im Kernel konfigurierten Verbindungen sind immer unidirektional, d.h. für den Schutz von Datenverkehr zwischen zwei Rechnern sind auf beiden Rechnern jeweils zwei konfigurierte Verbindungen notwendig. -Bei ggf. entdeckten Sicherheitslücken ergeben sich je nach Betriebsystemkernel unterschiedliche Reaktionszeiten. -Je nach Betriebsystem werden im Kernel ggf. nicht alle laut RFC empfohlenen Chiffren gleichermaßen angeboten, dadurch kann ein einheitliches Sicherheitsniveau nur schwer gewährleistet werden. -Strongswan ist zwar grundsätzlich auf allen in \ref{req:clientos} aufgeführten Betriebsystemen lauffähig, jedoch endet die Benutzerfreundlichkeit voraussichtlich dann, wenn man Strongswan unter Windows erst einmal kompilieren muss. -Verlässt man sich auf der Clientseite auf das ggf. bereits im Betriebsystem enthaltene IKEv2-Dienstprogramm, so wird die Bedienung über alle Betriebsysteme unterschiedlich sein. +Bei gegebenenfalls. entdeckten Sicherheitslücken ergeben sich je nach Betriebssystemkernel unterschiedliche Reaktionszeiten. +Je nach Betriebssystem werden im Kernel gegebenenfalls. nicht alle laut RFC empfohlenen Chiffren gleichermaßen angeboten, dadurch kann ein einheitliches Sicherheitsniveau nur schwer gewährleistet werden. +Strongswan ist zwar grundsätzlich auf allen in \ref{req:clientos} aufgeführten Betriebssystemen lauffähig, jedoch endet die Benutzerfreundlichkeit voraussichtlich dann, wenn man Strongswan unter Windows erst einmal kompilieren muss. +Verlässt man sich auf der Clientseite auf das gegebenenfalls. bereits im Betriebssystem enthaltene IKEv2-Dienstprogramm, so wird die Bedienung über alle Betriebssysteme unterschiedlich sein. Auch darunter leidet die Benutzerfreundlichkeit. Durch die insgesamt hohe Komplexität des IPsec-Standards ist eine Fehlersuche im Betrieb nicht unbedingt trivial. Hinzu kommt, dass durch den hohen Funktionsumfang und die Flexibilität von IPsec Konfigurationen möglich sind, die zwar funktionieren, aber nicht das gewünschte Sicherheitsniveau herstellen. -OpenVPN hat nur einen Kommunikationskanal (udp/1194), während für IPsec IKEv2 (udp/500 bzw udp/4500) und die Protokolle AH bzw ESP freigegeben werden müssen. +OpenVPN hat nur einen Kommunikationskanäle (udp/1194), während für IPsec IKEv2 (udp/500 beziehungsweise udp/4500) und die Protokolle AH beziehungsweise ESP freigegeben werden müssen. Sowohl Strongswan als auch OpenVPN sind vollständig quelloffen. -Da jedoch der Datenverkehr bei IPsec durch den Betriebsystemkernel verarbeitet wird, und dessen Quellcode bei Betriebsystemen von Microsoft oder Apple nicht zur Verfügung steht, scheidet Strongswan als Kandidat aus. +Da jedoch der Datenverkehr bei IPsec durch den Betriebssystemkernel verarbeitet wird, und dessen Quellcode bei Betriebssystemen von Microsoft oder Apple nicht zur Verfügung steht, scheidet Strongswan als Kandidat aus. \section{Konzipierung der Benutzerverwaltung} @@ -224,8 +224,8 @@ Zertifikate: * Erfolgreich gestohlenes Zertifikat kann nur für VPN-Dienst genutzt werden Benutzer/Passwort: -* Bequemlichkeit: Kann über existierende Infrastruktur abgewickelt werden (Hochschulaccount) -* Einrichung von Benutzern kann quasi vollautomatisch oder durch eine Whitelist geschehen +* Bequemlichkeit: Kann über existierende Infrastruktur abgewickelt werden (Hochschulkonto) +* Einrichtung von Benutzern kann quasi vollautomatisch oder durch eine Whitelist geschehen * Benutzerkonten werden automatisch deaktiviert * Nur Benutzername+Passwort reichen aus, gestohlene Zugangsdaten bedeuten großes Schadenspotential für betroffene Benutzer * Zugangsdaten müssen zur Authentisierung an entsprechende Dienste "durchgereicht" werden, daher größere Angriffsfläche @@ -246,7 +246,7 @@ Die von Debian 9 mitgelieferte Version 2.3.x ist schon etwas älter, könnte abe Allerdings gibt es auch eine modernere Neuentwicklung in Version 3.0.4(Stand 12.09.2018, siehe github.com/openvpn/easyrsa), die langfristig vom OpenVPN-Team weiterentwickelt wird und einige Verbesserungen im Vergleich zur alten v2 mitbringt. Kurz: EasyRSA2.2.3 aus Debian vs EasyRSA3.x direkt von Github vs irgendwie selbst Skripte schreiben (Wieso das Rad neu erfinden?) - Vorteile/Nachteile -Ggf. kurz ein Blick darauf, was alles für Features benötigt werden. +Gegebenenfalls. kurz ein Blick darauf, was alles für Features benötigt werden. EasyRSAv3 ist eine Neuentwicklung von EasyRSA2. Die neue Version wird vom OpenVPN-Team weiter entwickelt werden. Vereinfachte Benutzung der zur Verfügung gestellten Shellskripte