Iptables
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