# Defacement - Kundenpräsenz



## hahni (1. Feb. 2008)

Hallo zusammen,

leider wurde von einem Kunden die Webseite defaced! Offensichtlich hatte der Kunde einen unliebsamen Mitarbeiter, der sich so profilieren wollte.

Ansonsten deutet nämlich nichts darauf hin, dass dem Server etwas fehlt! Meine Vermutung also: das Kennwort muss er erlangt haben, um Mist zu bauen!

Könnte er mit Programmen wie dem "commandliner" an die "/etc/passwd" etc. gekommen sein? So hätte er die Möglichkeit, via Brute Force die Kennungen incl. Root-Pwd zu knacken...

Auf was sollte ich noch achten und prüfen?


Beste Grüße

Hahni


----------



## Till (1. Feb. 2008)

> Könnte er mit Programmen wie dem "commandliner" an die "/etc/passwd" etc. gekommen sein?


Das hängt davon ab, wie Du Deinen Server konfiguriert hast. Ist PHP und  CGI aktiv und wie ist Dein PHP konfiguriert?



> Auf was sollte ich noch achten und prüfen?


Lass mal rkhunter drüber laufen und mach einen Portscan.


----------



## hahni (1. Feb. 2008)

Portscan und rkhunter sind negativ, also keine Auffälligkeiten. CGI und PHP sind aktiv, allerdings als safe_mode! Doch die /etc/passwd könnte ja so mittels commandliner etc. ausgelesen werden und dann auf dem heimischen Rechner via Brute Force bearbeitet werden, oder?


----------



## Till (1. Feb. 2008)

Über PHP mit Safemode sollte es nicht möglich sein, da dann einige Kommandos wie exec nicht benutzt werden können und außerdem eine open basedir restriction auf das web Verzeichnis gesetzt ist. Solange also php keinen bug hat, bist du damit schonmal halbwegs auf der sicheren Seite.

Bei CGI sieht es anders aus, darüber ließe sich die passwd Datei ggf. auslesen. Aber in /etc/passwd würde er auch nur die Usernamen finden, d.h für eine Brute Force Attacke müsste er jedes einzelne Passwort gegen Deinen Server testen, und das kannst Du z.B. mit Fail2ban oder denyhosts sinnvoll einschränken. Alle Passworte, die er für eine lokale Brute Force Attacke auf seinem Rechner benötigen würde, stehen nur in der Datei /etc/dhadow, und die kann nur root lesen und nicht der apache Prozess oder ein anderer User.


----------



## hahni (1. Feb. 2008)

Also kommt PHP schon mal nicht in Frage!

Bei CGI stelle ich mir das eher so vor, dass er die "/etc/passwd" und die "/etc/shadow" ausliest und lokal probiert, bis er das Passwort hat, welches er dann zum Login auf meinem Server (beispielsweise auch die Root-Kennung) benötigt!


----------



## Till (1. Feb. 2008)

Er kann die /etc/shadow nicht auslesen.


----------



## hahni (1. Feb. 2008)

Aha! Also auf seinem lokalen Rechner kann er es nicht weil er nicht an die entsprechenden Dateien kommt und wenn er es mittels Skript auf dem Webserver probiert, dann kann ich das mit fail2ban herausfinden, richtig?


----------



## Till (1. Feb. 2008)

Zitat von hahni:


> Aha! Also auf seinem lokalen Rechner kann er es nicht weil er nicht an die entsprechenden Dateien kommt und wenn er es mittels Skript auf dem Webserver probiert, dann kann ich das mit fail2ban herausfinden, richtig?


Nein nicht so ganz  Er kommt auf dem Server per Script nicht an die /etc/shadow, da er nicht die notwendigen rechte dazu hat. Und falls er es per Brute Force direkt gegen einen der Server Dienste wie pop3, smtp oder SSH versucht, kannst Du ihn mit fail2ban blocken.


----------



## hahni (1. Feb. 2008)

Dann sollte ich das Package für ubuntu installieren! Scheint es ja auch für 6.06 LTS zu geben. Allerdings: gibt es für die Einrichtung ein HowTo?


----------



## Till (1. Feb. 2008)

Zitat von hahni:


> Dann sollte ich das Package für ubuntu installieren! Scheint es ja auch für 6.06 LTS zu geben. Allerdings: gibt es für die Einrichtung ein HowTo?


Hast Du es denn schon mal mit der Suche auf howtoforge.com versuchte


----------



## hahni (1. Feb. 2008)

Klingt nach einem Seitenhieb


----------



## hahni (1. Feb. 2008)

Habe nur das Paket für SuSE gefunden! Aber die eigentliche Konfiguration dürfte ja identisch sein, oder?


----------



## hahni (3. Feb. 2008)

Also die Anleitung für Suse 10.3 hat mir nicht geholfen. Läuft mit dem Paket von 6.06 LTS nicht! Ich glaube dass das fail2ban v0.6 ist... Jedenfalls habe ich das so gelesen. Es ist zwar eine ältere Version als die aktuell verfügbare, aber mit der muss es ja auch funktionieren???


----------



## Till (4. Feb. 2008)

Ich dachte auch eher daran, dass Du die für Debian nimmst und nicht die für SuSE. Debian und Ubuntu sind sich sehr ähnlich:

http://www.howtoforge.com/fail2ban_debian_etch


----------



## hahni (4. Feb. 2008)

Hallo Till,

nun, das habe ich leider nicht gesehen, weil ich auf den deutschen Seiten gesucht habe 

Aber damit werde ich es ja hoffentlich zum Laufen bringen! Ich halte dich auf jedem Fall auf dem Laufenden... 

Die Version wird ja hoffentlich auch mit v0.6 laufen, die ausgeliefert wird, oder?

