Autosave
This commit is contained in:
parent
f46f0f6298
commit
18f10f8cdb
|
@ -22,12 +22,12 @@ Folgende Parameter wurden für die Konfiguration des Servers in Absprache mit de
|
|||
\item \texttt{141.71.38.7}
|
||||
\item \texttt{2001:638:614:1780::7}
|
||||
\end{itemize}
|
||||
\item IP-Adressbereich für VPN-Clients
|
||||
\item IP-Adressbereiche für VPN-Clients
|
||||
\begin{itemize}
|
||||
\item \texttt{10.2.0.0/16}
|
||||
\item \texttt{2001:638:614:1750::/64}
|
||||
\end{itemize}
|
||||
\item DNS-Server für Server in der DMZ: \texttt{141.71.38.1}
|
||||
\item Zu verwendender DNS-Server: \texttt{141.71.38.1}
|
||||
\end{itemize}
|
||||
|
||||
|
||||
|
@ -92,10 +92,10 @@ Anschließend können die Pakete über \texttt{apt-get} installiert werden
|
|||
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.
|
||||
|
||||
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.
|
||||
Die IP-Adressen für den VPN-Dienst werden als zusätzliche IP-Adressen konfiguriert.
|
||||
Durch die Verwendung von separaten Dienst-Adressen ist es möglich, einen Server im laufenden Betrieb durch einen zweiten, identisch konfigurierten Server zu ersetzen.
|
||||
Dazu müssen lediglich die zusätzlichen IP-Adressen von dem einen Server entfernt werden, und anschließend auf dem zweiten Server hinzugefügt werden.
|
||||
VPN-Benutzer bekommen davon nur eine kurze Unterbrechung der VPN-Sitzung mit.
|
||||
|
||||
Die resultierende Konfiguration für die IP-Adressen der Maschine sieht so aus:
|
||||
\begin{lstlisting}
|
||||
|
@ -117,16 +117,17 @@ iface eno1 inet6 static
|
|||
\end{lstlisting}
|
||||
|
||||
\paragraph{DNS}
|
||||
\texttt{141.71.38.1} ist der DNS-Resolver in der DMZ.
|
||||
In der DMZ soll der DNS-Resolver mit der IP-Adresse \texttt{141.71.38.1} verwendet werden.
|
||||
\begin{lstlisting}
|
||||
echo "nameserver 141.71.38.1" > /etc/resolv.conf
|
||||
\end{lstlisting}
|
||||
|
||||
\paragraph{IP-FORWARD einschalten}
|
||||
Da die Benutzer des VPN in der Lage sein sollen, das Netzwerk der Abteilung Informatik zu erreichen, muss IP-FORWARD auf dem VPN-Server aktiviert werden:
|
||||
\paragraph{Paketweiterleitung einschalten}
|
||||
Mit dem VPN-Server verbundene Clients befinden sich in einem eigenen IPv4- beziehungsweise IPv6-Netz.
|
||||
Damit die VPN-Clients trotzdem über die Grenze ihres eigenen Netzes hinaus Kontakt zum Netz der Abteilung Informatik aufnehmen können, ist es notwendig für IPv4 und IPv6 die Paketweiterleitung einzuschalten.
|
||||
\begin{lstlisting}
|
||||
# echo "net.ipv4.conf.all.FORWARD = 1" > /etc/sysctl.d/04-enable-ipv4-FORWARD.conf
|
||||
# echo "net.ipv6.conf.all.FORWARD = 1" > /etc/sysctl.d/06-enable-ipv6-FORWARD.conf
|
||||
# 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
|
||||
\end{lstlisting}
|
||||
Anschließend werden die vorgenommenen Einstellungen aktiviert.
|
||||
\begin{lstlisting}
|
||||
|
@ -134,8 +135,8 @@ Anschließend werden die vorgenommenen Einstellungen aktiviert.
|
|||
\end{lstlisting}
|
||||
|
||||
\paragraph{Firewallregeln}
|
||||
Es wurde definiert, welcher Datenverkehr für den VPN-Server und VPN-Clients erlaubt ist.
|
||||
Diese werden jetzt über Filterregeln mit \texttt{iptables} beziehungsweise \texttt{ip6tables} umgesetzt.
|
||||
Welcher Datenverkehr für VPN-Clients erlaubt oder verboten ist, wurde im Rahmen der Masterarbeit bereits festgelegt.
|
||||
Diese Vorgaben werden jetzt über Filterregeln mit \texttt{iptables} und \texttt{ip6tables} umgesetzt.
|
||||
|
||||
Als Standardpolicy wird \texttt{DROP} gewählt.
|
||||
\begin{lstlisting}
|
||||
|
@ -225,47 +226,53 @@ ip6tables -A FORWARD -d 2001:638:614:1750::/64 -m state --state ESTABLISHED,RELA
|
|||
\end{lstlisting}
|
||||
|
||||
\paragraph{Persistente Firewallregeln}
|
||||
Um die mit \texttt{iptables} erstellten Regeln auch über Neustarts hinweg zu behalten, wird das Paket \texttt{iptables-persistent} installiert.
|
||||
Um die mit \texttt{iptables} und \texttt{ip6tables} umgesetzten Regeln auch über Neustarts hinweg zu behalten, wird das Paket \texttt{iptables-persistent} installiert.
|
||||
\begin{lstlisting}
|
||||
apt-get install iptables-persistent
|
||||
\end{lstlisting}
|
||||
Anschließend können die aktuell aktiven Regeln abgespeichert werden, damit sie bei einem Neustart wieder geladen werden können.
|
||||
Anschließend können die aktuell aktiven Regeln in Dateien abgelegt werden, aus denen sie nach einem Neustart durch die von \texttt{iptables-persistent} installierten Skripte wieder geladen werden.
|
||||
\begin{lstlisting}
|
||||
iptables-save > /etc/iptables/rules.v4
|
||||
ip6tables-save > /etc/iptables/rules.v6
|
||||
\end{lstlisting}
|
||||
|
||||
\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
|
||||
|
||||
\paragraph{OpenVPN}
|
||||
Nun wird OpenVPN installiert und konfiguriert.
|
||||
\begin{lstlisting}
|
||||
# apt-get install openvpn
|
||||
\end{lstlisting}
|
||||
|
||||
\todo{Zertifikate beantragen und lokal ablegen}
|
||||
Zertifikate, CRL und co werden unter \texttt{/etc/openvpn/inform/} abgelegt.
|
||||
Anhand des separaten Dokuments \enquote{Dokumentation der Zertifizierungsstelle für den IPv6-VPN-Dienst} wird ein neues Serverzertifikat für den VPN-Server beantragt und anschließend durch die Zertifizierungsstelle ausgestellt.
|
||||
Zusätzlich werden auf dem lokalen Server die Diffie-Hellman-Parameter generiert.
|
||||
|
||||
Die folgende Serverkonfiguration wird als Datei unter \texttt{/etc/openvpn/inform.conf} abgelegt.
|
||||
Außerdem wird das Wurzelzertifikat der Zertifizierungsstelle, sowie eine aktuelle \textit{Certificate Revocation List} (CRL) benötigt.
|
||||
In diesem Szenario wird davon ausgegangen, dass beide Dateien in aktueller Version über einen HTTP-Server von der CA angeboten werden:
|
||||
\begin{lstlisting}
|
||||
wget http://vmvpnca.inform.hs-hannover.de/ca.crt
|
||||
wget http://vmvpnca.inform.hs-hannover.de/crl.pem
|
||||
\end{lstlisting}
|
||||
|
||||
Die beschafften Dateien werden nun wie folgt auf dem VPN-Server abgelegt:
|
||||
\begin{itemize}
|
||||
\item Wurzelzertifikat: \texttt{/etc/openvpn/inform/ca.crt}
|
||||
\item Serverzertifikat: \texttt{/etc/openvpn/inform/aither.inform.hs-hannover.de.crt}
|
||||
\item Privatern Schlüssel: \texttt{/etc/openvpn/inform/aither.inform.hs-hannover.de.key}
|
||||
\item Diffie-Hellman-Parameter: \texttt{/etc/openvpn/inform/dh.pem}
|
||||
\item Certificate Revocation List: \texttt{/etc/openvpn/inform/crl.pem}
|
||||
\end{itemize}
|
||||
|
||||
Dann wird die folgende Serverkonfiguration wird als Datei unter \texttt{/etc/openvpn/inform.conf} abgelegt.
|
||||
\lstinputlisting[]{./openvpn-config/vpnserver.conf}
|
||||
|
||||
CRL beschaffen
|
||||
Da die CRL durch die Zertifizierungsstelle jederzeit aktualisiert werden kann, ist es sinnvoll diese täglich mit einem Cronjob zu erneuern.
|
||||
Dafür wird dieser Eintrag als \texttt{root} mittels \texttt{crontab -e} angelegt:
|
||||
\begin{lstlisting}
|
||||
curl http://vmvpnca.inform.hs-hannover.de/crl.pem > /etc/openvpn/vpnserver/crl.pem
|
||||
15 2 * * * bash -c 'curl http://vmvpnca.inform.hs-hannover.de/crl.pem > /etc/openvpn/inform/crl.pem; systemctl restart openvpn@vpnserver.service'
|
||||
\end{lstlisting}
|
||||
|
||||
Cronjob via \texttt{crontab -e} erzeugen:
|
||||
\begin{lstlisting}
|
||||
15 2 * * * bash -c 'curl http://vmvpnca.inform.hs-hannover.de/crl.pem > /etc/openvpn/vpnserver/crl.pem; systemctl restart openvpn@vpnserver.service'
|
||||
\end{lstlisting}
|
||||
Ein \texttt{systemctl reload} ist aufgrund der Abgabe von Berechtigungen nach dem Start nicht möglich.
|
||||
\textbf{Anmerkung}: Ein \texttt{systemctl reload} ist aufgrund der Abgabe von Berechtigungen nach dem Start nicht möglich.
|
||||
Deshalb muss auf \texttt{systemctl restart} zurückgegriffen werden.
|
||||
|
||||
Nun wird der OpenVPN-Dienst aktiviert und gestartet.
|
||||
Nun wird der OpenVPN-Dienst aktiviert und gestartet:
|
||||
\begin{lstlisting}
|
||||
# systemctl enable openvpn@vpnserver.service
|
||||
# systemctl start openvpn@vpnserver.service
|
||||
|
|
Loading…
Reference in New Issue