Iptables Nat

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Funktionsweise

  • Die Regeln werden nacheinander abgearbeitet wenn eine Regel greift hört der Verarbeitungsprozess auf.
  • Wenn keine greift wird die Default Policy angewandt.
  • Bei nat wird die Default Policy normalerweise nicht geändert.
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 vom filter Workshop

  • Wir wollen als erstes Maskieren.
  • MASQUERADE bedeutet, dass beim ersten Paket, die Quell Adresse auf die des Ausgangsinterface umgeschrieben wird.
  • Die Verbindungsinformationen wird in einer Tabelle gespeichert.
  • Pakete die zurückkommen werden so wieder an den richtigen Absender geschickt.
  • MASQUERADE greift in der POSTROUTING Kette, kurz vor dem Verlassen des Rechners
#!/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
 iptables -F -t nat
#löscht eigene Ketten
iptables -X
 iptables -X -t nat
 #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
iptables -t nat -A POSTROUTING -s $LAN -o $WANDEV -j MASQUERADE 
#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

Momentaner Status nach firewall start

  • iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      eth0    10.82.243.0/24       0.0.0.0/0