IPTables Schutz vor DDoS Angriffe Abwehren oder Verringern

  • Hallo schönen guten TAG


    Wir bräuchten mal eure hilfe Und Zwar wir wollen unsere Server sicher besser Absichern mit IPTABLES

    um die angriffe zu verringern oder Das garkeine durchgehen wir haben Schon ein paar Methoden gemacht Und es Zu 52.7% geschaft

    mussten unsere Server mehrmalls neu Machen wegen paar fehler und wollten euch fragen Was würdet ihr so Generäl an Abwehrmaßnahmen machen IPTABLES Usw


    Was wir auf unseren 2 Server Hosten sind Aktuell

    Minecraft Server - TeamSpeak - CloudNet - WebShop - WebDomain Extra - PhPMyAdmin MySql - Plesk


    Unsere beiden server Laufen auf Debian 9

  • wir haben Schon ein paar Methoden gemacht Und es Zu 52.7% geschaft


    Moin,

    ist das ein Benchmark den man ausführen kann? Dann würde ich den mal bei mir ausprobieren und kann schauen. Ich hatte eine Zeit lang mal DDoS Regeln in Verbinding mit Sysctl hardening aktiv, die haben allerdings an anderen Stellen Probleme verursacht.


    Gruß

  • Moin,

    ist das ein Benchmark den man ausführen kann? Dann würde ich den mal bei mir ausprobieren und kann schauen. Ich hatte eine Zeit lang mal DDoS Regeln in Verbinding mit Sysctl hardening aktiv, die haben allerdings an anderen Stellen Probleme verursacht.


    Gruß

    Hey


    Boah genau keine Ahnung wir haben Soviele regeln Dort eingebaut Das wir 5 std An denn servern BZW schutz dran Wahren wir haben einfach alte und Neue attacken Gegoogelt und Einiges damit Mit abwehren konnten BZW haben wir Auch keine abuse Hinweis Bekomm

  • Vorweg der Hinweis, dass der Support für Debian9 im Juni nächsten Jahres auslaufen wird. Ein Update auf Debian 10 (Buster) wäre bis dahin anzuraten.


    Im Vorfeld entsorge ich pauschal mal Pakete, die ohnehin unbrauchbar oder unmöglich sind (spoofing z.B.) sind und ich tue das nicht in der INPUT, sondern bereits vorher im PREROUTING. Kann ab ein paar Millionen Pakete pro Sekunde schon einen Unterschied machen.

    Damit ist schon ein Haufen Abfall erschlagen.

    Code
    1. -A INPUT -i lo -j ACCEPT # Erlaube Verbindungen von Localhost
    2. -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # Bereits bestehende TCP-Verbindungen müssen nicht weiter untersucht werden
    3. -A INPUT -s 1.2.3.4/24 -j ACCEPT #Erlaube Adressbereich des Hosting-Anbieters falls dieser automatische Überwachung für Dienste anbietet
    4. -A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m limit --limit 2500/min --limit-burst 5000 -j ACCEPT #für einen kleine Webserver mit wenig traffic erlaube bis zu 5000 neue Verbindungen binnen einer Minute verteilt auf alle Absender und erzwinge bei Überschreitung ein Limit von 2500 Verbindung pro Minute
    5. -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT # Erlaube den ganz normalen Ping, kann natürlich auch auf 1/s limitiert werden, aber dann am besten pro Absender
    6. -A INPUT -j DROP # alles was nicht in eine Regel passt wegwerfen

    Ggf. macht es Sinn wichtige Ports wie SSH gezielt auf einen bestimmten Adressbereich zu "whitelisten" falls es möglich ist. Dann muss sich der Dienst schon mit weniger geskripteten Versuchen da draussen herumschlagen und das Hintergrundrauschen im auth.log wird signifikant reduziert.

    Neben dem Limit für alle Nutzer auf einmal (dieses kann ruhig recht hoch angesetzt werden) kann der Traffic dann noch auf die einzelnen Absender herunter gebrochen werden und dort geprüft ob ein einzelner über die Stränge schlägt:


    Code
    1. -A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j IN_SSH
    2. -A IN_SSH -m recent --rcheck --seconds 60 --hitcount 15 --rttl --name sshbf --mask 255.255.255.255 --rsource -j DROP
    3. -A IN_SSH -m recent --set --name sshbf --mask 255.255.255.255 --rsource -j ACCEPT

    Frei übersetzt: Maximal 15 Versuche binnen einer Minute pro Absender eine Verbindung per SSH aufzubauen, sonst war es das.


    In deinem konkreten Fall musst du natürlich die Ports sämtlicher Dienste einzeln freigeben:

    • Minecraft 25565/tcp
    • Teamspeak 9987/udp 10011/tcp 30033/tcp 41144/tcp
    • Webdienste 80/tcp 443/tcp
    • Plesk läuft ggf. auf einem anderen Port, dann dieser auch /tcp
    • MySQL NUR falls von extern Zugriffe auf die Datenbank notwendig sind, ansonsten NICHT freigeben


    Den ganzen Spaß darfst du dann noch einmal machen für ip6tables falls IPv6 angeboten/verwendet wird (will ich doch hoffen).


    Als Schlusswort: iptables ist deprecated und es sollte nftables an dessen Stelle verwendet werden. Hatte selbst noch keine Gelegenheit mich damit näher zu befassen, es gibt jedoch auch "Übersetzer" welche bestehende Regeln von iptables-sprech in nftables-sprech übersetzen.


    Schöne Grüße