Es kommt zur Zeit immer häufiger vor, das gemietete Server gehackt werden.
Die Opfer fragen sich zu Recht, wie kann das passieren...??!
Nun, die Frage kann man pauschal nicht beantworten - sicher ist nur eins, einen 100% Schutz wird es bekanntlich nie geben.
Ich möchte an dieser Stelle mal schildern, welche Sicherheitsmaßnamen ich nach mehrfachen Angriffen auf meinen Server getroffen habe. Da ich seitdem keinerlei Probleme hatte, sollten wohl die meisten Sicherheitslöcher gestopft sein.
Ich konzentriere mich hier auf das Zusammenspiel eines Debian Servers mit Joomla als CMS.
Grundsätzlich sollte man aktuellste Versionen jeder Software verwenden.
Regelmäßige security updates sind bei debian relativ leicht über das APT zu realisieren.
Den Zugriff auf den Server immer nur über SSH herstellen - niemals telnet o.ä. verwenden.
Den standard Port von SSH (22) sollte man verändern. Ein hoher Port wird von den meisten Sniffern gar nicht erst erkannt.
Unter debian: zabulus:/# vi /etc/ssh/sshd_config
Damit selbst im schlimmsten Fall eine Brute Force Attake abgewehrt werden kann, empfehle ich den Einsatz der folgenden Tools:
- Denyhosts (http://denyhosts.sourceforge.net/) Sperrt den Angreifer nach X erfolglosen Loginversuchen. Vorsicht: Sperrt euch nicht selber aus ;-)
- Portsentry (http://sourceforge.net/projects/sentrytools/)
- rkhunter (http://www.rootkit.nl/)
- Logwatch (http://www2.logwatch.org:81/)
Damit hat man schon einen guten Grundschutz.
Ich habe mir persönlich noch ein paar kleine eigene Scripte geschrieben, die mich über auffällige Änderungen informieren. Die scripte werden über einen cronjob einmal täglich angestossen. Die Ergebnisse bekomme ich per mail - somit bin ich immer ganz gut informiert.
#! /bin/sh
#PHP Filesearcher
#by Andreas Vehreschild
#Durchsucht das VAR Verzeichnis nach modifizierten php Dateien der
letzten 5 Tage
find /var -name '*.php' -type f -mtime -5
#! /bin/sh
#BankSearcher
#by Andreas Vehreschild
#Durchsucht die Platte nach Dateien die banko beeinhalten
updatedb &
locate banko
#! /bin/sh
#C99.php
#by Andreas Vehreschild
#Durchsucht die Platte nach der gefährlichen c99.php Datei
updatedb &
locate banko
Grundsätzliches:
Apache / PHPPHP sollte unbedingt in der Einstellung register_globals OFF laufen
Joomla:- Immer aktuellste Version verwenden
- Richtige Rechtevergabe auf Verzeichnisse
- Administrator Verzeichnis zusätzlich mit .htaccess schützen (wichtig)
- Module und Komponenten genau analysieren
- configuration.php datei auf chmod 644
Darüber hinaus sollte in der Datei globals.php zu Beginn die Zeile
define( 'RG_EMULATION', 0 );
stehen, damit Joomla auch intern keine globalen Variablen verwendet.
Es existieren sehr viele Zusatzkomponenten für Joomla. Etliche davon
sind leider äußerst schlampig programmiert. Vor dem Einsatz einer
solchen Extension sollte daher eine Recherche stehen, ob bei der
betreffenden Komponente Sicherheitslücken bekannt sind und ab welcher
Version sie ggf. behoben sind. Hierbei sollte es ausreichen, auf
http://forum.joomla.org und http://www.joomlaportal.de nach dem Namen
der Extension zu suchen.
Ich hoffe damit dem ein oder anderen geholfren zu haben.
Über Anregungen freue ich mich natürlich auch.