Include openvpn config skeletons
This commit is contained in:
parent
ede5d0e37c
commit
8e397050d2
|
@ -1,23 +1,28 @@
|
|||
Aufbau einer CA für den VPN-Dienst
|
||||
\section{Aufbau einer CA für den VPN-Dienst}
|
||||
|
||||
* Beschaffung der gewünschten Version von EasyRSA + Verifikation
|
||||
* Integration der eigenen Anleitungen und Konfiguration
|
||||
* Verpacken für Clients/Server und CA selbst
|
||||
|
||||
|
||||
* Installation von easy-rsa
|
||||
\begin{itemize}
|
||||
\item Beschaffung der gewünschten Version von EasyRSA + Verifikation
|
||||
\item Integration der eigenen Anleitungen und Konfiguration
|
||||
\item Verpacken für Clients/Server und CA selbst
|
||||
\item Installation von easy-rsa
|
||||
\end{itemize}
|
||||
|
||||
Voraussetzung: openssl muss bereits installiert sein und im Pfad eingetragen sein.
|
||||
Unter Windows kann das von OpenVPN mitgebrachte openssl verwendet werden - dazu kann der Ordner "bin" einfach in den Pfad eingetragen werden.
|
||||
Ein Neustart des Computers ist notwendig, um die Änderung zu übernehmen.
|
||||
Mehr dazu unter https://github.com/OpenVPN/easy-rsa/blob/v3.0.4/distro/windows/README-Windows.txt
|
||||
|
||||
# Beschaffung/Installation von EasyRSA-3.0.4
|
||||
OpenSSL setzt eine Konfigurationsdatei voraus - unter Windows fehlt diese.
|
||||
Daher muss durch die CA mindestens diese Datei bereitgestellt werden.
|
||||
In dem Zug kann man auch gleich ein vorkonfiguriertes Paket mit EasyRSA bereitstellen.
|
||||
|
||||
Aktuelle Releases sind unter https://github.com/OpenVPN/easy-rsa/releases zu finden.
|
||||
GPG-Schlüssel zur Authentisierung der Releases sind im easy-rsa Repository unterhalb von ./release-keys/README.md aufgeführt.
|
||||
https://github.com/OpenVPN/easy-rsa/tree/master/release-keys
|
||||
\section{Beschaffung/Installation von EasyRSA}
|
||||
|
||||
Aktuelle Releases sind unter \url{https://github.com/OpenVPN/easy-rsa/releases} zu finden.
|
||||
GPG-Schlüssel zur Authentisierung der Releases sind im easy-rsa Repository unterhalb von \texttt{./release-keys/README.md} aufgeführt.
|
||||
\url{https://github.com/OpenVPN/easy-rsa/tree/master/release-keys}
|
||||
|
||||
\begin{lstlisting}
|
||||
# Release v3.0.4 beschaffen und den dazu passenden GPG-Key
|
||||
gpg --recv-keys 6F4056821152F03B6B24F2FCF8489F839D7367F3
|
||||
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz
|
||||
|
@ -25,9 +30,11 @@ wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.
|
|||
gpg --verify EasyRSA-3.0.4.tgz.sig EasyRSA-3.0.4.tgz
|
||||
tar xzf EasyRSA-3.0.4.tgz
|
||||
cd EasyRSA-3.0.4
|
||||
\end{lstlisting}
|
||||
|
||||
\section{Initialisierung der CA}
|
||||
|
||||
# Initialisierung der CA
|
||||
\begin{lstlisting}
|
||||
cp vars.example vars
|
||||
vim vars
|
||||
# Konfiguration der CA anpassen:
|
||||
|
@ -55,9 +62,10 @@ openssl x509 -in pki/issued/timmeja.crt -noout -text
|
|||
|
||||
# CRL erzeugen und an OpenVPN-Server übergeben
|
||||
./easyrsa gen-crl
|
||||
\end{lstlisting}
|
||||
|
||||
Achtung: Wenn die CRL ausgelaufen ist, muss sie neu generiert werden. Das kann den VPN-Server im Betrieb blockieren.
|
||||
\textbf{Achtung:} Wenn die CRL ausgelaufen ist, muss sie neu generiert werden. Das kann den VPN-Server im Betrieb blockieren.
|
||||
Daher ist eine hohe Gültigkeitsdauer mit on-demand-replacement eine Option.
|
||||
Ansonsten empfiehlt es sich, diesen Kram zu automatisieren. Regelmäßig eine neue CRL durch CA bereitstellen, von dieser beziehen und den VPN-Server ggf. neustarten.
|
||||
In der Serverkonfiguration: verify-crl /path/to/crl.pem
|
||||
In der Serverkonfiguration: \texttt{verify-crl /path/to/crl.pem}
|
||||
|
|
@ -314,7 +314,7 @@ Im Folgenden werden mögliche Software-Kandidaten aus den Debian-Paketquellen vo
|
|||
|
||||
\paragraph{Strongswan}
|
||||
Strongswan\footnote{\url{https://wiki.strongswan.org/projects/strongswan/wiki/IntroductionTostrongSwan},\\zuletzt abgerufen am 18.07.2018} ist eine 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 einem IPsec-fähigen Betriebsystem-Kernel ein VPN auf Basis von IPsec einzurichten.
|
||||
Sie kann verwendet werden, um in Kombination mit IPsec-fähigen Betriebsystem-Kerneln ein VPN zwischen zwei Computern auf Basis von IPsec einzurichten.
|
||||
|
||||
Mit IPsec können Richtlinien definiert werden, die den Datenverkehr von einem Host zu einem anderen Host betreffen\cite{RFC4301}.
|
||||
|
||||
|
@ -330,11 +330,10 @@ Transportmodus vs Tunnelmodus?
|
|||
* Security Association Database (stateful) enthält die einzelnen Security Associations (SA), quasi die einzelnen Verbindungen
|
||||
|
||||
|
||||
Das Protokoll \enquote{IP Authentication Header} (AH) wird in \cite{RFC4302} definiert und ermöglicht den Versand von authentisierbaren Paketen an eine Gegenstelle.
|
||||
Das Protokoll \enquote{IP Authentication Header} (AH) ist in \cite{RFC4302} definiert und ermöglicht den Versand von authentisierbaren Paketen an eine Gegenstelle.
|
||||
Bestimmte Felder ... werden dabei signiert und können so nach Empfang authentisiert werden.
|
||||
|
||||
Das Protokoll \enquote{IP Encapsulating Security Payload} (ESP) wird in \cite{RFC4303} definiert und ermöglicht den Versand von vertraulichen
|
||||
Paketen an eine Gegenstelle.
|
||||
Das Protokoll \enquote{IP Encapsulating Security Payload} (ESP) ist in \cite{RFC4303} definiert und ermöglicht den Versand von vertraulichen Paketen an eine Gegenstelle.
|
||||
Nach Empfang werden die Pakete entschlüsselt.
|
||||
|
||||
|
||||
|
@ -374,6 +373,7 @@ Benutzer/Passwort:
|
|||
|
||||
Gewinner: Zertifikate
|
||||
|
||||
|
||||
\paragraph{Einrichtung einer SSL-CA mit EasyRSA}
|
||||
Kurz: EasyRSA2.2.3 aus Debian vs EasyRSA3.x direkt von Github - Vorteile/Nachteile
|
||||
Danach: Wie funktioniert die CA mit EasyRSA?
|
||||
|
@ -392,14 +392,21 @@ Danach: Wie funktioniert die CA mit EasyRSA?
|
|||
** IPv6-Bereich für VPN-Clients wird an virtuelle IPv6-Adresse des VPN-Dienstes geroutet -> manuelles Failover möglich
|
||||
** IPv4: VPN-Clients bekommen IP-Adressen aus 10.2.0.0/16 Block, für IPv4 wird auf NAT zurückgegriffen
|
||||
|
||||
\paragraph{Erstellung eines Betriebskonzept}
|
||||
|
||||
\paragraph{Fazit}
|
||||
\paragraph{Erstellung eines Betriebskonzept}
|
||||
TODO
|
||||
|
||||
\chapter{Fazit}
|
||||
Wie ist es gelaufen, gab es Probleme? Wie macht sich OpenVPN als Lösung?
|
||||
Gibt es vielleicht Szenarien, in denen sich IPsec doch lohnt?
|
||||
Ja - eventuell. Sehr große Enterprise-Umgebungen, in denen die personellen Ressourcen für die korrekte Konfiguration vorhanden sind.
|
||||
Da kann man in homogenen Umgebungen sinnvolle IPsec-Konfigurationen auf hunderten oder tausenden Geräte einrichten.
|
||||
|
||||
|
||||
\section{Ausblick}
|
||||
Es gibt da noch etwas mit dem schönen Namen Wireguard. Mit gewollt geringer Komplexität und einem aktuellen Umfang von ca. 4000 Zeilen Code ist es eine würdige Alternative zu IPsec.
|
||||
Auch OpenVPN in Version 3 ist schon in der Beta - das könnte man auch im Auge behalten.
|
||||
|
||||
\paragraph{Ausblick}
|
||||
Es gibt da noch etwas mit dem schönen Namen Wireguard. Das könnte ein richtig nettes Ding werden \dots
|
||||
|
||||
\chapter*{Anhang}
|
||||
\addcontentsline{toc}{chapter}{Anhang}
|
||||
|
@ -412,6 +419,9 @@ Es gibt da noch etwas mit dem schönen Namen Wireguard. Das könnte ein richtig
|
|||
\end{figure*}
|
||||
|
||||
|
||||
\input{Dokumentation-CA.tex}
|
||||
|
||||
|
||||
|
||||
%%% Ende inhaltlicher Inhalt! %%%
|
||||
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
# This is the client configuration
|
||||
client
|
||||
|
||||
# No need to bind on specific interfaces, just send udp packets to the openvpn server
|
||||
nobind
|
||||
|
||||
# Send udp packets to port 1194
|
||||
port 1194
|
||||
proto udp
|
||||
|
||||
# We're using the layer 3 tunnel device
|
||||
dev tun
|
||||
|
||||
# Specify multiple remotes for dualstack connectivity
|
||||
remote 2003:d7:b70f:e387::5 1194
|
||||
remote 172.16.20.5 1194
|
||||
|
||||
# Certificates
|
||||
ca /etc/openvpn/vpnclient/ca.crt
|
||||
cert /etc/openvpn/vpnclient/vpnclient0.crt
|
||||
key /etc/openvpn/vpnclient/vpnclient0.key
|
||||
dh /etc/openvpn/vpnclient/dh2048.pem
|
||||
|
||||
# Make sure the server presents a certificate with "server role"
|
||||
remote-cert-tls server
|
||||
|
||||
# Make sure to detect broken sessions
|
||||
keepalive 10 30
|
||||
|
||||
# These are needed for reduced privileges? Probably yes.
|
||||
persist-key
|
||||
persist-tun
|
||||
|
||||
# Reduced privileges if possible (uncomment and adapt on unix/linux system)
|
||||
user nobody
|
||||
group nobody
|
||||
|
||||
# Logging settings
|
||||
verb 3
|
||||
mute 5
|
|
@ -0,0 +1,58 @@
|
|||
# Listen on 1194 for both IPv4 and IPv6
|
||||
port 1194
|
||||
proto udp
|
||||
proto udp6
|
||||
|
||||
# We're using the layer 3 tunnel device
|
||||
dev tun
|
||||
|
||||
# Certificates
|
||||
ca /etc/openvpn/vpnserver/ca.crt
|
||||
cert /etc/openvpn/vpnserver/vpnserver.crt
|
||||
key /etc/openvpn/vpnserver/vpnserver.key
|
||||
dh /etc/openvpn/vpnserver/dh2048.pem
|
||||
|
||||
# Make sure the client presents a certificate with "client role"
|
||||
remote-cert-tls client
|
||||
|
||||
# Allow multiple connections using the same certificate?
|
||||
#duplicate-cn
|
||||
|
||||
# net30 is point-to-point, compatible with windows
|
||||
topology net30
|
||||
|
||||
# Use this IPv4 range for clients (/16, so we can cope with all possible clients)
|
||||
server 10.183.0.0 255.255.0.0
|
||||
|
||||
# Use this IPv6 network for clients
|
||||
server-ipv6 2001:638:614:1750::/64
|
||||
|
||||
# Do we need persistence here?
|
||||
ifconfig-pool-persist /etc/openvpn/vpnserver/ipp.txt
|
||||
|
||||
# Make sure the client can still reach the OpenVPN server via its default gateway
|
||||
push "route remote_host 255.255.255.255 net_gateway"
|
||||
|
||||
# Push routes for local networks
|
||||
push "route 172.16.20.0 255.255.255.0 vpn_gateway"
|
||||
|
||||
# Push the whole /56 block for IPv6
|
||||
push "route-ipv6 2003:638:614:1700::/56"
|
||||
|
||||
# Make sure to detect broken sessions
|
||||
keepalive 10 60
|
||||
|
||||
# These are needed for reduced privileges? Probably yes.
|
||||
persist-key
|
||||
persist-tun
|
||||
|
||||
# Reduced privileges
|
||||
user nobody
|
||||
group nobody
|
||||
|
||||
# Logging settings
|
||||
verb 3
|
||||
mute 5
|
||||
|
||||
# Have a status log
|
||||
status /etc/openvpn/vpnserver/status.log
|
Loading…
Reference in New Issue