Iptables Nat
Version vom 1. September 2022, 10:21 Uhr von Thomas.will (Diskussion | Beiträge) (→Syntax Allgemein)
Funktionsweise
- Die Regeln werden nacheinander abgearbeitet wenn eine Regel greift hört der Verarbeitungsprozess auf.
- Wenn keine greift wird die Default Policy angewandt.
| nat table | |||||
|---|---|---|---|---|---|
| PREROUTING | INPUT | OUTPUT | POSTROUTING | ||
| rule 1 | rule 1 | rule 1 | rule 1 | ||
| rule 2 | rule 2 | rule 2 | rule 2 | ||
| rule 3 | rule 3 | rule 3 | rule 2 | ||
| rule 4 | rule 4 | rule 4 | rule 4 | ||
| POLICY | POLICY | POLICY | POLICY | ||
Die filter Tabelle
Die Ketten der filter Kette
- PREROUTING: für Pakte die über eine Schnittstelle hereinkommen, noch bevor entschieden ist ob sie an den Rechner oder weitergeleitet werden.
- 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 generiert werden
- POSTROUTING: Pakete die den Rechner verlassen.
- In diesem Schaubild ist mangle Tabelle ausgeblendet.
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
- SNAT: Quell Adresse oder Port werden verändert.
- DNAT: Ziel Adresse oder Port werden verändert.
- MASQUERADE: Quell Adresse wird auf die IP einer Schnittstelle geändert.
- NETMAP: Ganze Netze werden umgesetzt. Kann sowohl Quell als auch Ziel Netze sein
Syntax Allgemein
Die Momentan in der nat Tabelle gesetzten Ketten und Regeln sieht man mit
- iptables -nvL -t nat
-L # Listing -t filter # anzeigen der nat Tabelle -n # numerical
Ausgangsskript
#!/bin/bash case $1 in start) LANDEV="ens19" WANDEV="eth0" LAN="10.82.243.0/24" WANIP="10.82.227.1" echo "starte firewall" #flushen der Regeln iptables -F #löscht eigene Ketten iptables -X #Default Policy setzen iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP #Connection Tracking 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 #Verkehr von Rechner hinaus freischalten iptables -A OUTPUT -m state --state NEW -j ACCEPT #Verkehr über das loopback device freischalten iptables -A INPUT -i lo -m state --state NEW -j ACCEPT #Verkehr zum Rechner ZUM TCP PORT 22 erlauben iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT #ping freischalten iptables -A INPUT -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT iptables -N lan-to-wan iptables -A lan-to-wan -s $LAN -i $LANDEV -o $WANDEV -m state --state NEW -j ACCEPT #ping und namensauflösung von innen freischalten iptables -A FORWARD -p icmp --icmp-type echo-request -j lan-to-wan iptables -A FORWARD -p tcp --dport 53 -j lan-to-wan iptables -A FORWARD -p udp --dport 53 -j lan-to-wan #Freischalten von smtp,http,imap,https,smtps,imps iptables -A FORWARD -m multiport -p tcp --dport 25,80,143,443,465,993 -j lan-to-wan #Logging der Ketten vor dem Ablehnen der Pakete iptables -A INPUT -j LOG --log-prefix "--iptables-drop-in--" iptables -A OUTPUT -j LOG --log-prefix "--iptables-drop-out--" iptables -A FORWARD -j LOG --log-prefix "--iptables-drop-for--" ;; stop) echo "stoppe firewall" iptables -F iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT ;; esac
