(15.02.2025)
Validiert mit Ubuntu 24.04 LTS
- Benötigte Pakete installieren:
apt-get install ipset ipset-persistent iptables iptables-persistent dnsutils cron - ipsets anlegen (hier: archive.ubuntu.com und security.ubuntu.com)
ipset create ubuntuarc hash:ip
ipset create ubuntusec hash:ip - ipsets speichern (dpkg-reconfigure zeigt anderen Pfad an - /etc/ipset/ipsets, da liegt die Datei aber nicht)
ipset save /etc/iptables/ipsets - Datei
/root/cron.update-ipset.shanlegen mit folgendem Inhaltpset create temp hash:ipfor address in $(dig a archive.ubuntu.com +short); doipset add temp $addressdoneipset swap temp ubuntuarcipset destroy tempipset create temp hash:ipfor address in $(dig a security.ubuntu.com +short); doipset add temp $addressdoneipset swap temp ubuntusecipset destroy temp - cronjob einrichten mit
crontab -e(führt Update alle 30 Minuten aus)*/30 * * * * /root/cron.update-ipset.sh - Datei
/etc/iptables/rules.v4erzeugen mit folgendem Inhalt*filter:INPUT ACCEPT [16:2779]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT-A INPUT -i lo -j ACCEPT-A INPUT -m conntrack --ctstate INVALID -j DROP-A INPUT -p icmp -j ACCEPT#SSH-A INPUT -s <src> -p tcp --dport 22 -j ACCEPT#Webserver-A INPUT -p tcp --dport 80 -j ACCEPT-A INPUT -p tcp --dport 443 -j ACCEPT#rest weg-A INPUT -j REJECT-A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT-A OUTPUT -o lo -j ACCEPT-A OUTPUT -m conntrack --ctstate INVALID -j DROP# ICMP-A OUTPUT -p icmp -d 8.8.8.8 -j ACCEPT-A OUTPUT -p icmp -d 8.8.4.4 -j ACCEPT#Updates; Realisierung erfolgt über ipset, werden per cron aktualisiert-A OUTPUT -m set --match-set ubuntuarc dst -j ACCEPT-A OUTPUT -m set --match-set ubuntusec dst -j ACCEPT#DNS-A OUTPUT -d <dns-server> -p tcp --dport 53 -j ACCEPT-A OUTPUT -d <dns-server> -p udp --dport 53 -j ACCEPT#Rest weg-A OUTPUT -j REJECTCOMMIT