Iptables

Aus wiki.archlinux.de

iptables

Der Kernel selber hat mit 'Netfilter' einen sehr mächtigen und sicheren Paketfilter. Der Paketfilter untersucht die Paket die deinen Rechner verlassen, oder erreichen. Mit anderen Worten... er reagiert auf Netzwerkpaket je nach Art, Quelle, Ziel usw. zum Beispiel mit Zurückweisung. Das entsprechende Programm zur Steuerung des Paketfilters lautet 'iptables'.

Das entsprechende Paket wird mittels folgendem Aufruf installiert.

 # pacman -S iptables

Definiere ein paar Regeln, und starte /etc/rc.d/iptables save Das Script ruft 'iptables-save' auf, und speichert Deine erstellten Regeln in /etc/iptables/iptables.rules.

Jetzt kannst Du iptables starten.

 # /etc/rc.d/iptables start

Das Script ruft iptables-restore auf, und lädt Deine Regeln. Du kannst die Firewall natürlich im DAEMONS Feld in /etc/rc.conf eintragen, damit es nach jedem boot automatisch geladen wird.

 # DAEMONS=(...iptables network...)


Hier ein Script um iptables für einen Rechner der direkt am Internet hängt einzurichten.

 #!/bin/bash
 
 #Ports: Hier eintragen welche Ports geöffnet werden sollen
 SERVICES_UDP="" #freigegebene UDP-Ports 
 SERVICES_TCP="22 80" #freigegebene TCP-Ports (Hier sshd und http)
 
 #Alle vorhandenen Regeln löschen
 iptables -F
 iptables -t nat -F
 iptables -t mangle -F
 iptables -X
 iptables -t nat -X
 iptables -t mangle -X
 
 #Grundregeln
 iptables -P OUTPUT  ACCEPT
 iptables -P INPUT   DROP
 iptables -P FORWARD DROP
 
 #Sicherheit
 iptables -N bad_packets
 iptables -A bad_packets -p ALL -m state --state INVALID -j DROP                          #kaputte Pakete droppen
 iptables -A bad_packets -p tcp -j REJECT --reject-with tcp-reset                         #Antispoofing
 iptables -A bad_packets -p udp -j REJECT --reject-with icmp-port-unreachable             #Antispoofing
 iptables -A bad_packets -p icmp -m limit --limit 2/s -j ACCEPT                           #ICMP 
 iptables -A bad_packets -p icmp -m limit --limit 4/s -j REJECT                           #ICMP
 iptables -A bad_packets -p icmp -j DROP                                                  #ICMP
 iptables -A bad_packets -p ALL -j RETURN
 
 iptables -N service_sec
 iptables -A service_sec -p tcp --syn -m limit --limit 1/s -j ACCEPT                      #SYN-Flood Attacken
 iptables -A service_sec -p tcp ! --syn -m state --state NEW -j DROP                      #TCP-SYN-Pakete ohne Status NEW droppen
 iptables -A service_sec -p tcp --tcp-flags ALL NONE -m limit --limit 1/h -j ACCEPT       #Portscanner ausschalten
 iptables -A service_sec -p tcp --tcp-flags ALL ALL -m limit --limit 1/h -j ACCEPT        #Portscanner ausschalten
 iptables -A service_sec -p ALL -j RETURN
 
 #Dienste
 iptables -N services
 for port in $SERVICES_TCP ; do
        iptables -A services -p tcp --dport $port -j service_sec
        iptables -A services -p tcp --dport $port -j ACCEPT
 done
 for port in $SERVICES_UDP ; do
        iptables -A services -p udp --dport $port -j service_sec
        iptables -A services -p udp --dport $port -j ACCEPT
 done
 iptables -A services -p ALL -j RETURN
 
 #INPUT
 iptables -A INPUT -p ALL -i lo -j ACCEPT
 iptables -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
 iptables -A INPUT -p ALL -j services
 iptables -A INPUT -p ALL -j bad_packets
 
 #OUTPUT: Alles was raus geht wird erlaubt
 iptables -A OUTPUT -p ALL -j ACCEPT
 
 #Speichern
 /etc/rc.d/iptables save



Weitere Quellen