Iptables Filter
Version vom 31. August 2022, 13:59 Uhr von Thomas.will (Diskussion | Beiträge) (→Setzen der Default Policys)
Funktionsweise
- Die Regeln werden nacheinander abgearbeitet wenn eine Regel greift hört der Verarbeitungsprozess auf.
- Wenn keine greift wird die Default Policy angewandt.
| filter table | |||||
|---|---|---|---|---|---|
| INPUT | OUTPUT | FORWARD | |||
| rule 1 | rule 1 | rule 1 | |||
| rule 2 | rule 2 | rule 2 | |||
| rule 3 | rule 3 | rule 3 | |||
| rule 4 | rule 4 | rule 4 | |||
| POLICY | POLICY | POLICY | |||
Die filter Tabelle
Die Ketten der filter Kette
- FORWARD: für Pakte die über eine Schnittstelle hereinkommen, den Rechner auch wieder verlassen.
- INPUT: für Pakete die über eine Schnittstelle hereinkommen und einen Dienst auf dem Rechner ansprechen
- OUTPUT: für die über eine Schnittstelle herausgehenden Pakete, die von einem lokalen Dienst
- In diesem Schaubild sind nat und mangel Tabellen ausgeblendet.
- Jedes Paket durchläuft nue eine Filter Kette
Die Filter Regeln der filter Tabelle
Regeln werden mit iptables erstellt und an Ziele geschickt.
Ziele der filter Tabelle
- ACCEPT: das Paket kann passieren
- REJECT: das Paket wird zurückgewiesen und ein Fehlerpaket wird gesendet
- LOG: schreibt einen Eintrag in die syslog
- DROP: das Paket wird ignoriert und keine Antwort gesendet
Syntax Allgemein
Die Momentan in der filter Tabelle gesetzten Ketten und Regeln sieht man mit
- iptables -nvL -t filter
-L # Listing -t filter # anzeigen der filter Kette -n # numerical -v # verbose
Da -t filter Default ist, kann man es auch weglassen,
- iptables -nvL -t filter
Firewallscript
Der Rumpf
Zuerst wird in dem firewall-Skript ein case start - stop Block angelegt:
- cd /usr/local/sbin/
- vi firewall
#!/bin/bash case $1 in start) echo "starte firewall" ;; stop) echo "stoppe firewall" ;; *) echo "usage: $0 start|stop" ;; esac
Script ausführbar machen
- chmod +x firewall
Testen des Scripts
- firewall start
- firewall stop
- firewall
Flushen aller vorhergehenden Regeln
#!/bin/bash
case $1 in
start)
echo "starte firewall"
iptables -F
;;
stop)
echo "stoppe firewall"
iptables -F
;;
esac
- Die neuen Funktionen die wir hier verwenden beinhalten
-F löscht alle Regeln aller Ketten
Setzen der Default Policys
#!/bin/bash case $1 in start) echo "starte firewall" iptables -F iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP ;; stop) echo "stoppe firewall" iptables -F iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT ;; esac
- Die neuen Funktionen die wir hier verwenden beinhalten
-P INPUT DROP setzt die default policy auf DROP
ESTABLISHED und RELATED Pakete (Connection Tracking)
Ein Vorteil von iptables zu seinen Vorgängern ist die Funktion seinen Paketfilter nur auf die ersten Pakete einer Verbindung zu begrenzen und so Ressourcen zu sparen. Dieses wird erreicht mit folgenden Zeilen
#!/bin/bash case $1 in start) echo "starte firewall" iptables -F iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ;; stop) echo "stoppe firewall" iptables -F iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT ;; esac
- Verwendete Syntax
- Die neuen Funktionen die wir hier verwenden beinhalten:
- -m state: Das Modul von iptables das erkennt ob ein Paket eine Verbindung initiiert oder zu einer bereits errichteten Verbindung gehört.
- --state ESTABLISHED,RELATED: Der Status nach dem das Paket untersucht wird, wobei
- ESTABLISHED: Pakete die zu einer Verbindung gehören. Also frühestens das 2 Paket.
- RELATED: Pakete die in einer relation zu einer anderen Verbindung stehen.
- -j ACCEPT Regel springt zum ACCEPT Ziel.
