Iptables Nat: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 43: | Zeile 43: | ||
-t filter # anzeigen der nat Tabelle | -t filter # anzeigen der nat Tabelle | ||
-n # numerical | -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 | ||
Version vom 1. September 2022, 10:21 Uhr
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
