Wer braucht denn schon ‘ne FireWall

… wenn er iptables haben kann 🙂

So, bevor Ihr weiterlest, bitte erstmal den Link zur Ubuntu Help Seite für Iptables klicken und lesen. Wer das verstanden hat braucht eigentlich
gar nicht mehr weiterlesen.

Warum?

Weil dort die Grundlagen sowie ein paar ganz wichtige Regeln für eingehenden Traffic für User wie mich beschrieben sind. Und wenn ich das kapiere
kapierst Du – Ja genau Du, der Leser dieses Blog’s – das auch. Basta!

Also wollen wir uns mal mit meiner iptables befassen.

Grundgedanke:
"Alles was von innen initiiert wird ist erlaubt" + 
"Alles was von aussen initiert wird, wird silent drop erfahren" + 
"ssh von aussen erlaubt" + 
"Möglichkeit der Protokollierung, für debug Zwecke"

  •  Welche Regeln existieren schon?
    # iptables -L
  • Wirrwarr oder doch nur “default” kram?
    Chain INPUT (policy ACCEPT)
    target prot opt source destination 
    
    Chain FORWARD (policy ACCEPT)
    target prot opt source destination 
    
    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
  • Wir “flushen” alle Einträge
    # iptables -F
    löscht alle Regeln
    # iptables -X
    löscht alle ‘non-builtin’ Regel

Wir fangen an die Regeln zu definieren:

  • Regel #1: Wir erlauben alles was established und related traffic ist
    # iptables -A INPUT - m state --state ESTABLISHED,RELATED -j ACCEPT
  • Regel #2: loopback wird erlaubt
    # iptables -A INPUT -i lo -j ACCEPT
  • Regel #3: ssh wird erlaubt
    # iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport ssh -j ACCEPT
  • Regel #4: alles andere wird gedroppt
    # iptables -A INPUT -j DROP
  • Regel #5: Überprüpfen wir ob alles richtig drinsteht
    # iptables -L ODER # iptables -L -v
    welcher wiederum genauere Auskunft über die Reglen gibt
  • Sicherungskopie auf console:
    # iptables-save
  • Sicherungskopie in Datei (besser für backup und restore)
    # iptables-save > /etc/default/iptables.rules
    speichern wir als “Wurzeluser” das ganze auf Platte und können somit im nächsten Schritt auch besser restoren falls wir das benötigen.
  • Restore Funktion
    # iptables-restore < /etc/default/iptables.rules
    Wie einfach kann es sein.

Wenn wir uns mit dem Thema Debugging beschäftigen dann fällt uns auf das wir evtl. noch keinen Log Mechanismus haben.

Dazu jetzt mehr:

Wir ersetzen quasi Regel #4 mit einem DEBLOG Chain welchen wir gleich näher definieren.
# iptables -I INPUT 4 -j DEBLOG
Bitte beachtet das mit -I INPUT 4 wir an 4. Stelle eine INPUT Regel einfügen.
Zum Vergleich -A INPUT heisst, wir “appenden” eine neue Regel an das Ende der vorhandenen!

  • Definition “anlegen” der chain DEBUG
    # iptables -N DEBLOG
  • Das sorgt für das logging
    # iptables -A DEBLOG -j LOG --log-level debug --log-prefix "dropp iptables for debug"
  • dropped dann das Packet.
    # iptables -A DEBLOG -j DROP

Für die Profi’s unter uns

Man kann das ganze wieder mit dem Schritt "Sicherungskopie" speichern, per Hand die Debug Funktion auskommentieren und mittels Restore Funktion wiedereinlesen, ebenso das einschalten des Debug Modus.

Viel Spass damit

Cheers
Ubuntix

Nachtrag 10-Sept-2010:
Das ganze sollte man noch per Script in ein boot-start und stop script einbinden. Mein Script sieht so aus:
#!/bin/sh
/sbin/iptables-restore < /etc/iptables.rules
exit 0

und liegt unter /etc/network/if-pre-up.d/iptablesload

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *