Hauptmenü

Untermenü

Sicher programmieren - Brute-Force-Angriffe

1. Die Abschnitte

2. Brute-Force-Angriffe

Eigentlich ist dieses Thema eher was für Admins denn für Programmierer. Ich bringe es euch aber trotzdem zu Gehör, da mit Sicherheit einige von euch auch Content Management Systeme betreuen.

Also, ein Brute-Force-Angriff ist der Versuch, sich mit brutaler Gewalt Zugang zu einem passwortgeschützten System zu verschaffen. Dabei werden die Zugangsdaten einfach so lange ausprobiert, bis man es „erraten“ hat. Für ein sechsstelliges Passwort, das nur aus Kleinbuchstaben besteht, benötigt man laut PC-Welt nur schlappe 6.8 Sekunden.

Mittlerweile gehen die bösen Buben ein wenig intelligenter vor und nutzen Listen mit Benutzernamen und Passwörter. Denn leider ist der Mensch von Hause bequem und nimmt für so was (fast) immer Kombinationen, die man sich leicht merken kann.

Das Problem der Brute Force Angriffe ist sowohl bei Webmastern als auch bei Hostern bekannt und gefürchtet. Zu diesem Zweck stellen viele Hoster Anleitungen und Hilfestellungen bereit um Webmastern bei der Absicherung von Servern zu helfen. Verwendet habe ich diesen Linux virtual Root Server, um die folgenden Möglichkeiten zur Absicherung zu testen.

3. Der erste Schritt

Sichere Passwörter! Klingt einfach, ist in der Praxis aber oft nur schwer durchzusetzen. Aber da müsst ihr durch. Sobald einer eurer Kunden zum Beispiel einen Zugang zum Typo3- oder Wordpress-Backend haben möchten, so vergebt ihr das Passwort. Und sorgt dafür, dass man es nicht ändern kann. Und wenn doch, so schraubt die Anforderungen dafür hoch. Die meisten Content Management Systeme bieten dafür eine Option an.

Ein Tipp

Arbeitet mit kleinen Merksätzen wie zum Beispiel „Hier bin ich Gott und darf alles“. Das Paswort sähe dann so aus: HbiGuda. Einige Buchstaben kann man dann noch durch Zahlen oder Sonderzeichen ersetzen. In diesem Fall könnte man aus dem i eine 1 oder ein Ausrufezeichen machen. Dann hätte man Hb1Guda. Gut, das ist immer noch nicht optimal, aber es geht hier nur ums Prinzip. Bei den Benutzernamen funktioniert das natürlich auch. Da wird aus einem „möller“ ganz schnell ein „m0e!!er“.

Der ach so beliebte „admin“

Ich möchte nicht wissen, auf wie vielen Systemen das der Standardbenutzername für den Administrator ist. Niemals machen. Niehihihihimals! Denn in so einem Fall muss man sich nur noch um das Passwort kümmern und rumms, schon hat man die komplette Kontrolle über alles.

4. Loggen

Logins sollte man immer mitprotokollieren. Und zwar mit Datum/Uhrzeit, IP-Adresse und den Header-Daten des Request. Am Besten macht man das in einer eigenen Datei oder Datenbanktabelle, dann fällt einem die Auswertung leichter.

Denn Brute-Force-Atacken erkennt man immer daran, dass in kürzester Zeit hunderte von Login-Versuchen stattfinden. Und damit man schnell reagieren kann, sollte man, wenn möglich, bei so einem Fall eine automatische Benachrichtigung per Mail oder SMS einbauen.

5. Gegenmaßnahmen

Die IP sperren

Das ist zunächst mal das Naheliegenste. Man setzt die IP auf eine Blacklist und sperrt sie aus. Gottlob gibt es dafür Tools, die das automatisch übernehmen wie zum Beispiel SSH Guard.

Aber! So wirklich sicher ist das auch nicht, denn über das so genannte IP-Masking kann man solche Sperren kinderleicht aushebeln. Außerdem gibt es noch immer Provider, die die IP-Adresse mehrmals pro Minute ändern. Mögen sie in der Hölle schmoren!

Header-Daten

Jeder Browser (und auch Bot) schickt Header-Daten zum Server. Und erstaunlicherweise kann man anhand derer User ziemlich genau identifizieren. Das hat eine Untersuchung der Electronic Frontier Foundation (EFF) herausgefunden. Also legt man die entsprechenden Einträge in einer Login-Tabelle der Datenbank ab und bei X Zugriffen pro Sekunde wird der Client gespert.

Verbindungen absichern

Darauf werdet ihr als Entwickler kaum Einfluss haben, es kann aber nicht schaden, wenn ihr es wisst. Also, bestimmte Verbindungen sollten immer geschützt sein. Anstelle von FTP nimmt man SFTP und beim SSH-Zugang arbeitet man mit Public Keys. Damit wird der Zugriff an ganz bestimmte Rechner gekoppelt, da hier mit öffentlichen und privaten Schlüsseln gearbeitet wird. Der eine oder andere kennt das Prinzip sicher von PGP. Mit all diesen Maßnahmen könnt ihr zwar einen Brute-Foce-Angriff nicht verhindern, ihn aber relativ sicher abwehren. Und nur darum geht es.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt