In den nächsten Teilen werde ich die verschiedenen Angriffstypen näher betrachten. Im Anschluss werde ich @chappertrons wunsch nachkommen und verschiedene Protokolle näher betrachten. Die Weiterführung der Reihe wird sich anschließend eine Weile verzögern.
Denial of Service Angriff
Schauen wir uns nun als ersten Angriff den Denial-of-Service-Angriff(DoS) an. Ziel eines DoS ist es legitimen Nutzern den Zugriff auf einen Dienst zu verwehren. Um dies zu erreichen wird der Dienst gestört.
Es gibt eine einfache Form des DoS, die ohne böse Absicht geschieht - die Putzfrau zieht ausversehen den Stecker und nimmt dem Server den Strom. Es gibt verschiedene Formen von DoS-Angriffen, wobei jede dieser Formen eine andere Schicht angreift.
Über die Netzwerkbandbreite
Die älteste Form eines DoS Angriffs findet über die Netzwerkbandbreite statt. Ziel ist es die Netzwerkbandbreite voll auszulasten und so den Verkehr zwischen Nutzern und Dienst zu verlangsamen oder gar ganz abbrechen zu lassen. Dieser Angriff nutzt die Schwäche der Physikalischen Schicht - die Bandbreite ist begrenzt.
Man kann diese Methode mit einem Zug im Berufsverkehr vergleichen. Es gibt das berechtigte Bedürfnis der Pendler in ihn einzusteigen und heimzufahren. Wenn jetzt jedoch jemand einen Flashmob in diesem Zug organisiert und ihn mit weiteren Fahrgästen zu füllen bleiben die Pendler am Bahnhof stehen und können den Zug nicht mehr nutzen.
Diese Angriffsform ist heute schwer effektiv durchzuführen, da die Bandbreite der meisten Systeme enorme Ressourcen benötigt um gestört zu werden. Um solche Ressourcen aufzubringen wird meistens auf Bot-Netzwerke zurückgegriffen. Bei diesen Bots handelt es sich um mit Schadsoftware infizierte Windows-Rechner, die primär zum Versand von SPAM-Mails verwendet werden.
Ein Schutz vor solchen Angriffen ist nur über den Provider möglich, welcher jedoch nur sehr schwer Helfen kann, wenn die Angriffe über verschiedene oder gefälschte Adressen ausgeführt werden.
TCP-Stackd.Server
Eine andere Möglichkeit einen DoS Angriff durchzuführen ist ein SYN-Flood. Hierbei schickt der Angreifer viele TCP-SYN-Pakete an den Server, diese fragen einen Verbindungsaufbau an. Dort werden hierfür SYN/ACK-Pakete zurückgeschickt, die einen Verbindungsaufbau anzeigen. Gleichzeitig werden alle Verbindungsanfragen in einer Tabelle gespeichert. Hierbei redet man von Pending Connections.
Als Antwort auf das SYN/ACK-Paket des Servers schickt der Clinet des Nutzers ein TCP-ACK-Paket, welches dafür sorgt das die Verbindung aus der Tabelle der schwebenden Verbindungen(Pending Connections) gelöscht wird und in die Tabelle der aufgebauten Verbindungen(Established Connections) übertragen wird.
Flutet nun der Angreifer nun den Server mit TCP-SYN-Paketen und bittet um einen Verbindungsaufbau zu erbitten, wobei er die Absenderadressen fälscht, muss jedes Paket vom System beantwortet werden. Die Tabelle ist jedoch begrenzt. Sind mehr schwebende Verbindungen vorhanden als Plätze in der Tabelle vorhanden sind, werden die ältesten Beiträge gelöscht. Passiert dies schneller als das der Clint antworten kann, ist die Verbindung nicht mehr bekannt und es kommt zu einem Verbindungsabbruch. Dies führt dazu das der Dienst nicht verfügbar ist.
Viele TCP-Implementierungen brechen ab 100 TCP-SYN-Paketen pro Sekunde ab. Eine Lösung ist die Verwendung von Linux SYN-Cookies, welche bis zu 100.000 TCP-SYN-Pakete pro Sekunde erlauben. Diese ignorieren die Tabellen und arbeiten auf Basis der Sequenznummern der Cookies.
Quellen
- Ralf Spenneberg – Linux-Firewalls, Sicherheit für Linux-Server und –Netzwerke mit IPv4 und IPv6 2 Auflage