von Thomas
Erstellt am 24.11.2021
iptables ist eine Software Firewall, welche vom Linux Kernel ausgeführt wird. Das Tool ist super mächtig was die einzelnen Funktionen betrifft. Dabei ist die Firewall in Tabellen organisiert, welche Chains und Rules beinhaltet. In meinem iptables Tutorial habe ich bereits sehr ausführlich über die Funktion gesprochen und einzelne Befehle erläutert. Möchtet ihr mehr über die Entstehung und Geschichte von der Software erfahren, empfehle ich euch den Wikipedia Artikel.
In diesem Artikel möchte ich euch mein einfaches Script zeigen, welches ich auf meinen meisten Servern verwende. Das Script ist ausführlich kommentiert und sollte keine Fragen aufwerfen. Falls doch, schreibt mir einfach über den Kontakt.
#!/bin/sh # # iptables firewall script v1.0 # PATH=/usr/sbin:/sbin:/bin:/usr/bin #den Namen eurer Netzwerkkarte könnt ihr mit dem Befehl ip addr herausfinden. WAN=eth0 #WAN=ens3 #IP Adressen sind ebenfalls mit dem Befehl ip addr herauszufinden. IPv6=affe:cafe:1234:5678::1 IPv4=192.168.0.1 #einfacher Switch Case (siehe weiter unten für Bedeutung) case $1 in start) #stoppe das Script zuerst $0 stop #default policy setzen Output ist generell okay. iptables -P INPUT DROP ip6tables -P INPUT DROP iptables -P OUTPUT ACCEPT ip6tables -P OUTPUT ACCEPT iptables -P FORWARD DROP ip6tables -P FORWARD DROP #localhost traffic ist okay. iptables -A INPUT -i lo -j ACCEPT ip6tables -A INPUT -i lo -j ACCEPT #pings gegen die firewall sind okay. iptables -A INPUT -p icmp -d $IPv4 -j ACCEPT ip6tables -A INPUT -p icmpv6 -j ACCEPT #sperre diverse IPs. iptables -A INPUT -s 14.29.232.95 -j DROP iptables -A INPUT -s 212.70.149.71 -j DROP iptables -A INPUT -s 208.115.199.19 -j DROP #verbindungen welche die firewall akzeptiert hat sind okay. #siehe iptables Tutorial für die Bedeutung von ESTABLISHED,RELATED. iptables -A INPUT -i $WAN -m state --state ESTABLISHED,RELATED -j ACCEPT ip6tables -A INPUT -i $WAN -m state --state ESTABLISHED,RELATED -j ACCEPT #verbindungen auf port 22 zur firewall werden akzeptiert. iptables -A INPUT -i $WAN -p tcp -d $IPv4 --dport 22 -j ACCEPT ip6tables -A INPUT -i $WAN -p tcp -d $IPv6 --dport 22 -j ACCEPT #verbindungen auf port 80 (HTTP) zur firewall werden akzeptiert. iptables -A INPUT -i $WAN -p tcp -d $IPv4 --dport 80 -j ACCEPT ip6tables -A INPUT -i $WAN -p tcp -d $IPv6 --dport 80 -j ACCEPT #verbindungen auf port 443 (HTTPS) zur firewall werden akzeptiert. iptables -A INPUT -i $WAN -p tcp -d $IPv4 --dport 443 -j ACCEPT ip6tables -A INPUT -i $WAN -p tcp -d $IPv6 --dport 443 -j ACCEPT ### # Hier könnten weitere Regeln für alle möglichen Ports und services stehen. ### #optional #solltet ihr Brut-Force-Attacken mit fail2ban filter, muss fail2ban neugestartet werden #da fail2ban Regeln zu Beginn gelöscht wurden. #/etc/init.d/fail2ban restart #systemctl restart fail2ban.service echo "Firewall activated after stopped" ;; stop) iptables -F iptables -t nat -F iptables -t mangle -F iptables -X iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT ip6tables -F ip6tables -t nat -F ip6tables -t mangle -F ip6tables -X ip6tables -P INPUT ACCEPT ip6tables -P OUTPUT ACCEPT ip6tables -P FORWARD ACCEPT echo "Firewall stopped" ;; restart) $0 start ;; *) echo "Usage: $0 {start|stop|restart}" ;; esac
Hierzu gibt es bereits einen Artikel von mir (Script bei Systemstart ausführen).