Angriffe auf SSH/FTP Port eindämmen

Nachdem ich schon meine Probleme mit Angriffen auf dem SSH-Port hatte, ging es seit Vorgestern auf dem FTP-Port weiter: alle 6 Sekunden ein Versuch.

Beim SSH-Port habe ich einfach mal den Port auf 222 gesetzt, was aber nur eine schmutzige Zwischenlösung ist, denn das verhindert ja nichts sondern ist nur nicht Standardkonform. Beim FTP-Port wollte ich dann auf Port 221 ausweichen, aber dann gingen alle FTP-Kommandos nicht mehr. Warscheinlich ist der Port mit etwas wichtigem belegt, ich hab nicht nachgesehen. Fazit daraus: es ist keine gangbare Lösung.

Nach den aktuellen Angriffen habe ich mal gesucht, und eine extrem einfache und für mich praktikable Lösung gefunden: einfach per iptables die Anzahl der möglichen Verbindungsversuche eingrenzen.

Ich habe das für meine Zwecke folgendermaßen angepasst:
iptables -N INTRUSION_BLOCKER
iptables -A INPUT --goto INTRUSION_BLOCKER
iptables -A INTRUSION_BLOCKER -i eth0 -p tcp --dport 21 -m state --state NEW -m recent --set --name FTP
iptables -A INTRUSION_BLOCKER -i eth0 -p tcp --dport 21 -m state --state NEW -m recent --update --seconds 3600 --hitcount 5 --rttl --name FTP -j DROP
iptables -A INTRUSION_BLOCKER -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INTRUSION_BLOCKER -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 3600 --hitcount 13 --rttl --name SSH -j DROP

Für FTP-Verbindungen darf sich eine IP nur 5 mal (–hitcount 5) in der Stunde (–seconds 3600) verbinden. Versucht man es öfter, bekommt man keine TCP-Verbindung mehr aufgebaut. Der Port ist dann für diese IP einfach komplett gesperrt für den Rest der Stunde seit der ersten Verbindung. Für mich ist das ausreichend, da ich FTP kaum verwende.

Bei SSH bin ich etwas vorsichtiger ran gegangen. Auch dort verbinde ich mich sehr selten aber für Notfälle hab ich mal 13 Verbindungen pro IP pro Stunde zugelassen.

Auf der Quellseite ist das ganze als Script beschrieben, was beim an- und abschalten der Netzwerkinterfaces jeweils mit gestartet und gestoppt wird. Da mir das zu unübersichtlich war, das an zwei Stellen zu hinterlegen, hab ich einfach ein System-Start-Script daraus erstellt, was folgendermaßen verwendet werden kann:

  • Die Datei [FEHLT] intrusion_blocker unter /etc/init.d ablegen
  • Den Besitzer incl. der Rechte anpassen per chown root:root intrusion_blocker
    chmod 755 intrusion_blocker
  • Als root die Regeln “starten” per sudo /etc/init.d/intrusion_blocker start

Zumindest mein “persönliche Freund”, der hier seit 2 Tagen nervt, ist schlagartig verstummt. Schon mal der erste Erfolg.

Nachtrag: Natürlich sollte man nicht vergessen, das Startscript auch zu registrieren, damit es beim neustart wieder korrekt ausgeführt wird:update-rc.d intrusion_blocker defaults

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert