tutorials.de Buch-Aktion 05/2012
RSS-Feed anzeigen

Dem Dennis sein Blogdingen da...

Wer haemmert gegen meine Pforte?

Bewerten
von Dennis Wronka am 18.07.07 um 15:11 (1004 Hits)
Der Linux-Server im Buero bietet seit letzter Woche auch FTP-Zugriff an. Natuerlich nicht ohne Login. Seitdem hagelt es Zugriffe, natuerlich keine gewuenschten.
Allgemein hat es den Anschein dass hier versucht wird den Server per DoS (Denial of Service) ausser Gefecht zu setzen. Mal davon abgesehen, dass dies soweit nicht funktioniert hat, obwohl ich nicht sagen kann ob nicht eventuell der FTP-Service aufgrund des grossen Traffic-Aufkommens den DoS-Status erreicht hat (glaube es aber nicht), ist es nervig wenn die Logs so nutzlos anschwellen, denn Zugriffe von aussen werden bei mir natuerlich schoen artig geloggt.
Nun koennte man mittels IPTables ganz einfach ein Log-Limit festsetzen, aber das ist meiner Meinung eine Art "Augen zu und durch"-Loesung, denn vor dem eigentlichen Problem verschliesst man hier die Augen wenn man einfach nur das Logging limitiert.
Viel besser ist es da wirklich die Zugriffe zu limitieren.
Wie an dem Auszug des VsFTPd-Logs zu sehen ist gibt es Login-Versuche alle 3 Sekunden, jeweils mit dem gleichen User und der gleichen IP. Irgendwann kommt dann mal eine neue IP, eventuell auch ein neuer User, und dann geht es von Neuem los.
Mon Jul 16 00:22:03 2007 [pid 14990] [Administrator] FAIL LOGIN: Client "140.135.6.28"
Mon Jul 16 00:22:07 2007 [pid 14990] [Administrator] FAIL LOGIN: Client "140.135.6.28"
Mon Jul 16 00:22:10 2007 [pid 14990] [Administrator] FAIL LOGIN: Client "140.135.6.28"
Mon Jul 16 00:22:12 2007 [pid 14990] [Administrator] FAIL LOGIN: Client "140.135.6.28"
Mon Jul 16 00:22:14 2007 [pid 14990] [Administrator] FAIL LOGIN: Client "140.135.6.28"
Mon Jul 16 00:22:16 2007 [pid 14990] [Administrator] FAIL LOGIN: Client "140.135.6.28"
Mon Jul 16 00:22:19 2007 [pid 14990] [Administrator] FAIL LOGIN: Client "140.135.6.28"
Mon Jul 16 00:22:22 2007 [pid 14990] [Administrator] FAIL LOGIN: Client "140.135.6.28"
Das geht natuerlich noch so weiter, meist 30-60 Minuten lang. Was dazu gefuehrt hat, dass von Montag 16 Uhr bis Dienstag 10 Uhr die Anzahl an Paketen vom und zum FTP-Port von ca. 18.000 auf gut 240.000 angestiegen ist.

Ein Problem scheint hier jetzt zu sein, dass scheinbar nicht jedes Login eine neue Verbindung darstellt, da ein solcher Filter aber mittels des Recent-Moduls in Netfilter am einfachsten zu erstellen ist habe ich es jetzt erstmal damit versucht, in der Hoffnung dass es denn was bringt.
Die Regeln sehen wie folgt aus:
Code :
1
2
3
$IPTABLES -N stopdos
$IPTABLES -A stopdos -p tcp --dport ftp -m recent --set --name FTPDOS
$IPTABLES -A stopdos -m recent --rcheck --second 30 --hitcount 10 --name FTPDOS -j DROP
Und fuer die INPUT-Kette natuerlich noch folgender Aufruf:
Code :
1
$IPTABLES -A INPUT -s ! $INT_NET -m state --state NEW -j stopdos
Alle neuen Verbindungen die nicht aus dem LAN kommen gehen also in die oben erstellte Kette stopdos wo dann alles was auf dem FTP-Port reinkommt in die Recent-Liste FTPDOS eingetragen wird. --set bewirkt uebrigens nicht nur einen Eintrag, sondern auch dass ein bereits bestehender Eintrag aktualisiert wird.
Anschliessend wird gecheckt ob innerhalb der letzten 30 Sekunden 10 Hits von dieser IP auf dem FTP-Port ankamen und dann entsprechend geblockt, auf allen Ports!
10 Hits in 30 Sekunden hoert sich viel an, aber schaut doch einfach mal auf den Log-Auszug, es kommt alle 3 Sekunden ein Login, das macht 10 Hits in 30 Sekunden, nicht? Moeglicherweise werde ich dies aber noch etwas nach unten korrigieren, vielleicht auf 7 oder 8 Hits, sodass etwas Toleranz gegeben ist.

