Linux-Server-Dienst in VServer-Instanz schützen

Wie kann man auf einem Linux-Server einen Dienst wie z.B. den Mumble-Server (murmur) oder einen Apache-WebServer über die eigenen Schutzmechanismen der Dienste selbst hinaus vor feindlicher Übernahme schützen?

System-Account, File-Berechtigungen und weitere Standards sind umgesetzt und haben nicht gereicht. AppArmor geht mit Vserver zusammen nicht (auch andere Erweiterungen der selben Art).

Ich suche etwas wie eine nachträgliche Sandbox für wildgewordene Executeable, die auch den Prozess etc. in einer VServer Instanz „kontrolliert“.

Haste ne Idee?

Thx

Hallo,

du kannst zum Beispiel die Programme unter einem eigenständigen User laufen lassen der nur rechte hat diese einzelnen Sachen auszuführen aber sonst nichts auf dem Server darf ums mal grob zu sagen.
Falls du einfach nur die Prozesse meinst die vielleicht schon tot sind aber sich aufgehängt haben und diese dann zu stoppen geht das am einfachsten mittels Cron und nem kleinen Bash Script was doppelte Prozesse ausliest und killt. Das Script kann man dann alle Stunde oder so mal laufen lassen.

Ich versteh deinen Punkt mit der feindlichen Übernahme nicht so ganz. Was hat denn nicht gerreicht? Und was ist vorgefallen?

Hi!

Danke für Deine Antwort.

Mein VServer wurde trotz der von Dir beschriebenen Absicherungen gehackt. Es wurden, soweit ich das nachvollziehen konnte, entweder lighttpd (Passwort-gesichert und ohne Inhalt!) oder mumble-server (ein offener Raum ohne Rechte, sonst Passwort geschützt) gehackt (bisher wurde keine Schwachstelle gemeldet oder Patche bereitgestellt) und danach vermutlich eine Kernel-Schwäche ausgenutzt, um Root-Rechte zu erlangen. Danach wurde eine Datei heruntergeladen und ausgeführt, bis der Server Betreiber es bemerkt hat und den Prozess gekillt hatte (somit war der Schaden begrenzt).

Da ich die Standard-Absicherungen für Web-Dienste wie System-Account statt User (also keine interaktive Anmeldung), Einschränkung der Zugriffsrechte auf Verzeichnisse, gehärtete Konfigurationen der beiden Dienste (und zugehörige Anwendungen wie PHP) und natürlich aktuell gepatchte Versionen eingesetzt habe, habe ich nach weiteren Absicherungen a la Sandboxing wie AppAmor, SELinux etc. gesucht. Leider vertragen sich diese Kernel-Erweiterungen nicht mit der VServer-Kernel-Erweiterung.
Im Moment gibt es wohl für mich nur die Möglichkeit einen Root-Server statt einem VServer einzusetzen, um z.B. AppArmor zu nutzen.
AppArmor ist mir aber gleich ein Schlag zu viel. Ich suche irgendeine Lösung zwischen AppArmor und Standard-Schutzmaßnahmen. Bisher habe ich da nichts gefunden.

Vielleicht hast Du ja noch etwas in peto, dass eine Prozess-Überwachung innerhalb eines VServers ermöglicht, so dass ich unbekannte und fehlverhaltende Prozesse automatisch erkennen und killen kann.

cu micha

Hast dus mal mit Fail2ban usw. versucht?? Die müssen ja irgendwo ins System kommen und wenn das durch ne Lücke im Kernel ist dann ist dein Betreiber dafür verantwortlich diese zu schließen da du am vServer Kernel ja nichts machen kannst.
Du hast soweit ich lese eigentlich alles was möglich ist getan. Das was du noch machen könntest ist die logs durch zu forsten um erstmal heraus zu finden von wo die ins System gekommen sind. Möglich wäre da zum Beispiel eine Lücke im PHP etc. PP da können unter Umständen ein zwei Einstellungen helfen dem abhilfe zu schaffen aber man muss eben erst wissen wie sie rein kamen.
Mal nebenbei SSH funktioniert nur über Konsole? Standartport geändert? zum Login: Geht nur via Key file? Passwort Logins sind verboten? Root Login verboten?

MfG
Andre

Hallo,

sorry, da muss ich passen, damit habe ich mich noch/nicht beschäftigt.

Grüsse…

Hi,

Fail2ban nützt nichts bei verteilten Angriffen von verschiedenen IP-Adressen. Einen entsprechenden Code hatte ich aber trotzdem im lighttpd eingebaut. (apache hatte ich in der Anfrage geschrieben, um mögliche Lösungen nicht von Anfang an auszuschliessen) Die Logs sagen leider nicht, wie sie hereingekommen sind. Ich kann nur sehen, dass am Anfang ein Standard-Script Angriff a la w00tw00t durchgeführt wurde. Dann gibt es einen einzigen abgewehrten anderen Zugriffsversuch, der wohl manuell durchgeführt wurde. Danach waren Sie wohl über eine weiteren nicht protokollierten Angriff drin.
Mehr geben die Logs leider nicht her.

Sie haben weder den Kernel noch andere Programme geändert, sondern in Temp Verzeichnis eine Datei abgelegt und diese gestartet. Diese hat dann Daten angenommen und ausgeliefert …

Leider sind beim Abziehen eines Images durch den Serverbetreiber die Dateien im Temp nicht gesichert worden. Somit kann ich diese nicht weiter analysieren.

Daher suche ich weitere Schutzmaßnahmen, um eine Wiederholung zu verhindern.

Wegen w00tw00t werde ich mit dem Betreiber sprechen eine entsprechende iptables Regel zu implementieren:
more IPs on one server (here 1.0.0.1-1.0.0.5:
iptables -I INPUT -p tcp --dport 80 -m iprange --dst-range 1.0.0.1-1.0.0.5
\
-m string --to 70 --algo bm --string ‚GET /w00tw00t.at.ISC.SANS.‘ -j DROP

Die von Dir angesprochenen Absicherungen für SSH waren alle umgesetzt.

Da meine WebDienste immer Löcher haben werden (nobody is perfect), wäre so etwas wie ein Wächter/Steuerung über Ressourcen (Speicherbedarf, Netzlast, Prozess-Liste usw.) eine weitere sinnvolle Schutzmaßnahme bevor man auf AppArmor umsattelt.

Ich finde nur kein solches Programm in einem gepflegten und funktionfähigen Umfang.

Eine solche Lösung wäre diese:

  • alle System-Zugriffe im Source-Code umlenken auf AppArmor ähnliche shared library, die die Überwachung übernimmt
  • für diese Programme dann Regelwerke erstellen
    => ich kann eine solche shared library nicht finden - es gibt aber einen Bericht im Internet über eine lauffähige Test-Implementation…
    „Gridbox: Securing Hosts from Malicious and Greedy Applications“

cu micha

PS: Ich war ganz schön platt, als ich meinen gehackten Server gesehen hatte - bei all dem Aufwand den ich und der Betreiber bisher betrieben haben. Hatte ich nicht erwartet!

Hi,
also wenn das alles auch nix bringt bleibt dir im Prinzip nur der Weg über iptables. Um die Ressourcen usw. zu Überwachen empfielt sich vielleicht Nagios…Nagios ist zwar nich ganz für sowas gedacht aber du kannst das so von den regeln her einrichten das es dir zum Beispiel ne Mail schickt wenn ein Prozess namens xyz gestartet wird und Nagios kann diesen dann auch Beenden. Es gibt dort noch etliche weitere Möglichkeiten mit Nagios das war nur mal eine.
Jede Anwendung die auf einem Server läuft und vom Internet irgendwie erreichbar ist ist im Prinzip eine Lücke auf dem Server. 100%ig Sicher ist kein Server auf de Welt…bestes Beispiel gerade Sony, aber gut das ist ein anderes Thema.

MfG
Andre

Danke! Ich schau mir Nagios an.
cu