Das Internet ist voll von Leuten, die deine Sachen zerstören wollen. Einige von ihnen sind nur neugierig, andere suchen den Nervenkitzel, andere versuchen, Ihre Daten zu stehlen, und einige wollen einfach nur zusehen, wie Dinge brennen. Was auch immer ihr Motiv sein mag, es ist Ihre Aufgabe als Systemadministrator, diese Angreifer von Ihren Servern fernzuhalten. Wenn Sie ein Linux-System verwenden, ist dieser Artikel für Sie. Wir werden einige der Gründe durchgehen, warum Sie Ihre Systeme und andere allgemeine Überlegungen härten müssen.
Betriebssysteme sind ein Gleichgewicht
Das Erstellen eines Betriebssystems ist eine schwierige Balance, und eine Linux-Distribution ist nicht anders. Sie müssen die Out-of-the-Box-Funktionalität berücksichtigen, die sich die meisten Menschen wünschen werden, und die Zugänglichkeit für eine breite Palette von Administrator-Fähigkeiten. Wenn Sie Ihre Distribution sehr sicher machen, aber ein neuer Systemadministrator nicht herausfinden kann, wie er damit arbeiten soll … nun, sie werden eine einfachere Distribution finden, um sich damit vertraut zu machen, und jetzt haben Sie diesen Administrator an eine andere Distribution verloren . Es ist also wirklich keine Überraschung, dass die meisten Linux-Distributionen direkt nach der Installation ein wenig angepasst werden müssen, um sie zu sperren. Dies ist im Laufe der Jahre besser geworden, da die Installer selbst einfacher zu bedienen und funktionsreicher geworden sind. Sie können direkt aus dem GUI-Installationsprogramm ein hübsches benutzerdefiniertes System erstellen. Ein Basissystem von Red Hat Enterprise Linux (RHEL) zum Beispiel, wenn Sie sich für den Basispaketsatz entschieden haben, ist eigentlich ziemlich sparsam mit unnötigen Diensten und Paketen.
Es gab eine Zeit, wo das nicht stimmte. Können Sie sich vorstellen, dass Passwörter gehasht werden, aber in /etc/password für jeden Benutzer zum Lesen verfügbar sind? Oder wird die gesamte Systemverwaltung über Telnet ausgeführt? SSH war standardmäßig nicht einmal aktiviert. Hostbasierte Firewall? Völlig optional. Vor 20 Jahren bedeutete das Sperren eines neu installierten Linux-Systems also eine lange Liste von Aufgaben. Glücklicherweise ist mit zunehmender Reife der Computer auch die Standardinstallation fast aller Betriebssysteme gewachsen.
Was ist System-"Härtung"
Ein System zu härten bedeutet, das System sicherer zu machen – ein schwierigeres Ziel für die Bösewichte. Stellen Sie sich vor, Sie hätten einen weißen Lattenzaun, der Ihr Haus schützt. Es reicht wahrscheinlich aus, die ehrlichen Leute ehrlich zu halten – sie sehen den Zaun und den netten kleinen Riegel an Ihrem Tor und beschließen, die Tatsache zu respektieren, dass Sie offensichtlich keine Menschen in Ihrem Garten haben wollen. Sie fühlen sich sicher, wenn Sie wissen, dass niemand in Ihren Garten kommen und Ihre Blumen zertrampeln wird, weil die Menschen diese Grenze Ihres Grundstücks respektieren. Alles, was es braucht, ist ein Kind, dem das alles egal ist, um Ihren Garten zu durchschneiden, weil es keine Lust hat, herumzulaufen. Ihr weißer Lattenzaun und der schwache Riegel sind nichts für sie, um sie aufzuklappen und direkt hindurchzulaufen.
Das Härten wäre, als würde man den weißen Lattenzaun zu einem zwei Meter hohen Maschendrahtzaun aufrüsten und einen Riegel mit einem Schloss daran anbringen. Jemand, der entschlossen genug ist, könnte immer noch über den Zaun klettern, aber das Kind, das durch Ihren Garten geschnitten hat, wird sich wahrscheinlich nicht mehr darum kümmern, weil es ein bisschen zu viel Arbeit ist.
Sehen Sie, bei der Computersicherheit geht es nicht darum, vollständig unzerbrechlich zu sein, es sei denn, Sie sind Oracle; Es geht darum, gerade sicher genug zu sein, um schwer einzubrechen, und gleichzeitig offen genug, dass Ihr System tatsächlich das tun kann, wofür es entwickelt wurde. Ein Webserver, der so gesperrt ist, dass Sie darauf keine Website ausführen können, ist kein sehr guter Webserver – wie ein Maschendrahtzaun ohne Tor.
Härtungstipps
Unten finden Sie keine Schritt-für-Schritt-Anleitung, sondern einige allgemeine Punkte, die Sie bei der Härtung Ihres Systems berücksichtigen sollten.
Lassen Sie die GUI fallen
Betreiben Sie eine Workstation? Oder ein Server? Server brauchen keine GUIs. Es ist nur eine weitere Sache, die Platz und CPU verschlingt. Wenn ich ein System installiere, installiere ich es mit dem absolut kleinsten Platzbedarf, den der Installer zulässt. Das bedeutet keine GUI. Du brauchst es einfach nicht. Es gibt einige Anwendungen, die eine X-Umgebung zum Installieren und Verwalten benötigen (was in der heutigen Zeit einfach albern ist, aber es passiert). Wenn Sie jedoch keine davon ausführen, machen Sie sich nicht die Mühe, eine GUI zu installieren oder sich über deren Anforderungen Gedanken zu machen.
Unnötige Dienste
Abhängig von Ihrer Distribution haben Sie möglicherweise einige Dienste als Teil der Basis installiert, die einfach nicht benötigt werden, wie in jenen Telnet-Tagen, auf die ich zuvor verwiesen habe – als Distributionen noch von Telnet zu SSH für die Verwaltung übergingen, würden Sie beide von aktivieren eine Basisinstallation. Sie müssen auswählen, welche Sie behalten möchten, also möchten Sie Telnet wahrscheinlich deaktivieren oder zumindest per Firewall abschalten. Heutzutage könnten diese Dienste eher so etwas wie der CUPS-Druckdienst oder vielleicht der Mail Transfer Agent (MTA) des Systems sein. Sie können standardmäßig so konfiguriert werden, dass sie auf eingehende Verbindungen lauschen. Während Sie wahrscheinlich einen MTA benötigen, brauchen Sie ihn nicht, um externe Verbindungen zu akzeptieren. Auf einem systemd system können Sie alle aktiven Dienste ganz einfach auflisten. Sie können auch die Ausgabe von netstat überprüfen oder ss um zu sehen, welche Dienste auf Verbindungen lauschen. Wenn Sie nicht wissen, was ein Service ist, ist jetzt ein guter Zeitpunkt, etwas zu lesen.
Benutzerzugriff
Sofern Sie keinen Shell-Server betreiben, auf den die Leute tatsächlich Zugriff benötigen, sollten Sie wahrscheinlich genau darüber nachdenken, wem Sie auf Ihren Systemen einen Shell-Account zuweisen. Dies ist nicht unbedingt eine abhärtende Praxis, sondern nur eine gute Verwaltung. Je mehr Konten vorhanden sind, desto größer ist der Fußabdruck der Konten, die kompromittiert werden können. Es ist auch eine gute Idee, SEHR vorsichtig zu sein, wie Sie sudo verteilen Privilegien. Niemand sollte jemals das Passwort von root haben, außer vielleicht dem Systemadministrationsteam (und selbst sie sollten es nicht verwenden, es sei denn, es ist absolut notwendig). Sudo gibt es aus einem bestimmten Grund; verwenden.
Host-basierte Firewalls
Ich habe darüber ziemlich viel in meiner Serie über Verteidigung in der Tiefe gesprochen. Die hostbasierte Firewall ist die letzte Verteidigungslinie des Netzwerks; benutze es. Im Auslieferungszustand hat Ihre Distribution möglicherweise eine weit geöffnete Firewall oder einige Standardports sind geöffnet. Wie werden die Firewall-Regeln beendet? Ist dies ein standardmäßig offenes oder standardmäßig geschlossenes System? Abgesehen von der Fehlerbehebung habe ich nie einen Grund gesehen, eine standardmäßig offene Firewall zu haben. Ich konnte jedoch sehen, wie eine Basisinstallation die Firewall so konfiguriert haben könnte, also ist es gut zu wissen oder herauszufinden. Alle ausgeklügelten Firewall-Regeln der Welt nützen nichts, wenn sich Ihre Firewall standardmäßig öffnet. Software sollte geöffnet sein; Firewalls sollten geschlossen werden.
Sichere Protokolle
Es gab eine Zeit, in der Sie nur Datenverkehr verschlüsselten, der eine vernünftige Chance hatte, private Daten wie Passwörter auszutauschen. Dies lag daran, dass die Verschlüsselung mit Kosten verbunden war. Zahlen zu knacken ist das, was Computer gut können, aber die Verschlüsselung jedes Bits der Kommunikation fügte Latenz hinzu. Nicht viel, aber es summiert sich. Nun, das ist nicht wirklich das Problem, das es früher war. Wir sind jetzt an einem Punkt angelangt, an dem es wirklich keinen Grund gibt, den Datenverkehr zu und von Ihrem System nicht zu verschlüsseln. Sie können mit LetsEncrypt kostenlos TLS verschlüsseln, und die Verwaltung über SSH ist nicht einmal mehr eine Frage. Ich bin mir sicher, dass es hier Grenzfälle gibt, aber ich wette, dass die Antwort auf die Frage "Sollte das verschlüsselt werden?" ist wahrscheinlich "ja."
Erinnere dich an das Gleichgewicht
Denken Sie daran, dass Sicherheit ein Gleichgewicht zwischen Zugänglichkeit, Benutzerfreundlichkeit und Einschränkung ist. Wenn Sie in eine dieser Richtungen zu weit gehen, kriegen Sie Ärger.
[ Kostenloser Download:Spickzettel für fortgeschrittene Linux-Befehle. ]