SSH > Public Key Authentication

Wie ich bereits im letzten Artikel Linux > SSH optimal schützen bekannt gegeben habe, geht es in dieser Woche um die Public Key Authentifizierung mit SSH. Bevor wir anfangen die Schlüssel zu generieren, gibt es nochmal eine kleine Einführung was die PKA überhaupt ist.

Bei der PKA werden zwei Schlüssel angelegt, ein öffentlich und ein privater Schlüssel. Der öffentliche Schlüssel wird auf dem Server abgelegt und der private Schlüssel verbleibt bei uns auf dem lokalen Rechner. Jetzt ist es möglich – statt wie bisher mit einem Passwort – den privaten Schlüssel zur Anmeldung via SSH zu verwenden.
Mit dieser Authentifizierungsmethode ist es dem Angreifer nicht mehr möglich mittels Bruteforce oder Wörterbuch-Attacke den SSH-Zugang des Servers zu knacken. Selbst wenn jemand an den privaten Schlüssel gelangt, reicht es nicht aus, um auf den Server zuzugreifen, da zusätzlich noch ein Schlüsselwort benötigt wird. Kurzum, dieses Verfahren bietet einen top Schutz für SSH.

So, genug Einführung. Jetzt gilt es das alles in die Praxis umzusetzen.

» Weiterlesen

Linux > SSH optimal schützen

Wer dieser Tage Nachrichten aus dem digitalen Themenbereich liest, wird immer wieder Artikel über Hacker-Angriffe finden. Um dieser negativen Entwicklung ein wenig entgegen zu wirken, möchte ich hier einige Tipps geben wie man den SSH-Zugang eines Servers schützen kann. Ich habe einmal drei Möglichkeiten zusammengetragen, die sich ggf. auch kombinieren lassen.
» Weiterlesen

5 Gefahrenquellen in PHP-Anwendungen

PHP-Anwendungen sind bekannt dafür viele Sicherheitsmängel zu beinhalten (obwohl das nicht stimmt), trotzdem möchte ich heute einmal auf 5 der schwersten Sicherheitslücken aufmerksam machen. Schaut euch doch mal eure (älteren) PHP-Skripte an. Die meisten werden mindestens eine dieser 5 möglichen Gefahrenquellen wiederfinden 😉

  1. Daten, die aus der Datenbank kommen, sind sicher
    Grundsätzlich sollte auch die Datenbank als „Benutzer“ betrachtet werden und auch hier alle eingehenden Daten überprüft werden (z.B. wenn die Daten zur Generierung von neuen PHP-Code oder dem Laden von Dateien genutzt wird).
    Der Grund ist ganz einfach: Sollte ein Unbefugter Zugriff auf die Datenbank erlangen, könnte er damit evtl. auch direkt das Verhalten der PHP-Anwendung beeinflussen.
  2. Prepared Statements oder Escaping machen SQL-Injections unmöglich
    Über Best Practices gegen SQL-Injections habe ich bereits berichtet. Es reicht nicht aus nur Spaltenwerte mit Prepared Statements zu schützen. Auch Spalten-, Tabellennamen und alles was sonst noch vom Benutzer zur Datenbank gelangt, kann eine SQL-Injection enthalten.
  3. Session IDs, die in Cookies abgelegt sind, können nicht ausgelesen werden
    Das Standard-Verzeichnis für PHP-Sessions lässt sich von jedem, der ebenfalls einen Host auf dem Server hat, auslesen – ein Kinderspiel um an die IDs der Sessions zu gelangen. Verhindern lässt sich das am besten, in dem man ständig die IP-Adresse überprüft der Session abfragt, die Session-ID jedes mal gewechselt wird (session_regenerate_id()), oder man ein anderes Verzeichnis wählt (session_save_path()).
  4. Zugangsdaten zur Datenbank werden am sichersten in einer PHP-Datei abgelegt
    Die Aussage an sich ist natürlich völlig richtig, aber was passiert wenn die Datenbank plötzlich einen Fehler meldet und die Zugangsdaten über eine unglücklich programmierte Fehlerbehandlung zu Debugging-Zwecken ausgegeben wird?
  5. Mit MD5 verschlüsselte Passwörter sind sicher
    MD5-Hashes lassen sich mittlerweile kinderleicht über Hash-Datenbanken oder Rainbow-Tables knacken. Abhilfe schaffen Salted Passwörter oder verbesserte Verschlüsselungsmethoden wie beispielsweise RSA.

Nicht alle der fünf hier genannten Punkte sind selbstverständlich und manchmal denkt man auch nicht daran, dass so etwas ausgenutzt werden könnte. Daher macht es Sinn sich einmal selbst in die Rolle des Angreifers zu versetzten und zu versuchen seine eigene Anwendung mit allen Möglichkeiten zu hacken. Immerhin kennt man sich selbst mit seinem selbstgeschriebenen Code noch am besten aus.

Ältere Artikel »