Kapitel A Sicherheit unter Linux
Ziel dieses Anhangs ist es, Sie in kürzeren Abschnitten auf mögliche Gefahren hinzuweisen, die mit der einen oder anderen Routine bzw. unbedachten Aktion verbunden sind.
Nichts liegt mir ferner, Ihnen jetzt eine umfassende Moralpredigt zum Thema »Sicherheit« zu halten. Doch gerade weil es für den Programmierer in der Praxis nicht so interessant erscheint (und häufig auch noch ein gewisser Zeitdruck vorhanden ist), sich während der Entwicklung auch noch damit zu befassen, wird es häufig vernachlässigt, so dass kein Tag vergeht, an dem eine »unautorisierte« Person wieder eine Sicherheitslücke in einem Programm gefunden hat. Zwar ist das Thema »Sicherheit« Bücher füllend – aber wenn Sie das beherzigen, was ich Ihnen hier predige, ist dies schon mal die halbe Miete – häufig reicht hierbei ein kleiner Denkanstoß aus. Vorausgesetzt natürlich, Sie sind mit Linux und der Programmierung bestens vertraut.
Hinweis Ganz klar, das Thema hat eigentlich mehr Seiten verdient. Aber der Umfang des Buches erlaubt es mir nur, hier das Wichtigste zusammenzufassen. Daher finden Sie auf der Buch-CD ein Manuskript »Sicherheitsrelevante Programmierfehler«, welches mir mit freundlicher Genehmigung von Thomas Biege (SUSE LINUX AG, Security Support & Auditing) zur Verfügung gestellt wurde.
|
A.1 Viren und Trojaner
Im Prinzip sind Sie bei normaler Anwendung des Systems von solchen Parasiten befreit. Es ist zwar möglich, sich einen Trojaner unter Linux einzufangen, aber dann muss der Anwender schon ziemlich ungeübt im Umgang mit Linux sein.
Selbst, wenn Sie einen Virus oder einen Trojaner auf Ihrem Rechner testen würden, weil Sie z. B. wissen, wie man eine Shell in C startet und eine Hintertür zum System gefunden haben, so dass es Ihnen gelingt, sich selbst auf dem Rechner (mittels root-Rechte) einen Virus (z. B. einen einfachen rekursiven rm-Befehl) »einzupflanzen«, Sie werden es zu 99 % nicht schaffen, denselben Vorgang bei einem anderen Rechner zu wiederholen. Jede Distribution von Linux (SUSE, RedHat, Mandrake, Gentoo, Debian etc.) hat eine etwas andere magische Zahl und auch sonstige andere Einstellungen (Bibliotheken, Verzeichnisse, Anwendungen und selbst der Desktop ist in der Regel sehr vielfältig). Einfach ausgedrückt, der Virenprogrammierer dürfte seine Probleme haben, einen portablen Virus zu erstellen.
Hinweis An dieser Stelle sei angemerkt, dass es nicht unmöglich ist, einen Virus zu erstellen – sprich, je paranoider Sie sind, umso besser. So wäre ein einfacher (Shell-)Virus recht schnell mit einem einfachen rm erstellt. rm benötigt nur ld-linux.so.2 und libc.so.6, die (fast) überall vorhanden sind. Dann wäre da noch die Möglichkeit mit –static zu kompilieren, und wenn man weitere Bibliotheken benötigt, gibt es immer noch die Funktion dlopen().
|
Sie sollten allerdings darauf achten, woher Sie sich Ihre Software oder Bibliotheken beziehen. Denn es gibt dubiose Quellen, welche so genannte Rootkits in (auf dem ersten Blick) normaler Software einbauen. Dank Open Source ist es schließlich kein Problem, den Quellcode einer Anwendung zu modifizieren, da dieser ja offen vorliegt. Rootkits sind den Trojanern recht ähnlich und tarnen sich als Programmdatei oder als Kernelmodul. Ein gutes Rootkit enthält zum Beispiel einen Keylogger zum mit Protokolieren, was der Anwender denn so alles eingibt.
Hinweis Einer sehr guten Keylogger findet man auch der Webseite http://linux01.org:2222/prog-ttyrpld.php – unumgänglich für den Normaluser des Kernelmoduls. Typisch, funktioniert auch mit SSH etc., siehe Homepage.
|
|