Webserver absichern

Ich möchte hier nicht auf ein Sicherheitskonzept für Webserver eingehen, sondern nur zwei – drei Stichwörter und Tipps geben, wie man es Scriptkiddies wenigstens etwas schwerer machen kann, über einen Webserver in ein Produktivsystem einzudringen.

Ich gehe hier vom Apachen 2 aus. Meine Tipps funktionieren sicher auch (mit veränderten Befehlen) mit anderen Webservern.

Die verwendete Software und Versionsnummern ausblenden
ServerSignature Off -> Blendet alle Versionsnummern aus
ServerTokens Prod -> Zeigt nur „Apache“ im HTTP-Header an.

Ungewünschte IPs automatisch blocken
Nutzung des Apacheplugins „mod_defensible“. Damit wird bei jeder Anfrage überprüft ob die IP in einer Blackliste eingetragen ist. Sollte dies der Fall sein, bekommt der User eine 403er Meldung (Zugriff verweigert).

Administrationsoberflächen verstecken
Besonders PhpMyAdmin wird sehr oft kompromittiert. Hierzu dem Verzeichnis einen völlig sinnfreien Namen geben (z.B. „zgasdfzitaosdizfhauhvosfg“). Niemals „admin“, „sqladmin“ o.ä. verwenden!!

Administrationsoberflächen schützen
Administrationsbereiche am besten nicht nur durch Standartpasswortabfragen der Scripts nutzen, sondern zusätzlich das Interface über eine .htaccess schützen.

PHP-Absichern:
Unsichere PHP-Funktionen systemweit verbieten. Hierdurch können bei einem möglichen Einbruch keine Shellscript o.ä. ausgeführt werden (auch nicht die berüchtigte „c99.php“)
Siehe „disable_functions“ in der php.ini

Einige Beispiele:
exec, shell_exec, find, posix_getpwuid, posix_getpwnam, proc_open, proc_nice, escapeshellarg, escapeshellcmd, highlight_file, disk_total_space, passthru, system, popen, posix_mkfifo, symlink, pfsockopen, show_source, link, getmyuid, set_time_limit, ftp_get, stream_socket_client, stream_socket_server, pcntl_exec, pcntl_fork, pcntl_getpriority, pcntl_wait

Abschalten der PHP-Versionsnummer in HTTP-Headern
expose_php = Off

Einsatz von suhosin
PHP-Plugin welches automatisch verdächtige Anfragen filtert bzw. gar nicht erst zulässt.

Allgemeine Tipps

  • Anmeldung als „root“ verbieten.
  • SSH-Port verlegen.
  • Externer MySQL-Zugriff verbieten -> Nur localhost/127.0.0.1.
  • Installierte Software aktuell halten!!
  • Verwendete Scripts aktuell halten!!

Wie bereits geschrieben, ist das kein komplettes Konzept, nur ein paar Tipps, welche mir spontan einfielen.

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.