SICHERHEITSKONZEPTE FÜR LINUXRECHNER 1. Einleitung 2. Physische Sicherheit 3. Standartmaßnahmen - Accountsicherheit - Verschlüsselung - Zugrifssrechte 4. Erweiterte Maßnahmen - Services - Remote Zugriff 5. Weitere Gefahren - Denial Of Service - Viren und Trojaner - Scanning 6. Allgemeine Sicherheitshinweise 7. Last Words Einleitung Dieser Text soll im Allgemeinen darstellen, wie man einen Linux Rechner sichert! Der Text ist hauptsächlich für Desktop Rechner relevant, für den Serverbereich sind die Themen zwar anwendbar aber sicher nicht ausreichend! Für einen Einzelplatzrechner sind die beschriebenen Methoden aber sicher genügend, um das System zu schützen! Physische Sicherheit OK, also physische Sicherheit klingt erst einmal ein bißchen hochgestochen! Damit ist ganz einfach der Schutz vor unbefugten physischen Zugriff gemeint! Dieser ist im Serverbreich sehr viel bedeutenter als bei Desktoprechnern! Die beiden wichtigsten Punkte, die in diesem Zusammenhang beachtet werden müssen, sind folgende! Einerseits ist es natürlich wichtig, das man das System nicht eingeloggt(am Besten noch als Root) stehen lässt! So ist es für Freunde etc. möglich, einfach über passwd das Passwort zu ändern, wenn root-Rechte vorhanden sind, können auch sämtliche Accounts anderer User verändert werden! Am Besten ist es wenn man, bevor man den Rechner allein stehenlässt, sich auslogged. Wenn man unter X-Window arbeitet, ist ein Bildschirmschoner mit eingestellter Passwortabfrage ausreichend! Ansonsten sollte man noch beachten, das man die Backups wichtiger Daten nicht unverschlüsselt und ungesichert irgendwo rumliegen lässt! Auf die Sache mit der Verschlüsselung wird später noch näher eingegangen! Standartmaßnahmen Die hier beschriebenen Vorkehrungen sollten auf jeden Fall beachtet werden. Accountsicherheit! OK, dieser Punkt ist wohl der Wichtigste überhaupt. Die Authentifikation durch Benutzername bzw. Passwort ist der Grundsatz des gesamten Sicherheitskonzeptes von Linux. Deshalb ist es wohl das Wichtigste, sichere Passwörter zu wählen! Bei diesem Punkt sind ersteinmal die allgemeingültigen Regeln zu beachten! Keine Wörter die in irgendeinem Lexikon stehen, nur alphanumerische Passwörter etc. Diese Grundlagen sind selbstverständlich zu beachten, ich möchte sie aber noch um einen Punkt erweitern. Ich kenne viele Admins, die als Passwörter Wortketten verwenden, die ein normaler Mensch nie so schreiben würde(z.B. bitch = bytch). Hierfür eignen sich z.B. Slangphrasen aus amerikanischen HipHop etc.(z.B. Someofuniggazrbytchez2). Wenn man seiner Phantasie den nötigen Spielraum lässt kommen hierbei wohl die sichersten Passwörter heraus! Wenn mehrere User auf das System zugreifen ist auch noch zu raten, das man z.B. für Erich Schneider nicht den Benutzernamen eschneider verwendet, sondern wieder einen alphanumerischen Benutzernamen wie z.B. p54wd23x oder so. Es ist immer ein Vorteil wenn ab und zu ein Passwortcracker mit einer guten Wordlist laufen gelassen wird, so kann man ggf. weitere schwache Passwörter herausfiltern! Ebenfalls sollte beachtet werden, das die Passwörter mind. alle zwei Wochen, das RootPasswd in noch geringeren Abständen geändert werden muß. Das wäre in etwa alles was zum Thema Accountsicherheit zu sagen ist! Verschlüsselung OK, der nächste wichtige Punkt, der zu erwähnen ist, wäre Verschlüsselung! Ich weiß aus eigener Erfahrung, das es oftmals ziemlich nervt, jedes Ding zu verschlüsseln und beim nächstenmal wieder zu entschlüsseln. Aber der Sicherheit wegen sollte man sämtliche persönliche Daten verschlüsseln! Das bedeutet praktisch alle Daten, die nicht bei der LinuxDistribution dabei waren oder irgendwie öffentlich einsehbar sind! Dazu gehören alle selbstverfassten txt's, notes, mails, eigene Sources, ja alles was selber erarbeitet wurde oder für dich persönlich geschrieben wurde! Für die Verschlüsselung von Daten benutze ich persönlich pgp(v2.6.3i), mit einem 2048 Bit Schlüssel! Es gibt sicher noch andere gute Tools zum Verschlüsseln, bei der Auswahl sollte man jedoch darauf achten, das der Cypher auch mit vollem physischen Zugang nicht geknackt werden kann! Da es natürlich nötig ist regelmäßig Backups zu fahren, sollten auch diese mit 2048 Bit verschlüsselt sein! Zugriffsrechte Dieser Punkt ist ein weiteres wichtiges Thema das zu beachten ist! Dazu ist aber relativ wenig zu sagen. Eine Faustregel für die Verteilung der Rechte ist, das sie so streng wie möglich gefasst werden. Hierbei muß man jedoch darauf achten, das der/die User nicht in ihrer täglichen Arbeit eingeschränkt werden! Erweiterte Maßnahmen! OK, das waren jetzt dir Standartmaßnahen, die JEDER der ein Linuxähnliches System benutzt, beachten sollte. Hier kommen jetzt die Maßnahmen, die für die Sicherheit wichtig sind, aber jeder für sich entscheiden muß, welche für ihn nötig sind, welche nicht! Services Dieser Punkt ist wiedermal sehr wichtig. Die meisten Angriffspunkte, um von außen in das System einzubrechen sind die jeweiligen, angebotenen Dienste! Da bei den Linuxdistributionen standartmäßig ziemlich viele Dienste laufen, die für den normalen User keinen Sinn haben, werden wir auf jeden Fall einige abschalten müssen. So, wir stellen jetzt ersteinmal fest, welche Services laufen, sprich welche Ports offen sind, die eigentlich nicht offen sein sollten! Dazu benutzen wir einen guten Scanner(nmap o.ä.) und scannen unseren localhost z.B. mit nmap -F localhost! Jetzt bekommen wir eine Liste der Ports, die offen sind! Hier kommt jetzt der Zeitpunkt der Entscheidung! Welche offenen Dienste benötige ich persönlich, welche nicht! Falls irgendeiner der r-Services läuft (rlogin, rsh ...), sollten diese auf jeden Fall abgeschaltet werden, da sie eine potentielles Sicherheitsrisiko darstellen! Das kommt aufgrund der Tatsache zustande, das bei der Entwicklung der r-Services, die Anmeldung an einem Rechner ohne Authentifikation per Passwort im Vordergrund stand. Dadurch wollte man verhindern, das Passwörter gesnifft werden. Die Authentifikation erfolgt hier vielmehr über sogenannte TrustedHosts. Dazu später mehr. Weiterhin sollten Dienste wie bootps, tftp(TrustedFTP) oder rexec nicht laufen! Wir wissen nun, welche Dienste unerwünscht angeschalten sind! Um diese Dienste auszuschalten editieren wir entweder die /etc/services oder die /etc/inetd.conf. Hier sind alle Dienste aufgelistet! Diejenigen, die nicht laufen sollen können hier ganz einfach auskommentiert werden! Welche am Ende noch laufen liegen im Ermessen des Systemverwalters! Remote Zugriff Das nächste ist die Sache welche Rechner remote auf das System zugreifen dürfen! Dieses Problem kann über die Datei etc/host.allow bzw. /etc/hosts.deny geregelt werden! Die sicherste Methode ist hier die /etc/hosts.deny zu editieren und folgenden Befehl(wenn man es so nennen will) einzutragen: ALL : ALL Hierdurch wird es keinem Rechner erlaubt, remote auf dein System zuzugreifen! Das ist zwar die sicherste Methode, doch wohl in vielen Fällen nicht die sinnvollste! Als Alternative können auch folgende Einträge erfolgen: ALL : EXPECT ftp: .bla.de oder ähnliches! Weitere Gefahren Es gibt jetzt noch weitere Aspekte, die die Systemsicherheit beinträchtigen! DenialOfService Dies ist wohl eine der meisten Formen um ein System zu schädigen. Hierbei schaltet ein Angreifer bestimmte Dienste und oftmals das ganze System aus. Es gibt v.a. zwei Punkte, die zu beachten sind. 1.) Nur die wichtigsten Dienste anbieten. Dadurch wird natürlich die Angriffsfläche für DoS-Attacken erheblich eingeschränkt. 2.) Immer über Patches auf dem laufenden sein. In der Regel ist es so, das nach dem bekanntwerden neuer DoS-Attacken innerhalb weniger Stunden die entsprechenden Patches vorhanden sind! Viren und Trojaner! Viren sind in der Linux Umgebung wohl sehr sehr viel unbedeutender als in der MS-Umgebung, soweit mir bekannt ist gibt es für Linuxsysteme nur etwa 2 oder so! Das zweite Thema wird in der Linuxumgebung jedoch weitgehend unterschätzt. Bei Trojanern denkt man zuallerersteinmal an Sub7, Netbus etc. Diese sind natürlich ausschließlich für Windoze, wobei es die BO ClientSoftware auch für Linux gibt. Trotzalledem sind Trojaner für Linux im Umlauf, auch wenn sie kein so Massentool wie die Windozer sind. Um Trojanern in der Linuxumgebung entgegenzuwirken gibt es wiederum ein paar Punkte, die zu beachten sind! 1.) Tools IMMER nur aus vertraulicher Quelle annehmen und ausführen! 2.) Programme sind für Linux in der Regel als OpenSource erhältlich, deshalb sollte man vor dem kompilieren die Source checken. Das ist natürlich etwas aufwendig und setzt vorraus, das man die bestimmte Programmiersprache beherscht, ist aber wohl die sicherste Methode, Trojans aus dem Weg zu gehen! 3.) NIE Binaries annehmen und ausführen! Falls es dir angeboten wird, IMMER auf den SourceCode bestehen, diesen checken und dann selber kompilieren! Scanning Ja, scanning ist zwar nur eine indirekte Sicherheitslücke, aber trotzdem beachtenswert. So ist, wenn man sich im IRC rumtreibt, unbedingt notwendig, ab und zu die ScanLogs zu checken, damit man den Übeltäter sofort auf seinen Griff ins Klo hinweisen kann. Ich benutze hierfür den scanlogd Daemon, der im Falle eines Scans einen Eintrag in die /var/log/warn vornimmt! Dabei wird ebenfalls die OriginIP vermerkt! Allgemeine Sicherheitshinweise! Nun gibt es noch einige allgemeine Sicherheitshinweise, die im LinuxAlltag beachtet werden sollten! 1.) E-Mail: Dieses Problem ist jetzt nicht spezifisch auf Linux bezogen, aber meineserachtens trotzdem wichtig! Bei dem Abwickeln von E-Mail Verkehr sollte v.a. auf folgende Punkte geachtet werden! - Verwenden eines ANONYMEN Freemail Provider: In diesem Punkt meine ich nicht etwa GMX oder Hotmail etc. Bei diesen Anbietern bist du zwar anonym angemeldet, aber du mailst nicht anonym, da deine IP immer noch im Header übertragen wird. Mir ist derweilen nur ein einziger ANONYMER Provider bekannt, dieser ist www.hushmail.com. Er ist absolut anonym(keine IP im Header) und verschlüsselt nebenbei alle E-Mails unter hushmail Usern mit 1024 Bit. Er bietet zur Zeit zwar noch kein POP3 an, man muß halt wissen was einem die Sicherheit wert ist. - Verschlüsseln der E-Mails: Dieser Punkt ist äußerst wichtig! E-Mails gehen, bis sie den Empfänger erreichen über viele Stationen, von denen sie alle abgefangen werden können! Deshalb ist das verschlüsseln der Mails am Besten mit 2048 Bit äußerst wichtig! 2.) Ein weiterer Punkt, der beachtet werden sollte, ist die Verwendung einer verschlüsselten Verbindung! Wenn Remote gearbeitet wird sollte man auf jeden Fall ssh anstatt telnet verwenden, um PasswordSniffern zu entgehen! 3.) Ein weiterer Punkt, den ich persönlich praktiziere will ich nun hier erläutern! Ich speichere wichtige persönliche Daten(natürlich verschlüsselt) auf einer seperaten HD, die normalerweise ungemountet ist. Dadurch verlangsame ich die Arbeit von Angreifern, da sie ersteinmal die HD suchen müssen und dann mounten um auf die Partition zugreifen zu können! Allzuschwer ist das zwar auch nicht, aber bis dahin hab ich dann sicher den Eindrinling schon bemerkt und kann seine Shell killen!Ich kenn auch Leute, die all ihre persönlichen Daten auf einem Wechselmedium(z.B. ZIP) ungemountet lassen, so das auf keinen Fall auf die Daten zugegriffen werden kann, solange die Disk nicht im Laufwerk steckt! 4.) SGID bzw. SUID Bits: Dieser Punkt ist dann wichtig um zu verhindern das Software "exploited" werden kann. Also, alle SUID bzw SGID Bits von nicht notwendigen Dateien entfernen! 5.) Alle Logdateien regelmäßig überwachen! 6.) Normale Arbeiten nicht unbedingt als root erledigen! LAST WORDS Also, ich denke, das ist ersteinmal das wichtigste um einen Desktoprechner ziemlich sicher zu machen! Natürlich kann man durch Firewallkonzepte etc. die Sicherheit noch weiter verbessern, für meine Begriffe ist das aber für den normalen User nicht notwendig. Es ist aber trotzdem von Nutzen einmal eine Firewall eingerichtet zu haben!!! OK, dieser Text ist, wie schon gesagt, nur für den normalen Heimgebrauch von Linux zu verwenden, also für den Serverbereich nicht ausreichend! Falls ich irgendwelche Fehler gemacht habe oder etwas vergessen habe wendet euch an XeroX99@hushmail.com. Ich werde es dann ändern! Dieser Text ist ausschließlich für Oziris(http://www.oziris.foru.de) geschrieben! Falls Interesse besteht ihn auf anderen Seiten zu veröffentlichen, möchte ich, das ihr mich vorher einmal anmailt! XeroX 29.3.2k for OzirisSoftwaretechnologies