(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.sh
anlegen mit folgendem Inhaltpset create temp hash:ip
for address in $(dig a archive.ubuntu.com +short); do
ipset add temp $address
done
ipset swap temp ubuntuarc
ipset destroy temp
ipset create temp hash:ip
for address in $(dig a security.ubuntu.com +short); do
ipset add temp $address
done
ipset swap temp ubuntusec
ipset destroy temp
- cronjob einrichten mit
crontab -e
(führt Update alle 30 Minuten aus)*/30 * * * * /root/cron.update-ipset.sh
- Datei
/etc/iptables/rules.v4
erzeugen 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 REJECT
COMMIT