Next Previous Contents

11. Tips fuer das Design von Paketfiltern

Eine bekannte Weisheit im Computer-Sicherheits-Bereich ist es, alles zu blocken, dann einzelne Loecher, wenn noetig, zu oeffnen. Das wird auch oft gesagt als 'Alles, was nicht explizit erlaubt ist, ist ver- boten.'. Wenn Sicherheit Dein Hauptziel ist, empfehle ich dieses Vorgehen.

Lass keine Dienste laufen, die Du nicht brauchst, auch, wenn Du denkst, dass Du den Zugang hierzu geblockt hast.

Wenn Du anfaengst, eine Firewall zu bauen, fang mit nichts an und blocke alle Pakete, fuege dann Dienste hinzu und lass die benoetigten Pakete durch.

Ich empfehle stark Sicherheit: kombiniere tcp-wrapper (fuer Verbindungen zu dem Paketfilter selbst), Proxies (fuer Verbindungen durch die Firewall) "Route Verification" und Paketfilter. Route Verification bedeutet, dass ein Paket, das von einer unerwarteten Schnittstelle kommt, verworfen wird: Wenn Dein internes Netzwerk zum Beispiel die Adressen 10.1.1.0/24 hat und ein Paket mit dieser Quelladresse zu einer externen Schnittstelle kommt, wird es verworfen. Dies kann fuer die Schnittstelle ppp0 wie folgt aktiviert werden: (Auch hier muessen fuer ein Script natuerlich wieder die Rauten am Zeilenanfang entfernt werden, Anm.d. Uebersetzerin)

# echo 1 > /proc/sys/net/ipv4/conf/ppp0/rp_filter
#

Oder fuer alle existierenden und in Zukunft existierenden Schnittstellen so:

# for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
#     echo 1 > $f
# done
# 

Debian tut dies, wo immer es moeglich ist, standardmaessig. Wenn Du asymmetrisches Routing einsetzt (ich meine, wenn Du Pakete aus seltsamen Richtungen erwartest), wirst Du dieses Filtern auf diesen Schnittstellen deaktivieren wollen.

Logging ist nuetzlich, wenn man eine Firewall aufsetzt und irgendetwas nicht funktioniert, auf einer produktiven Firewall solltest Du es jedoch mit der 'limit' Option verwenden, um jemanden davon abzuhalten, Deine Logs zu ueberfluten.

Fuer sichere Systeme empfehle ich staerkstens 'connection tracking': Es bietet einen Overhead, da alle Verbindungen verfolgt werden, aber es ist sehr nuetzlich fuer kontrollierten Zugang zu Deinem Netzwerk.

# iptables -N no-conns-from-ppp0
# iptables -A no-conns-from-ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A no-conns-from-ppp0 -m state --state NEW -i ! ppp0 -j ACCEPT
# iptables -A no-conns-from-ppp0 -i ppp0 -m limit -j LOG --log-prefix "Bad packet from ppp0:"
# iptables -A no-conns-from-ppp0 -i ! ppp0 -m limit -j LOG --log-prefix "Bad packet not from ppp0:"
# iptables -A no-conns-from-ppp0 -j DROP

# iptables -A INPUT -j no-conns-from-ppp0
# iptables -A FORWARD -j no-conns-from-ppp0

Eine gute Firewall zu bauen liegt jenseits der Moeglichkeiten dieses HOWTOs, aber mein Ratschlag ist: Sei immer Minimalist. Lies das Security-HOWTO fuer mehr Informationen ueber das Testen und Pruefen Deines Rechners.


Next Previous Contents