Add iptables to SRV-DOC

This commit is contained in:
Jan Philipp Timme 2018-09-19 11:48:51 +02:00
parent 6d167a892f
commit aae723272f
1 changed files with 84 additions and 2 deletions

View File

@ -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