Zur Beachtung - Anleitungen

Bitte beachten Sie, daß die bereitgestellten Informationen zum Zeitpunkt der Erstellung im Rahmen von durchgeführten Arbeiten dokumentiert und validiert wurden. In einer geänderten Systemumgebung können für die Schritte Anpassungen erforderlich sein. Dies gilt insbesonders, falls die Informationen Workarounds oder Fehlerbehebungen betreffen. Die Informationen sind entsprechend spezifisch für die Systemumgebung und Version der Systeme zum Zeitpunkt der Arbeiten. Schritte, die sich für uns von selbst erschließen, sind ggf. nicht in den Anleitungen enthalten. Dasselbe gilt auch für konzeptionelle Anleitungen. Diese sind für spezifische Umgebungen und spezifische Erfordernisse erstellt und müssen vor Anwendung überprüft werden, ob sie für die angedachte Umgebung passend sind. Die Verwendung erfolgt auf eigene Gefahr.

Wir raten in jedem Fall dazu, vorab ein Backup in einem Umfang zu erstellen, der die Wiederherstellung der Systeme im Fehlerfall sichert. Dies betrifft bei Active-Directory-integrierten Diensten auch das Active-Directory.

 

(15.02.2025)

Validiert mit Ubuntu 24.04 LTS

  1. Benötigte Pakete installieren:
    apt-get install ipset ipset-persistent iptables iptables-persistent dnsutils cron
  2. ipsets anlegen (hier: archive.ubuntu.com und security.ubuntu.com)
    ipset create ubuntuarc hash:ip
    ipset create ubuntusec hash:ip
  3. ipsets speichern (dpkg-reconfigure zeigt anderen Pfad an - /etc/ipset/ipsets, da liegt die Datei aber nicht)
    ipset save /etc/iptables/ipsets
  4. Datei /root/cron.update-ipset.sh anlegen mit folgendem Inhalt
    pset 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
  5. cronjob einrichten mit crontab -e (führt Update alle 30 Minuten aus)
    */30 * * * * /root/cron.update-ipset.sh
  6. 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