From aae723272f7cd73b07772b6f783207e6ee4e5521 Mon Sep 17 00:00:00 2001 From: Jan Philipp Timme Date: Wed, 19 Sep 2018 11:48:51 +0200 Subject: [PATCH] Add iptables to SRV-DOC --- SRV-DOC-Inhalt.tex | 86 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 84 insertions(+), 2 deletions(-) diff --git a/SRV-DOC-Inhalt.tex b/SRV-DOC-Inhalt.tex index 96a9d04..7bba60a 100644 --- a/SRV-DOC-Inhalt.tex +++ b/SRV-DOC-Inhalt.tex @@ -132,11 +132,93 @@ Anschließend werden die vorgenommenen Einstellungen aktiviert. \end{lstlisting} \paragraph{iptables} -\todo{Hier gibt es noch zu tun.} +Es wurden Regeln definiert, welcher Datenverkehr für den VPN-Server und VPN-Clients erlaubt sind. +Diese werden jetzt über Filterregeln mit \texttt{iptables} beziehungsweise \texttt{ip6tables} umgesetzt. +Als Standardpolicy wird \texttt{DROP} gewählt. +\begin{lstlisting} +iptables -P INPUT DROP +iptables -P OUTPUT DROP +iptables -P FORWARD DROP +ip6tables -P INPUT DROP +ip6tables -P OUTPUT DROP +ip6tables -P FORWARD DROP +\end{lstlisting} + +Datenverkehr über das Loopback-Interface ist immer erlaubt. +\begin{lstlisting} +iptables -A INPUT -i lo -j ACCEPT +iptables -A OUTPUT -i lo -j ACCEPT +ip6tables -A INPUT -i lo -j ACCEPT +ip6tables -A OUTPUT -i lo -j ACCEPT +\end{lstlisting} + +Die Protokolle ICMP und ICMPv6 werden immer durchgelassen. +\begin{lstlisting} +iptables -A INPUT -p icmp -j ACCEPT +ip6tables -A INPUT -p icmp6 -j ACCEPT +iptables -A OUTPUT -p icmp -j ACCEPT +ip6tables -A OUTPUT -p icmp6 -j ACCEPT +iptables -A FORWARD -p icmp -j ACCEPT +ip6tables -A FORWARD -p icmp6 -j ACCEPT +\end{lstlisting} + +Zugriffe auf den VPN-Server sind für die Dienste SSH und OpenVPN erlaubt. +\begin{lstlisting} +iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT +ip6tables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT + +iptables -A INPUT -p udp --dport 1194 -m state --state NEW,ESTABLISHED -j ACCEPT +ip6tables -A INPUT -p udp --dport 1194 -m state --state NEW,ESTABLISHED -j ACCEPT +\end{lstlisting} + +Antwortpakete für eingehende Pakete auf SSH und OpenVPN-Dienst sind erlaubt. +\begin{lstlisting} +iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT +ip6tables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT +\end{lstlisting} + +Vom VPN-Server ausgehende Pakete sind grundsätzlich erlaubt. +\begin{lstlisting} +iptables -A OUTPUT -m state --state NEW -j ACCEPT +ip6tables -A OUTPUT -m state --state NEW -j ACCEPT +\end{lstlisting} + +Zum VPN-Server eingehende Pakete sind als Antwort auf ausgehende Pakete erlaubt. +\begin{lstlisting} +iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT +ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT +\end{lstlisting} + + +Für IPv4-Verkehr aus dem VPN soll NAT durchgeführt werden. +\begin{lstlisting} +iptables -t nat -A POSTROUTING -s 10.2.0.0/16 -j MASQUERADE +\end{lstlisting} + +Datenverkehr aus dem VPN zu Hosts in der DMZ ist verboten und wird verworfen. +\begin{lstlisting} +iptables -A FORWARDING -s 10.2.0.0/16 -d 141.71.38.0/24 -j DROP +ip6tables -A FORWARDING -s 2001:638:614:1750::/64 -d 2001:683:614:1780::/64 -j DROP +\end{lstlisting} + +Jeglicher weiterer Datenverkehr aus dem VPN ist erlaubt. +\begin{lstlisting} +iptables -A FORWARDING -s 10.2.0.0/16 -m state --state NEW,ESTABLISHED -j ACCEPT +ip6tables -A FORWARDING -s 2001:638:614:1750::/64 -m state --state NEW,ESTABLISHED -j ACCEPT +\end{lstlisting} + +In das VPN eingehender Verkehr ist nur als Antwort auf ausgehende Pakete erlaubt. +\begin{lstlisting} +iptables -A FORWARDING -d 10.2.0.0/16 -m state --state ESTABLISHED,RELATED -j ACCEPT +ip6tables -A FORWARDING -d 2001:638:614:1750::/64 -m state --state ESTABLISHED,RELATED -j ACCEPT +\end{lstlisting} + + +Um die mit \texttt{iptables} erstellten Regeln auch über Neustarts hinweg zu behalten, wird das Paket \texttt{iptables-persistent} installiert. \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. +Anschließend können die aktuell aktiven Regeln abgespeichert werden, damit sie bei einem Neustart wieder geladen werden können. \begin{lstlisting} iptables-save > /etc/iptables/rules.v4 ip6tables-save > /etc/iptables/rules.v6