Okay, aber was wenn dies wirklich nicht funktioniert? Wenn, wie die Logs ja vermuten lassen, keine neue Verbindung pro Login aufgebaut wird?
Ein Daemon konnte staendig das FTP-Log ueberwachen und dann dynamisch Regeln in die Firewall einfuegen. Dies ist aber umstaendlich und koennte auch die Performance negativ beeinflussen. Ein Cron-Job koennte zu spaet kommen wenn dieser nur stuendlich ausgefuehrt wird, wird er jede Minute oder alle 5 Minuten ausgefuehrt duerfte der Daemon wohl schon mehr Sinn machen.

Eine andere Moeglichkeit koennte Snort darstellen. Moeglicherweise lassen sich mit diesem IDS Regeln erstellen die nach 7-10 gescheiterten Logins in nur 30 Sekunden eine Firewall-Regel erstellt. Da ich bisher aber kaum mit Snort gearbeitet habe duerfte dies einiges an Lesestoff fuer mich bedeuten. Andererseits ist es wirklich mal an der Zeit sich naeher mit Snort zu beschaeftigen.

Wie es weitergeht steht in den Sternen. Bislang haben die beiden neuen Regeln noch garnichts gefangen, das heisst dass es seitdem noch keine neuen FTP-Verbindungen gab. Ich bin, wegen des FTP-Logs, auch nicht wirklich sicher ob die Regeln wirklich helfen, ich denke eher nicht. Da dies aber erstmal der einfachste Weg war war es mir einen Versuch wert.

Leider scheint VsFTPd nicht die Moeglichkeit zu besitzen nach 3 gescheiterten Logins automatisch die Verbindung zu trennen. Die Konfig-Datei und ihre Man-Page erwaehnen nichts in dieser Hinsicht.
Ich werde auf auch mal weiter im Internet nach Informationen suchen, ich bin sicher nicht der erste dem sowas passiert ist.

Ich werde Euch auf jeden Fall auf dem Laufenden halten was meine Fortschritte in dieser Hinsicht angehen und kann hoffentlich im Endeffekt eine gute und moeglichst saubere Loesung praesentieren.

"Wer haemmert gegen meine Pforte?" bei Twitter speichern "Wer haemmert gegen meine Pforte?" bei Facebook speichern

Kategorien
Security

Kommentare

  1. Avatar von lexz
    Denke eher dass das nen Bruteforce attack ist. Zum anderen wieso hast du dich noch nicht an die Polizei gewand ? Weiß ja nicht wie das bei euch dahinten gesetzlich läuft. Aber hier in Deutschland dürfte man schon Strafanzeige erstatten..

    mfg

    alex
  2. Avatar von Dennis Wronka
    Zum Einen hab ich dagegen noch nichts rechtliches gemacht da ich nicht weiss wie es hier aussieht. Ein wirklicher Einbruch findet ja nichtmal statt, saemtlicher Usernamen die ich in den Logs finden konnte sind eh zum Scheitern verurteilt da sie nicht existieren.
    Andererseits sehe ich dies auch mal als technische Herausforderung an. Wenn ich diese Pakete auf technischer Seite unterbinden kann ist dies gut fuer mich und mein Netz, denn dadurch bin ich auch in Zukunft vor sowas geschuetzt, und eben nicht nur kurzfristig wie wenn ich denen die Polizei auf den Hals jage, mal davon abgesehen, dass die IPs aus China, Taiwan, den USA und anderen Laendern kommen und wahrscheinlich sogar gefaelscht sind.
  3. Avatar von Azi
    Kennst du Fail2Ban? Das ist ein Daemon, der die Logfiles durchschaut und böse Leute sperrt. Aus Erfahrungsberichten kann ich sagen, dass die Performance überhauptnicht daran leidet. Du kannst es ja mal ausprobieren und bei negativen Ergebnissen wieder rausnehmen

    Azi