Grüße

Hahni


----------



## hahni (4. Feb. 2008)

Wie schon vermutet: es hagelt nichts als Fehler...

---
Starting fail2ban: 2008-02-04 20:22:14,532 WARNING: No 'background' defined in 'DEFAULT'. Using default one: 'False'
2008-02-04 20:22:14,532 WARNING: No 'logtargets' defined in 'DEFAULT'. Using default one: ''/var/log/fail2ban.log''
2008-02-04 20:22:14,532 WARNING: No 'syslog-target' defined in 'DEFAULT'. Using default one: ''/dev/log''
2008-02-04 20:22:14,533 WARNING: No 'syslog-facility' defined in 'DEFAULT'. Using default one: '1'
2008-02-04 20:22:14,533 WARNING: No 'debug' defined in 'DEFAULT'. Using default one: 'False'
2008-02-04 20:22:14,533 WARNING: No 'verbose' defined in 'DEFAULT'. Using default one: '0'
2008-02-04 20:22:14,533 WARNING: No 'pidlock' defined in 'DEFAULT'. Using default one: ''/var/run/fail2ban.pid''
2008-02-04 20:22:14,533 WARNING: No 'maxfailures' defined in 'DEFAULT'. Using default one: '5'
2008-02-04 20:22:14,534 WARNING: No 'findtime' defined in 'DEFAULT'. Using default one: '600'
2008-02-04 20:22:14,534 WARNING: No 'polltime' defined in 'DEFAULT'. Using default one: '1'
2008-02-04 20:22:14,534 WARNING: No 'cmdstart' defined in 'DEFAULT'. Using default one: ''''
2008-02-04 20:22:14,534 WARNING: No 'cmdend' defined in 'DEFAULT'. Using default one: ''''
2008-02-04 20:22:14,534 WARNING: No 'reinittime' defined in 'DEFAULT'. Using default one: '100'
2008-02-04 20:22:14,535 WARNING: No 'maxreinits' defined in 'DEFAULT'. Using default one: '100'
2008-02-04 20:22:14,578 ERROR: Fail2Ban got an unhandled exception and died.
2008-02-04 20:22:14,578 ERROR: Type: 'NoSectionError'
Value: ("No section: 'MAIL'",)
TB: [('/usr/bin/fail2ban', 47, '?', 'fail2ban.main()'), ('/usr/share/fail2ban/fail2ban.py', 406, 'main', 'mailConf = confReader.getLogOptions("MAIL", optionValues)'), ('/usr/share/fail2ban/confreader/configreader.py', 76, 'getLogOptions', 'v = self.configParser.getboolean(sec, option[1])'), ('/usr/lib/python2.4/ConfigParser.py', 330, 'getboolean', 'v = self.get(section, option)'), ('/usr/lib/python2.4/ConfigParser.py', 511, 'get', 'raise NoSectionError(section)')]
2008-02-04 20:22:14,578 WARNING: Restoring firewall rules...
---


----------



## hahni (4. Feb. 2008)

nachdem ich aus falkos englischer anleitung für debian (setze ja ubuntu 6.06 lts ein) aus "backend = polling" -> "background = true" gesetzt habe, hat sich die fehler- und warning-liste etwas reduziert:

---
Restarting fail2ban: Stopping fail2ban: done
Starting fail2ban: 2008-02-04 20:28:17,071 WARNING: No 'logtargets' defined in 'DEFAULT'. Using default one: ''/var/log/fail2ban.log''
2008-02-04 20:28:17,071 WARNING: No 'syslog-target' defined in 'DEFAULT'. Using default one: ''/dev/log''
2008-02-04 20:28:17,071 WARNING: No 'syslog-facility' defined in 'DEFAULT'. Using default one: '1'
2008-02-04 20:28:17,072 WARNING: No 'debug' defined in 'DEFAULT'. Using default one: 'False'
2008-02-04 20:28:17,072 WARNING: No 'verbose' defined in 'DEFAULT'. Using default one: '0'
2008-02-04 20:28:17,072 WARNING: No 'pidlock' defined in 'DEFAULT'. Using default one: ''/var/run/fail2ban.pid''
2008-02-04 20:28:17,072 WARNING: No 'maxfailures' defined in 'DEFAULT'. Using default one: '5'
2008-02-04 20:28:17,072 WARNING: No 'findtime' defined in 'DEFAULT'. Using default one: '600'
2008-02-04 20:28:17,072 WARNING: No 'polltime' defined in 'DEFAULT'. Using default one: '1'
2008-02-04 20:28:17,073 WARNING: No 'cmdstart' defined in 'DEFAULT'. Using default one: ''''
2008-02-04 20:28:17,073 WARNING: No 'cmdend' defined in 'DEFAULT'. Using default one: ''''
2008-02-04 20:28:17,073 WARNING: No 'reinittime' defined in 'DEFAULT'. Using default one: '100'
2008-02-04 20:28:17,073 WARNING: No 'maxreinits' defined in 'DEFAULT'. Using default one: '100'
.done
---

Wie aber läuft fail2ban nun korrekt bzw. was muss ich einstellen?


----------



## hahni (4. Feb. 2008)

Die Fehler habe ich weggebracht, weil ich nur die unteren Sektionen kopiert habe in das Original-Config-File!

Problem allerdings: obwohl ich bei SSH 5x das falsche Kennwort angegeben habe, wird mir trotzdem Zugriff gewährt! Oder liegt es daran, weil der SSH-Port nicht der Standard-Port ist? Wo müsste dies angegeben werden?


----------



## Till (5. Feb. 2008)

Siehe Dein eigener Thread 

http://www.howtoforge.de/forum/showthread.php?t=297


----------

