Extra Blog

Und immer wieder streitet man sich über Serverabsicherung

Leidiges Thema Sicherheit

Jeder weiss es im Prinizp besser aber die wenigstens kennen die grundlegende Mechanismen, wie man Systeme knackt. Aus Verzeiflung tippen viele Anleitungen ab ohne wirklich zu verstehen, was Sie da tun. Das Resultat sind meistens schlecht abgesicherte Systeme, gänzlich unnötig abgesicherte Dinge "man denke an Firewalls die Ports von extern blockieren, auf denen so oder so kein Dienst hört." Und dann gibt es für den Unsinn immer ganz plausibel klingende Erklärungen.

Das Ergebnis sind dann ggf. Probleme beim Betrieb, u.U. hohe Systemlast oder im schlimmsten Fall neu geschaffene Lücken.

Was ist also die beste Strategie in der Systemabsicherung?

Diese Frage ist nicht einfach beantwortet und hängt von vielen Faktoren ab. Min. genau so viele Absicherungsmaßnahmen und Strategien gibt es.

Aber fangen wir mal anders an:

Ich halte mich durchaus für einen integeren Menschen. Mir könnte man Kreditgarte, Geheimnummer etc. anvertrauen. Bargeld und Wertgegenstände bei mir deponieren.

Aha, das würdest Du nicht tun? Warum denn? Und warum schreibst Du dann von anderen Tutorials ab, die Dir angeblich mehr Sicherheit bieten?

Kann man den Autoren wirklich vertrauen? Haben Sie diese Tutorials mit bestem Wissen und Gewissen erstellt? Wurde dort auch wirklich nichts übersehen? Geht der Autor auch darauf ein, welchen Schutz damit erreicht wird und vor allem, wovor es nicht schützt?

Ohne Sachkenntnis geht es also nicht. Zumindest nicht, wenn man sich wirklich sicher sein will und nicht nur sein Gewissen beruhigt haben will.

Was sind die Grundvorraussetzungen wenn ich ein System absichern möchte?

Ich muss mir absolut im klaren darüber sein, was ich mit dem System machen will bzw. was dessen Aufgabe sein wird. Und wir merken uns, weniger ist mehr. Das gilt in Punkte Sicherheit sowie Serverbetrieb. Ein X Server, das Office Paket, VNC etc. etc. braucht kein Mensch auf einem Rootserver. Und wozu bind, wenn ich den DNS Dienst meines Providers nutze?

(Wem das zu theoretisch ist, der möge sich eine andere Seite suchen, es wird nicht besser.)

Also muss man sich schon vorab die Frage stellen:

  • Wie ist das System erreichbar. Soll es überhaupt erreichbar sein? (Rechner Zuhause i.d.R. nicht)
  • Welche Dienste sollen angeboten werden? (Webserver, Mailserver, FTP usw.)
  • Welche Dienste benötige Ich für mich? (z.B. ssh für die Verwaltung)
  • Welche, im Bezug auf Sicherheit, Probleme und Lücken bzw. Angriffsflächen kommen mit den Diensten? (z.B. potentielle SQL Injects bei PHP/DB Lösungen, Cross Side Scripting, mit Uploadfunktionen ggf. die Möglichkeit Schadcode ein zumogeln. FTP z.B. Brute Force Attacken dito ssh bei schlechter Absicherung. und die Liste ist lang...)
  • Auf welche Dienste kann ich verzichten?
  • Wie sehen die Logs der Dienste aus z.B. im LogLevel Debug, Info, Warn was sagen diese aus und welche Meldungen sind kritisch zu betrachten?
  • Welche Möglichkeiten gibt es diese "Dienste" ab zu sichern?
  • Wie kann man prüfen was gerade genau abläuft z.B. Thread Dump bei Java Anwendungen, tcpdump den Netzwerkverkehr überwachen.

Wenn wir uns diese Fragen ernsthaft beantwortet haben, können wir uns daran machen und überlegen welche Tools und Techniken für die bessere Absicherung anwenden können. Und da wird es schon schwierig. Erinnern wir uns nochmals daran, tiefes Wissen ist zwingend notwendig bevor wir weiter machen.

Die "Hersteller" der jeweiligen Anwendungen gehen i.d.R. auf die sinnvollen Absicherungsmassnahmen ein. So z.B. Apache auf:

Apache Websrver: http://httpd.apache.org/docs/2.2/misc/security_tips.html

PHP http://www.php.net/manual/en/security.php

FTP vsFTP http://vsftpd.beasts.org/#security  (wobei hier die Installationsdoku tatsächlich ausreicht.)

Mysql http://dev.mysql.com/doc/mysql-security-excerpt/5.1/en/index.html

....

Diese und alle anderen Sicherheitstipps lesen und möglichst lückenlos verstehen. Danach für jedes eingesetzte Produkt die Security Newsletter abonnieren. Zeitnah lesen und ggf. reagieren. Der typische Anwender wird sich die einzelnen Komponenten aus der eingesetzten Distribution besorgt haben. Entsprechend besteht nicht viel Handlungsspielraum und man muss auf die Patches der Distribution warten. Diese erscheinen i.d.R. sehr zeitnah. In wirklich kritischen Fällen muss man bis dahin u.U. auch den Dienst einstellen. Manchmal eine bittere Pille. Allerdings reicht das auch aus und ist im vertretbaren Rahmen zumutbar, im Gegensatz zum schreiben eigener Patches.

Wenn wir uns der Sache ernsthaft annehmen, werden wir feststellen, dass das lesen der Sicherheitsmeldungen und einspielen der Patches durchaus seine Zeit in Anspruch nimmt. Insbesondere das Erlangen des notwendigen Fachwissens.

Beim klassischen Dreigespann Web und Mail - Server und DB Server kommen neben den Diensten noch folgende Anforderungen auf den Admin zu:

PHP / Entwicklungserfahrung (Deutlich über eine "Hallo Welt" hinaus? Und verstanden haben, wie man Sessions setzt und wieder verwirft, reicht ebenfalls nicht aus.)

SQL Erfahrung mit RDBMS Systemen. SQL Tuning, Filesystemtuning. Und natürlich das Wissen um SQL Injects, und wie man dies mit einfachsten mitteln behebt / vermeidet.

Erfahrung mit dem Mailserver und dessen Konfiguration. Vorzugsweise Postfix.

Dann sind wir eigentlich schon an dem Punkt angekommen, was man von einem normalen "Anwender" verlangen kann.  Und ganz ehrlich, das ist schon eine ganze Menge! Viele die sich Sicherheitsexperten nennen, beherrschen min. eine der 3 Dinge nicht ausreichend. Unabhängig davon sollte einem "Internetprovider / Hoster" klar sein, dass er obige Themen zzgl. Perl und Python aus dem FF beherrschen können sollte. Zudem Themen wie Loadbalancing, Clustering, nicht fremd sein sollten. Aber das gehört zu einem anderen Thema der "Super Duper Freizeitprovider".

Wie geht es nun weiter mit dem Thema Serverabsicherung?

Zuerst einmal will ich mit der Mähr aufräumen, dass eine lokale Firewall einen wesentlichen Mehrwert an Sicherheit bringt. Insbesondere gaukelt einem der "Vertrieb Marketingabteilung" gerne vor, Dank Firewall jetzt noch sicherer.

Hierbei muss man unterscheiden, welche Art von Firewall man betreibt. Ein reiner Portfilter wie z.B. iptables oder gar eine WAF Web Applicaton Firewall?

In der Regel wird bei Firewall von IPTables gesprochen. Argumente wie, damit kann ich den ausgehenden Verkehr limitieren oder eingehenden Verkehr verhindern, werden gerne genommen.

Als Beispiel dient hierbei häufig, dass Schadcode gerne mal einen Port nutzt um Requests anzunehmen. Die Firewall dies aber verhindert. Grundsätzlich erstmal richtig. Auch ist es richtig, dass man jenseits des Ports 1024 Capability CAP_NET_BIND_SERVICE privilegien nicht notwendig sind. Könnte also jeder einen Port öffnen.

Jetzt aber gleich die Firewall alle Ports dicht machen lassen? Eigentlich der schlechteste Weg. Wie zuvor geschrieben sollte man sein System soweit absichern, dass dies erst gar nicht passieren kann. Unabhängig davon können andere Dienste, die auf einem erlaubten Port Verbindungen annehmen und danach auf andere Ports ausweichen, nicht mehr zuverlässig arbeiten. Beispiel FTP.

Auf der anderen Seite muss man festhalten: Wenn es jemand schafft, Schadcode auf ein System zu bringen, ist es eigentlich auch kein großes Problem ein rootexploit auf das System zu bringen. Und als root, ist die Firewall sehr schnell um die eigene Bedürfnisse angepasst. Was ein Paketfilter leider nicht kann, proaktiv in den Datenverkehr eingreifen, da er den Datenverkehr nicht analysiert. Entsprechend ist häufig auch eine Remotshell basierend auf PHP Scripten ausreichend. Auch hier schützt diese Firewall nicht.

Es ist im übrigens sehr wichtig, die Grenzen der Schutzeinrichtungen zu kennen. Sonst läuft man sehr schnell Gefahr sich auf eine Absicherung zu verlassen, die einem den notwendigen Schutz gar nicht bietet.

Fortsetzung folgt.

Kategorien: IT

Noch keine Kommentare

Die Kommentarfunktion wurde vom Besitzer dieses Blogs in diesem Eintrag deaktiviert.