2018-09-12 22:19:28 +02:00
\chapter { Vorwort}
2018-09-14 14:21:27 +02:00
Diese Dokumentation beschreibt die Installation und den Betrieb des IPv6-VPN-Dienst auf Basis von OpenVPN.
2018-09-18 11:38:12 +02:00
Die Hintergründe zu der hier vorgestellten Konfiguration können in der dazugehörigen Masterarbeit \enquote { Konzeption und Umsetzung eines IPv6-VPN für die Abteilung Informatik} nachgelesen werden.
\section { Konfigurationsvorgaben}
Folgende Parameter wurden für die Konfiguration des Servers in Absprache mit dem IT-Team festgelegt:
\begin { itemize}
\item Hostname der Maschine: \texttt { aither.inform.hs-hannover.de}
\item Hostname des OpenVPN-Dienstes: \texttt { vpn-test.inform.hs-hannover.de}
\item IP-Adressen der Maschine
\begin { itemize}
\item \texttt { 141.71.38.70/24}
\item \texttt { 2001:638:614:1780::131/64}
\end { itemize}
\item IP-Adressen der zu benutzenden Gateways
\begin { itemize}
\item \texttt { 141.71.38.1}
\item \texttt { 2001:638:614:1780::1}
\end { itemize}
\item IP-Adressen des OpenVPN-Dienstes
\begin { itemize}
\item \texttt { 141.71.38.7}
\item \texttt { 2001:638:614:1780::7}
\end { itemize}
\item IP-Adressbereich für VPN-Clients
\begin { itemize}
\item \texttt { 10.2.0.0/16}
\item \texttt { 2001:638:614:1750::/64}
\end { itemize}
\end { itemize}
\chapter { Konfiguration des Grundsystems}
2018-09-18 15:11:23 +02:00
\paragraph { Hostname}
Sofern der Hostname bei der Installation von Debian nicht schon gesetzt wurde, so muss dies in den Dateien \texttt { /etc/hostname} , \texttt { /etc/mailname} und \texttt { /etc/hosts} nachgeholt werden.
\begin { lstlisting}
# echo "aither" > /etc/hostname
# echo "aither.inform.hs-hannover.de" > /etc/mailname
\end { lstlisting}
In \texttt { /etc/hosts} muss der Eintrag für \texttt { 127.0.1.1} angepasst werden:
\begin { lstlisting}
127.0.1.1 aither.inform.hs-hannover.de aither
\end { lstlisting}
2018-09-12 22:44:16 +02:00
2018-09-18 15:11:23 +02:00
\paragraph { OpenSSH}
In der Datei \texttt { /etc/ssh/sshd\_ config} muss folgende Option auskommentiert und angepasst werden:
\begin { lstlisting}
PermitRootLogin yes
\end { lstlisting}
Anschließend wird der OpenSSH-Dienst aktiviert und gestartet.
\begin { lstlisting}
# systemctl enable ssh.service
# systemctl start ssh.service
\end { lstlisting}
\paragraph { sudo}
Das IT-Team arbeitet mit passwortbasierten SSH-Sitzungen unter dem Benutzer \texttt { root} .
2018-09-18 15:51:30 +02:00
Damit in der Übergangsphase auf dem Server Anpassungen auch ohne Kenntnis des \texttt { root} -Passworts durchgeführt werden können, wird ein lokaler Benutzer eingerichtet.
2018-09-18 15:11:23 +02:00
\begin { lstlisting}
# apt-get install sudo
# adduser jpt
# gpasswd -a jpt sudo
\end { lstlisting}
2018-09-18 15:51:30 +02:00
Nach erfolgreicher Übergabe des Servers an das IT-Team kann dieser Benutzer wieder entfernt werden.
2018-09-12 22:44:16 +02:00
2018-09-18 15:51:30 +02:00
\paragraph { apt}
Um in der DMZ weiterhin Updates einspielen zu können, wird der vom IT-Team zur Verfügung gestellte Proxyserver in die Konfiguration von \texttt { apt} eingetragen.
\begin { lstlisting}
# echo 'Acquire::http::Proxy "http://proxy.inform.hs-hannover.de:3128";'
> /etc/apt/apt.conf.d/80proxy
\end { lstlisting}
Das IT-Team stellt Debian-Pakete zur Verfügung, mit die Grundkonfiguration des Servers an die Vorgaben des IT-Teams angepasst werden kann.
Um diese Pakete zu installieren, werden die Paketquellen des IT-Teams konfiguriert:
\begin { lstlisting}
# echo "deb http://http.edu.inform.hs-hannover.de/depot/debian/stretch/ Packages/"
> /etc/apt/sources.list.d/inform.list
\end { lstlisting}
Als nächstes wird der GPG-Key importiert, mit dem die Pakete signiert sind:
2018-09-13 17:27:28 +02:00
\begin { lstlisting}
2018-09-18 15:51:30 +02:00
# wget -O repositoryKeyFile http://http.edu.inform.hs-hannover.de/repository/repositoryKeyFile
# apt-key add repositoryKeyFile
\end { lstlisting}
Anschließend können die Pakete über \texttt { apt-get} installiert werden
\begin { lstlisting}
# apt-get update
# apt-get install f4-i-srv-config-all-*
\end { lstlisting}
2018-09-13 17:27:28 +02:00
2018-09-18 15:51:30 +02:00
\paragraph { Netzwerkkonfiguration}
Als nächstes werden die IP-Adressen der Maschine und des Dienstes in \texttt { /etc/network/interfaces} konfiguriert.
Die IP-Adressen der Maschine werden direkt für die Netzwerkkarte des Servers konfiguriert.
2018-09-13 17:27:28 +02:00
2018-09-18 15:51:30 +02:00
Die IP-Adressen für den VPN-Dienst werden als Alias konfiguriert.
Durch die Verwendung des Alias ist ein manueller Failover im Betrieb möglich, indem das Alias-Interface dem defekten Server deaktiviert wird und auf einem bereitstehenden Server aktiviert wird.
Effektiv \enquote { wandert} die Dienst-IP somit vom defekten Server auf den bereitstehenden Server.
Benutzer des VPN-Dienst bekommen abgesehen von einer Verbindungsunterbrechung nichts von dem defekten Server mit.
2018-09-13 17:27:28 +02:00
2018-09-18 15:51:30 +02:00
Die resultierende Konfiguration für die IP-Adressen der Maschine sieht so aus:
\begin { lstlisting}
2018-09-13 17:27:28 +02:00
auto eno1
allow-hotplug eno1
#-primary network interface
iface eno1 inet static
address 141.71.38.70/24
gateway 141.71.38.1
iface eno1 inet6 static
address 2001:638:614:1780::131/64
gateway 201:638:614:1780::1
2018-09-18 15:51:30 +02:00
\end { lstlisting}
Die Konfiguration des Alias sieht so aus:
\begin { lstlisting}
#- virtual service alias
2018-09-13 17:27:28 +02:00
iface eno1:0 inet static
address 141.71.38.7/24
gateway 141.71.38.1
iface eno1:0 inet6 static
address 2001:638:614:1780::7/64
gateway 201:638:614:1780::1
\end { lstlisting}
2018-09-18 15:51:30 +02:00
\paragraph { IP-Forwarding einschalten}
Da die Benutzer des VPN in der Lage sein sollen, das Netzwerk der Abteilung Informatik zu erreichen, muss IP-Forwarding auf dem VPN-Server aktiviert werden:
2018-09-13 17:15:32 +02:00
\begin { lstlisting}
2018-09-18 15:51:30 +02:00
# echo "net.ipv4.conf.all.forwarding = 1" > /etc/sysctl.d/04-enable-ipv4-forwarding.conf
# echo "net.ipv6.conf.all.forwarding = 1" > /etc/sysctl.d/06-enable-ipv6-forwarding.conf
2018-09-13 17:15:32 +02:00
\end { lstlisting}
2018-09-18 16:03:11 +02:00
Anschließend werden die vorgenommenen Einstellungen aktiviert.
\begin { lstlisting}
2018-09-18 17:41:43 +02:00
# sysctl --system
2018-09-18 16:03:11 +02:00
\end { lstlisting}
2018-09-12 22:44:16 +02:00
2018-09-18 17:45:06 +02:00
\paragraph { iptables}
\todo { Hier gibt es noch zu tun.}
2018-09-19 11:06:30 +02:00
\begin { lstlisting}
apt-get install iptables-persistent
\end { lstlisting}
Zum Schluss werden die Regeln abgespeichert, damit diese bei einem Neustart durch die Skripte des Pakets \texttt { iptables-persistent} neu geladen werden können.
\begin { lstlisting}
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
\end { lstlisting}
2018-09-18 17:45:06 +02:00
Zugriffe aus dem VPN in die DMZ sind verboten
Zugriffe auf den Server sind nur via UDP/1194 und TCP/22 erlaubt
IPv4 NAT für 10.2.0.0/16
\paragraph { Einstellungen für Routing}
\todo { Hier gibt es noch zu tun.}
Viel ist es nicht
\paragraph { Zertifikate}
\todo { Hier gibt es noch zu tun.}
Beschaffung eines Serverzertifikats und des CA-Wurzelzertifikats
Erzeugung der DH-Parameter
Regelmäßige Beschaffung der CRL
2018-09-18 15:51:30 +02:00
\paragraph { OpenVPN}
2018-09-18 17:45:06 +02:00
\todo { Hier gibt es noch zu tun.}
2018-09-18 15:51:30 +02:00
Nun wird OpenVPN installiert und konfiguriert.
2018-09-13 17:38:37 +02:00
\begin { lstlisting}
2018-09-18 15:51:30 +02:00
# apt-get install openvpn
2018-09-13 17:38:37 +02:00
\end { lstlisting}
2018-09-12 22:44:16 +02:00
Zertifikate beantragen und
2018-09-18 15:51:30 +02:00
2018-09-12 22:44:16 +02:00
Konfiguration einspielen
2018-09-18 15:51:30 +02:00
Nun wird der OpenVPN-Dienst aktiviert und gestartet.
\begin { lstlisting}
# systemctl enable openvpn@vpnserver.service
# systemctl start openvpn@vpnserver.service
\end { lstlisting}