Die 50 besten Sicherheitstipps zur Härtung von Linux: Eine umfassende Checkliste
HeimHeim > Blog > Die 50 besten Sicherheitstipps zur Härtung von Linux: Eine umfassende Checkliste

Die 50 besten Sicherheitstipps zur Härtung von Linux: Eine umfassende Checkliste

Jun 02, 2023

Linux betreibt den Großteil des Webs und eine beträchtliche Anzahl von Workstations auf der ganzen Welt. Einer der Hauptgründe für die stetig wachsende Beliebtheit von Linux- und BSD-Systemen sind ihre grundsoliden Sicherheitsrichtlinien. Linux-Systeme sind aufgrund ihrer zugrunde liegenden Designprinzipien von Natur aus schwer zu knacken. Allerdings ist kein System unzerbrechlich, und wenn Sie Ihre Workstation oder Ihren Linux-Server nicht entsprechend den neuesten Standards absichern, werden Sie wahrscheinlich Opfer verschiedener Arten von Angriffen und/oder Datenschutzverletzungen. Aus diesem Grund haben wir 50 Linux-Härtungstipps zusammengestellt, die Ihnen dabei helfen, die Sicherheit Ihres Servers auf die nächste Stufe zu heben.

Sicherheit ist zu einem integralen Bestandteil der Computerwelt geworden. Daher ist die Absicherung Ihrer persönlichen Workstation sowie der Serversicherheit ein Muss. Lesen Sie also weiter und berücksichtigen Sie die folgenden Tipps so weit wie möglich, um die Sicherheit Ihres Linux-Computers zu erhöhen.

Die Dokumentation der Host-Informationen kann auf lange Sicht äußerst nützlich sein. Wenn Sie beabsichtigen, das gleiche System über einen längeren Zeitraum hinweg beizubehalten, ist die Wahrscheinlichkeit groß, dass es irgendwann zu Problemen kommt. Wenn Sie jedoch Ihre Workstation oder Ihren Server bereits ab dem Tag der Installation dokumentieren, erhalten Sie eine solide Vorstellung von der gesamten Systeminfrastruktur und den verwendeten Richtlinien.

Fügen Sie die folgenden Informationen zum System in Ihre Dokumentation ein. Fühlen Sie sich frei, je nach Ihren Serveranforderungen einige Extras hinzuzufügen.

Sie sollten Ihr BIOS mit einem geeigneten Passwort sichern, damit andere Benutzer nicht auf die Einstellungen zugreifen oder diese ändern können. Da der Zugriff auf das BIOS-Menü bei modernen Mainboards recht einfach ist, können Endbenutzer vorhandene Einstellungen überschreiben und sensible Konfigurationen manipulieren.

Darüber hinaus können Benutzer auch bootfähige Systeme verwenden, um auf Ihre Hostdaten zuzugreifen. Dies könnte auch eine Bedrohung für die Integrität Ihres Servers darstellen. Mit dem folgenden Befehl können Sie USB-Geräte vollständig deaktivieren.

Das Booten über USB kann auch über das BIOS-Menü deaktiviert werden. Dies ist jedoch nicht zwingend erforderlich, wenn Sie eine persönliche Workstation betreiben, auf die andere Benutzer nicht zugreifen können.

Die Verschlüsselung Ihres Festplattenspeichers kann sich auf lange Sicht als äußerst vorteilhaft erweisen. Es verhindert Datenlecks im Falle eines Diebstahls oder des Eindringens Dritter. Glücklicherweise gibt es eine Vielzahl von Linux-Verschlüsselungstools, die diese Aufgabe für Administratoren problemlos machen.

Darüber hinaus bieten moderne Linux-Distributionen Administratoren die Möglichkeit, ihr Linux-Dateisystem während des Installationsprozesses zu verschlüsseln. Sie sollten jedoch wissen, dass die Verschlüsselung den Leistungsdurchsatz beeinträchtigen und die Datenwiederherstellung wahrscheinlich erschweren wird.

Da über das Netzwerk übertragene Daten mithilfe von Open-Source-Sicherheitstools problemlos erfasst und analysiert werden können, sollte die Datenverschlüsselung während des Linux-Härtungsprozesses oberste Priorität haben. Viele ältere Datenkommunikationstools verwenden keine ordnungsgemäße Verschlüsselung und können daher Ihre Daten angreifbar machen.

Für die Fernübertragung von Daten sollten Sie stets sichere Kommunikationsdienste wie ssh, scp, rsync oder sftp nutzen. Linux ermöglicht Benutzern auch das Mounten entfernter Dateisysteme mithilfe spezieller Tools wie Fuse oder SSHFS. Versuchen Sie, die GPG-Verschlüsselung zum Verschlüsseln und Signieren Ihrer Daten zu verwenden. Zu den weiteren Linux-Tools, die Datenverschlüsselungsdienste anbieten, gehören OpenVPN, Lighthttpd SSL, Apache SSL und Let's Encrypt.

Viele ältere Unix-Programme bieten keine wesentliche Sicherheit bei der Datenübertragung. Dazu gehören FTP, Telnet, rlogin und rsh. Egal, ob Sie Ihren Linux-Server oder Ihr persönliches System sichern, hören Sie endgültig auf, diese Dienste zu nutzen.

Sie können für diese Art von Datenübertragungsaufgaben andere Alternativen verwenden. Dienste wie OpenSSH, SFTP oder FTPS stellen beispielsweise sicher, dass die Datenübertragung über einen sicheren Kanal erfolgt. Einige von ihnen verwenden SSL- oder TLS-Verschlüsselungen, um Ihre Datenkommunikation zu schützen. Mit den folgenden Befehlen können Sie ältere Dienste wie NIS, Telnet und RSH von Ihrem System entfernen.

Verwenden Sie den ersten Befehl für RPM-basierte Distributionen wie RHEL und Centos oder jedes System, das den Yum-Paketmanager verwendet. Der zweite Befehl funktioniert auf Debian/Ubuntu-basierten Systemen.

Um die Sicherheit Ihres Servers zu gewährleisten, sollten Sie immer so schnell wie möglich die neuesten Sicherheitsupdates installieren. Dies kann die Angriffsfläche verringern, falls Schwachstellen in älteren Paketen oder Kernelmodulen entdeckt werden. Glücklicherweise ist die Aktualisierung des Systems sehr einfach und kann relativ schnell durchgeführt werden.

Verwenden Sie den Befehl yum, um Ihre RHEL/Centos-Systeme zu aktualisieren, und den Befehl apt für Ubuntu/Debian-basierte Distributionen. Darüber hinaus können Sie diesen Prozess automatisieren, indem Sie den Linux-Cronjob verwenden. Besuchen Sie unseren Leitfaden zu Linux Crontab, um mehr über Cron-Jobs zu erfahren.

SELinux oder Security Enhanced Linux ist ein Sicherheitsmechanismus, der verschiedene Methoden zur Zugriffskontrolle auf Kernelebene implementiert. SELinux wurde von Red Hat entwickelt und vielen modernen Linux-Distributionen hinzugefügt. Man kann es sich als eine Reihe von Kernel-Modifikationen und User-Space-Tools vorstellen. Mit dem folgenden Befehl können Sie überprüfen, ob SELinux in Ihrem System aktiviert ist oder nicht.

Wenn eine Durchsetzung zurückgegeben wird, bedeutet dies, dass Ihr System durch SELinux geschützt ist. Wenn das Ergebnis „freizügig“ lautet, bedeutet das, dass Ihr System über SELinux verfügt, es jedoch nicht erzwungen wird. Für Systeme, auf denen SELinux vollständig deaktiviert ist, wird es deaktiviert zurückgegeben. Sie können SELinux mit dem folgenden Befehl erzwingen.

Die Minimierung von Systempaketen kann die Gesamtsicherheit Ihres Systems erheblich erhöhen. Da Softwarefehler eines der Haupthindernisse für die Sicherheit sind, bedeutet eine geringere Anzahl an Paketen, dass die Schwachstellenfläche kleiner wird. Darüber hinaus erzielen Server in der Regel einen erheblichen Leistungsschub, wenn sie frei von unnötiger Bloatware sind.

Sie können die oben genannten Yum-Befehle unter Linux verwenden, um die in Ihrem System installierte Software aufzulisten und diejenigen zu entfernen, die Sie nicht wirklich benötigen. Verwenden Sie die folgenden Befehle, wenn Sie ein Debian/Ubuntu-basiertes System ausführen.

Wenn Sie auf Ihrem Server herkömmliche monolithische Netzwerkdienste verwenden, erhält ein Angreifer Zugriff auf Ihre gesamte Infrastruktur, sobald er einen einzelnen Dienst ausnutzt. Angenommen, Sie betreiben einen LAMP-Stack. Was passiert, wenn ein Angreifer einen Fehler im Apache-Dienst ausnutzt? Er wird schließlich andere Dienste ausweiten und wahrscheinlich die volle Systemkontrolle erlangen.

Wenn Sie jedoch Ihre Netzwerkdienste aufteilen und ein Netzwerk pro Dienst verwenden, wird der Angriff weniger erfolgreich sein. Dies liegt daran, dass der Eindringling jedes Netzwerk ausnutzen muss, bevor er vollständigen Systemzugriff erhalten kann. Sie können die folgenden Schritte ausführen, um eine herkömmliche LAMP-Stack-Konfiguration aufzuteilen.

Unix-Systeme verfügen in der Regel über mehr als ein Benutzerkonto. Ihr System ist so sicher wie die Benutzer, die es ausführen. Stellen Sie daher sicher, dass nur vertrauenswürdige Personen ein bestimmtes System betreiben können. Du kannst den ... benutzenBenutzer hinzufügen/BenutzermodBefehle zum Hinzufügen und Verwalten neuer Benutzerkonten auf Ihrem Computer.

Setzen Sie stets strenge Passwortrichtlinien durch. Ein sicheres Passwort sollte mehr als acht Zeichen lang sein und mindestens eine Kombination aus Buchstaben, Zahlen und Sonderzeichen enthalten. Benutzer sollten sich ihre Passwörter jedoch merken können. Stellen Sie außerdem sicher, dass Ihr Passwort nicht anfällig für Wörterbuchangriffe ist. Sie können dazu das Linux-PAM-Modul pam_cracklib.so verwenden.

Eine weitere gängige Linux-Härtungsmethode besteht darin, den Passwortablauf für alle Benutzerkonten zu aktivieren. Mithilfe von können Sie ganz einfach Ablaufdaten für Benutzerkennwörter festlegenändern Befehl unter Linux. Ihr System fordert Benutzer auf, ein neues Passwort festzulegen, sobald ihr bestehendes Passwort abläuft.

Der erste Befehl listet das aktuelle Ablaufdatum des Passworts für den Benutzer mary auf. Der zweite Befehl legt das Ablaufdatum nach 30 Tagen fest. Sie können dieses Datum auch im Format JJJJ-MM-TT festlegen, indem Sie den dritten Befehl verwenden.

Sie können die Passwortstärke erhöhen, indem Sie sicherstellen, dass Benutzer keine schwachen Passwörter festlegen oder verwenden können. Passwort-Cracker können sie leicht brutal erzwingen und sich unbefugten Zugriff verschaffen. Begrenzen Sie außerdem die Wiederverwendung von Passwörtern, indem Sie die folgende Zeile an Ubuntu/Debian bzw. RHEL/Centos anhängen.

Jetzt können Ihre Benutzer keine Passwörter wiederverwenden, die in den letzten 12 Wochen verwendet wurden. Nutzen Sie außerdem die folgenden Tipps, um schwache Passphrasen gänzlich zu verbieten.

Hängen Sie die Zeile an –

Sie müssen Cracklib nicht in RHEL/Centos installieren. Hängen Sie einfach die folgende Zeile an.

Administratoren sollten sicherstellen, dass sich Benutzer nach einer bestimmten Anzahl fehlgeschlagener Versuche nicht mehr bei ihrem Server anmelden können. Dadurch wird die Gesamtsicherheit des Systems erhöht, indem Passwortangriffe abgewehrt werden. Sie können den Linux-Befehl faillog verwenden, um die fehlgeschlagenen Anmeldeversuche anzuzeigen.

Der erste Befehl zeigt die fehlgeschlagenen Anmeldeversuche für Benutzer aus der Datenbank /var/log/faillog an. Der zweite Befehl setzt die maximale Anzahl zulässiger fehlgeschlagener Anmeldeversuche auf 3. Der dritte Befehl setzt eine Sperre von 1800 Sekunden oder 30 Minuten nach der zulässigen Anzahl fehlgeschlagener Anmeldeversuche.

Verwenden Sie diesen Befehl, um einen Benutzer zu entsperren, sobald ihm die Anmeldung untersagt ist. Die maximale Anzahl fehlgeschlagener Anmeldeversuche für den Root-Benutzer sollte hoch sein, da Sie sonst durch Brute-Force-Angriffe gesperrt werden.

Benutzer sind das schwächste Glied in der Gesamtsicherheit eines Systems. Administratoren müssen sicherstellen, dass kein Benutzer im System über leere Passphrasen verfügt. Dies ist ein obligatorischer Schritt für eine ordnungsgemäße Linux-Härtung. Verwenden Sie den folgenden awk-Befehl unter Linux, um dies zu überprüfen.

Es wird angezeigt, ob es auf Ihrem Server Benutzerkonten gibt, die ein leeres Passwort haben. Um die Absicherung des Linux-Servers zu erhöhen, sperren Sie alle Benutzer, die leere Passphrasen verwenden. Sie können dazu den folgenden Befehl von Ihrem Linux-Terminal aus verwenden.

Um die Serversicherheit zu gewährleisten, sollten sich Administratoren nicht häufig als Root anmelden. Stattdessen können Sie mit sudo Linux-Terminalbefehle ausführen, die niedrige Berechtigungen erfordern. Der folgende Befehl zeigt, wie Sie einen neuen Benutzer mit Sudo-Berechtigungen erstellen.

Sie können bestehenden Benutzern auch Sudo-Berechtigungen erteilen, indem Sie den folgenden Befehl verwenden.

Sie können E-Mail-Benachrichtigungen einrichten, sodass der Serveradministrator immer dann per E-Mail benachrichtigt wird, wenn ein Benutzer sudo verwendet. Bearbeiten Sie die Datei /etc/sudoers und fügen Sie die folgenden Zeilen mit Ihrem bevorzugten Linux-Texteditor hinzu.

Ersetzen Sie die E-Mail durch Ihre eigene E-Mail oder die des Prüfpersonals. Jetzt werden Sie jedes Mal informiert, wenn jemand eine Aufgabe auf Systemebene ausführt.

Heutzutage sind mehrere Linux-Bootloader verfügbar. Aufgrund seines vielfältigen Funktionsumfangs bleibt GRUB jedoch für die meisten Administratoren die erste Wahl. Darüber hinaus ist es der Standard-Bootloader in vielen modernen Linux-Distributionen. Administratoren, die ihre Linux-Härtungsmaßnahmen ernst nehmen, sollten ein sicheres Passwort für ihr GRUB-Menü festlegen.

Geben Sie dies an Ihrem Terminal ein und Grub fragt Sie nach dem Passwort. Geben Sie das Passwort ein, das Sie festlegen möchten, und es wird mit Ihrem Passwort ein verschlüsselter Hash generiert. Jetzt müssen Sie diesen Hash in Ihr Grub-Konfigurationsmenü einfügen.

Fügen Sie den berechneten Hash hinzu, indem Sie die folgende Zeile zwischen den Zeilen hinzufügen, die das Timeout und das Splash-Bild festlegen.

Eine UID oder User-ID ist eine nicht negative Nummer, die den Benutzern eines Systems vom Kernel zugewiesen wird. Die UID 0 ist die UID des Superusers oder Roots. Es ist wichtig sicherzustellen, dass kein anderer Benutzer als root diesen UID-Wert hat. Andernfalls können sie das gesamte System als Root ausgeben.

Sie können herausfinden, welche Benutzer diesen UID-Wert haben, indem Sie dieses awk-Programm ausführen. Die Ausgabe sollte nur einen einzigen Eintrag enthalten, der root entspricht.

Beim Systemstart werden viele Dienste und Daemons gestartet. Das Deaktivieren derjenigen, die nicht obligatorisch sind, kann zur Linux-Härtung beitragen und die Startzeit verbessern. Da die meisten modernen Distributionen systemd anstelle von Init-Skripten verwenden, können Sie systemctl zum Auffinden dieser Dienste verwenden.

Diese Befehle zeigen solche Dienste und Daemons an. Sie können einen bestimmten Dienst deaktivieren, indem Sie den folgenden Befehl verwenden.

Das X Window Systems oder x11 ist die de-facto-grafische Oberfläche für Linux-Systeme. Wenn Sie Linux anstelle Ihres persönlichen Systems zum Betreiben Ihres Servers verwenden, können Sie dies vollständig löschen. Es wird dazu beitragen, die Sicherheit Ihres Servers zu erhöhen, indem viele unnötige Pakete entfernt werden.

Dieser Yum-Befehl löscht x11 von RHEL- oder Centos-Systemen. Wenn Sie stattdessen Debian/Ubuntu verwenden, verwenden Sie den folgenden Befehl.

Wenn Sie x11 nicht dauerhaft löschen möchten, können Sie diesen Dienst stattdessen deaktivieren. Auf diese Weise startet Ihr System im Textmodus statt im GUI. Bearbeiten Sie die Datei /etc/default/grub mit Ihrem bevorzugten Linux-Texteditor.

Finden Sie die folgende Zeile –

Ändern Sie es jetzt in –

Aktualisieren Sie abschließend die GRUB-Datei mit –

Der letzte Schritt besteht darin, systemd anzuweisen, das GUI-System nicht zu laden. Sie können dies tun, indem Sie die folgenden Befehle ausführen.

Netzwerkangriffe auf Server kommen äußerst häufig vor. Wenn Sie einen sicheren Server aufrechterhalten möchten, sollten Sie die lauschenden Netzwerkports von Zeit zu Zeit validieren. Dadurch erhalten Sie wichtige Informationen über Ihr Netzwerk.

Sie können jeden der oben genannten Befehle verwenden, um zu sehen, welche Ports auf eingehende Anfragen warten. Wir haben eine frühere Anleitung, die eine detaillierte Diskussion der wichtigsten nmap-Befehle unter Linux bietet.

Wenn Sie in Ihrem Netzwerk eine verdächtige IP finden, können Sie diese mit Standard-Linux-Befehlen untersuchen. Der folgende Befehl verwendet netstat und awk, um eine Zusammenfassung der ausgeführten Protokolle anzuzeigen.

Verwenden Sie den folgenden Befehl, um weitere Informationen zu einer bestimmten IP zu finden.

Um alle eindeutigen IP-Adressen anzuzeigen, verwenden Sie den folgenden Befehl.

Geben Sie den obigen Befehl an wc weiter, um die Gesamtzahl der eindeutigen IP-Adressen zu erhalten.

Besuchen Sie unseren Leitfaden zu verschiedenen Linux-Netzwerkbefehlen, wenn Sie tiefer in die Netzwerksicherheit eintauchen möchten.

Linux bietet mit iptables hervorragende integrierte Schutzmaßnahmen gegen unerwünschte Netzwerkanfragen. Es handelt sich um eine Schnittstelle zum Netfilter-Mechanismus, der vom Linux-Kernel bereitgestellt wird. Mit iptables können Sie ganz einfach bestimmte IP-Adressen oder einen Bereich davon blockieren.

Mit dem obigen Befehl können Sie alle Netzwerkanfragen für eine bestimmte IP-Adresse blockieren. Weitere Informationen zu diesem Tool finden Sie in unserem Handbuch zu Linux iptables. Sie können auch andere leistungsstarke Firewalls installieren und verwenden.

Der Linux-Kernel verfügt über viele Laufzeitparameter. Sie können einige davon ganz einfach anpassen, um die Linux-Härtung zu verbessern. Mit dem Befehl sysctl können Administratoren diese Kernel-Parameter konfigurieren. Sie können auch die Datei /etc/sysctl.conf ändern, um den Kernel zu optimieren und die Sicherheit zu erhöhen.

Fügen Sie beispielsweise die folgende Zeile am Ende Ihrer sysctl-Konfiguration hinzu, um Systemneustarts nach 10 Sekunden einer Kernel-Panik zu ermöglichen.

Fügen Sie die folgende Zeile hinzu, um die Adressen für mmap-Basis-, Heap-, Stack- und VDSO-Seiten zufällig zu sortieren.

Die nächste Zeile sorgt dafür, dass der Kernel ICMP-Fehler ignoriert.

Sie können unzählige solcher Regeln hinzufügen und sie an Ihre Kernel-Anforderungen anpassen.

SUID und SGID sind spezielle Arten von Dateiberechtigungen im Linux-Dateisystem. Mit der SUID-Berechtigung können andere Benutzer ausführbare Dateien ausführen, als wären sie der Eigentümer dieser Dateien. Ebenso gewährt die SGID-Berechtigung Verzeichnisrechte, die denen des Eigentümers ähneln, aber auch das Eigentum an allen untergeordneten Dateien in einem Verzeichnis.

Dies ist schlecht, da Sie nicht möchten, dass andere Benutzer als Sie selbst über diese Berechtigungen auf einem sicheren Server verfügen. Sie sollten jede Datei finden, in der SUID und SGID aktiviert sind, und diese deaktivieren. Mit den folgenden Befehlen werden jeweils alle Dateien aufgelistet, für die die SUID- und SGID-Berechtigung aktiviert ist.

Untersuchen Sie diese Dateien ordnungsgemäß und prüfen Sie, ob diese Berechtigungen obligatorisch sind oder nicht. Wenn nicht, entfernen Sie die SUID/SGID-Berechtigungen. Die folgenden Befehle entfernen jeweils SUID/SGID.

Das Linux-Dateisystem unterteilt alles je nach Anwendungsfall in mehrere Teile. Sie können die kritischen Teile des Dateisystems in verschiedene Partitionen Ihres Festplattenspeichers unterteilen. Beispielsweise sollten die folgenden Dateisysteme in verschiedene Partitionen aufgeteilt werden.

Sie sollten auch separate Partitionen für verschiedene Dienste erstellen, z. B. für Apache- und FTP-Server-Roots. Dies hilft, die sensiblen Teile Ihres Systems zu isolieren. Selbst wenn ein böswilliger Benutzer Zugriff auf einen Teil des Systems erhält, kann er sich daher nicht frei im gesamten System bewegen.

Bei der Durchführung von Aufgaben zur Härtung von Linux-Servern sollten Administratoren den zugrunde liegenden Systempartitionen besondere Aufmerksamkeit schenken. Böswillige Benutzer können Partitionen wie /tmp, /var/tmp und /dev/shm nutzen, um unerwünschte Programme zu speichern und auszuführen. Glücklicherweise können Sie Schritte zum Sichern Ihrer Partitionen implementieren, indem Sie einige Parameter zu Ihrer /etc/fstab-Datei hinzufügen. Öffnen Sie diese Datei mit einem Linux-Texteditor.

Suchen Sie die Zeile, die den Speicherort /tmp enthält. Hängen Sie nun die Parameter nosuid, nodev, noexec und ro als durch Kommas getrennte Liste nach den Standardwerten an.

Sie bieten die folgenden Funktionalitäten –

Bei Festplattenkontingenten handelt es sich lediglich um vom Systemadministrator festgelegte Beschränkungen, die die Nutzung des Linux-Dateisystems für andere Benutzer einschränken. Wenn Sie Ihre Linux-Sicherheit verstärken, ist die Implementierung von Festplattenkontingenten für Ihren Server obligatorisch.

Fügen Sie die obige Zeile zu /etc/fstab hinzu, um das Festplattenkontingent für das /home-Dateisystem zu aktivieren. Wenn Sie bereits eine Zeile /home haben, ändern Sie diese entsprechend.

Dieser Befehl zeigt alle Kontingentinformationen an und erstellt die Dateien aquota.user und aquota.group in /home.

Dieser Befehl öffnet die Kontingenteinstellungen von in einem Editor, in dem Sie die Kontingentgrenzen zuweisen können. Sie können sowohl weiche als auch harte Grenzwerte für die Festplattenkontingentgröße sowie die Anzahl der Inodes festlegen. Verwenden Sie den folgenden Befehl, um einen Bericht über die Festplattenkontingentnutzung anzuzeigen.

IPv6 oder Internet Protocol Version 6 ist die neueste Version des TCP/IP-Protokolls. Es verfügt über eine erweiterte Funktionsliste und viele Vorteile für die Benutzerfreundlichkeit. Allerdings ist IPv4 für die meisten Server immer noch die Branche der Wahl. Es besteht also die Möglichkeit, dass Sie IPv6 überhaupt nicht verwenden. In solchen Fällen sollten Sie dies ganz ausschalten.

Durch das Entfernen unnötiger Netzwerkverbindungen wird die Sicherheit Ihres Servers stabiler. Daher bietet das Ausschalten von IPv6 angemessene Linux-Härtungseffekte. Fügen Sie die folgenden Zeilen zu /etc/sysctl.conf hinzu, um die IPv6-Konnektivität auf Kernelebene zu deaktivieren.

Führen Sie abschließend den folgenden Befehl aus, um die Änderungen auf Ihren Server zu laden.

Mit Word beschreibbare Dateien sind Dateien, in die jeder schreiben kann. Dies kann sehr gefährlich sein, da es Benutzern effektiv ermöglicht, ausführbare Dateien auszuführen. Außerdem ist Ihre Linux-Härtung nur dann narrensicher, wenn Sie die entsprechenden Sticky Bits gesetzt haben. Ein Sticky-Bit ist ein einzelnes Bit, das, wenn es gesetzt ist, verhindert, dass Benutzer die Verzeichnisse anderer Personen löschen.

Wenn Sie also über weltweit beschreibbare Dateien verfügen, für die Sticky-Bits festgelegt sind, kann jeder diese Dateien löschen, auch wenn sie nicht ihm gehören. Dies ist ein weiteres ernstes Problem und führt häufig zu verheerenden Auswirkungen auf die Serversicherheit. Glücklicherweise können Sie alle diese Dateien mit dem folgenden Befehl finden.

Ersetzen Sie das Pfadargument durch Verzeichnisse, die solche Dateien enthalten können. Sie können auch im Stammverzeichnis „/“ Ihres Dateisystems beginnen, die Ausführung dauert jedoch lange. Untersuchen Sie die Dateien nach der Auflistung gründlich und ändern Sie ihre Berechtigungen nach Bedarf.

Noowner-Dateien sind Dateien, denen kein Eigentümer oder keine Gruppe zugeordnet ist. Diese können eine Reihe unerwünschter Sicherheitsbedrohungen darstellen. Daher sollten Administratoren die erforderlichen Maßnahmen ergreifen, um diese zu identifizieren. Sie können sie entweder den entsprechenden Benutzern zuweisen oder sie vollständig löschen.

Mit dem folgenden Suchbefehl können Sie die in einem Verzeichnis vorhandenen Noowner-Dateien auflisten. Sehen Sie sich diese Anleitung an, um mehr über den Befehl „find“ unter Linux zu erfahren.

Überprüfen Sie die Ergebnisse sorgfältig, um sicherzustellen, dass sich auf Ihrem Server keine unerwünschten Noowner-Dateien befinden.

Die meisten Unix-Systeme verwenden den Syslog-Standard, um nützliche Informationen zu Kernel, Netzwerk, Systemfehlern und vielem mehr zu protokollieren. Sie finden diese Protokolle am Speicherort /var/log. Sie können mit mehreren Terminalserverbefehlen unter Linux angezeigt werden. Der folgende Befehl zeigt beispielsweise die letzten Protokolleinträge zum Kernel an.

Ebenso können Sie /var/log/auth.log für Authentifizierungsinformationen konsultieren.

Die Datei /var/log/boot.log enthält Informationen zum Systemstartvorgang.

Sie können Hardware- und Geräteinformationen auch unter /var/log/dmesg überprüfen.

Die Datei /var/log/syslog enthält Protokollinformationen zu allem in Ihrem System mit Ausnahme der Authentifizierungsprotokolle. Sie sollten es überprüfen, um einen umfassenden Überblick über Ihren Server zu erhalten.

Schließlich können Sie mit „journalctl“ das Systemd-Journal überprüfen. Es wird eine Menge nützlicher Protokolle liefern.

Linux-Systeme sammeln Protokolle und speichern sie für die Administratoren. Mit der Zeit nimmt die Größe dieser Protokolle zu und es kann sogar zu einer erheblichen Verknappung des Speicherplatzes auf der Festplatte kommen. Das Paket logrotate ist in diesem Fall äußerst nützlich, da es Systemprotokolle rotieren, komprimieren und versenden kann. Auch wenn Sie seine Rolle bei der Linux-Härtung in Frage stellen, bietet es unbestreitbare Vorteile.

Dienstspezifische Konfigurationsdateien von logrotate finden Sie im Verzeichnis /etc/logrotate.d. Die globale Logrotate-Konfiguration erfolgt über /etc/logrotate.conf. Sie können hier verschiedene Parameter festlegen, z. B. die Anzahl der Tage, die die Protokolle aufbewahrt werden sollen, ob sie komprimiert werden sollen oder nicht und so weiter.

Protokolldateien enthalten normalerweise viele Informationen, viele davon sind im Hinblick auf die Linux-Härtung irrelevant. Glücklicherweise können Administratoren Pakete wie Logwatch und Logcheck verwenden, um verdächtige Protokolle einfach zu überwachen. Sie filtern häufige Einträge heraus, die in Ihren Protokollen erwartet werden, und lenken Ihre Aufmerksamkeit nur auf ungewöhnliche Einträge.

Logwatch ist ein äußerst leistungsstarker Protokollanalysator, der die Protokollverwaltung erheblich vereinfachen kann. Es eignet sich für Administratoren, die nach Komplettlösungen suchen, da es einen einheitlichen Bericht aller Aktivitäten auf ihren Servern bereitstellt.

Sie können die oben genannten Befehle verwenden, um es auf Ubuntu/Debian- bzw. RHEL/Centos-Systemen zu installieren. Logcheck ist im Vergleich zu Logwatch wesentlich einfacher. Es benachrichtigt Administratoren per E-Mail, sobald verdächtige Protokolle vorliegen. Sie können es installieren, indem Sie –

Eine der besten Linux-Härtungsmethoden für Server ist die Verwendung einer IDS (Intrusion Detection Software). Zu diesem Zweck empfehlen unsere Redakteure dringend das Advanced Intrusion Detection Environment (AIDE). Es handelt sich um ein hostbasiertes IDS, das viele robuste Funktionen bietet, darunter mehrere Message-Digest-Algorithmen, Dateiattribute, Regex-Unterstützung, Komprimierungsunterstützung usw.

Sie können die Installation unter Ubuntu/Debian und RHEL/Centos mit den oben genannten Befehlen durchführen. Darüber hinaus sollten Sie auch Rootkit-Prüfprogramme installieren, wenn Sie die Linux-Sicherheit aufrechterhalten möchten. RootKits sind schädliche Programme, die die Kontrolle über ein System übernehmen sollen. Einige beliebte Tools zur Rootkit-Erkennung sind Chkrootkit und rkhunter.

Es ist immer eine gute Idee, so viele Peripheriegeräte wie möglich zu deaktivieren. Dadurch ist Ihr Server sicher vor Angreifern, die sich direkten Zugriff auf die Infrastruktur verschafft haben. Zuvor haben wir gezeigt, wie man die USB-Geräte deaktiviert. Allerdings können böswillige Benutzer weiterhin Firewire- oder Thunderbolt-Module anschließen.

Firewire ist der generische Name der IEEE 1394-Hardwareschnittstelle. Es dient zum Anschluss digitaler Geräte wie Camcorder. Deaktivieren Sie es mit dem folgenden Befehl.

Ebenso stellt die Thunderbolt-Schnittstelle Verbindungen zwischen Ihrem System und Hochgeschwindigkeitsperipheriegeräten wie Festplattenspeichern, RAID-Arrays, Netzwerkschnittstellen usw. her. Sie können es mit dem folgenden Befehl deaktivieren.

Eine IPS- oder Intrusion Prevention-Software schützt Netzwerkserver vor Brute-Force-Angriffen. Da eine beträchtliche Anzahl böswilliger Benutzer und Bots versucht, sich Zugriff auf Ihren Remote-Server zu verschaffen, wird Ihnen die Einrichtung eines geeigneten IPS auf lange Sicht helfen.

Fail2Ban ist eine der beliebtesten IPS-Lösungen für Unix-ähnliche Systeme. Es ist mit Python geschrieben und auf allen POSIX-kompatiblen Plattformen verfügbar. Es sucht ständig nach aufdringlichen Netzwerkanfragen und blockiert diese so schnell wie möglich. Installieren Sie Fail2Ban mit dem folgenden Befehl.

DenyHosts ist eine weitere beliebte IPS-Lösung zur Linux-Härtung. Es schützt Ihre SSH-Server vor aufdringlichen Brute-Force-Versuchen. Verwenden Sie die folgenden Befehle zur Installation auf Ihren Debian- oder Centos-Servern.

OpenSSH ist eine Software-Suite, die aus Netzwerkdienstprogrammen besteht, die eine sichere Kommunikation über öffentliche Netzwerke ermöglichen. Der OpenSSH-Server ist zur De-facto-Anwendung zur Erleichterung von SSH-Verbindungen geworden. Aber auch die Bösewichte wissen das und haben es häufig auf OpenSSH-Implementierungen abgesehen. Daher sollte die Absicherung dieser Anwendung ein Hauptanliegen aller Linux-Systemadministratoren sein.

Zum Beispiel: Verwenden Sie beim Initiieren einer neuen Sitzung immer Schlüssel anstelle von Passwörtern, deaktivieren Sie die Superuser-Anmeldung, deaktivieren Sie leere Passwörter, beschränken Sie den Benutzerzugriff, richten Sie Firewalls auf Port 22 ein, legen Sie Leerlauf-Timeouts fest, verwenden Sie TCP-Wrapper, begrenzen Sie eingehende Anfragen, deaktivieren Sie die hostbasierte Authentifizierung , und so weiter. Sie können auch erweiterte Linux-Härtungsmethoden wie das Chrooten von OpenSSH verwenden.

Kerberos ist ein Computernetzwerk-Authentifizierungsprotokoll, das den Zugriff auf computergestützte Infrastrukturen auf der Grundlage von Tickets ermöglicht. Es verwendet eine sehr schwer zu knackende kryptografische Logik, die von Kerberos unterstützte Systeme sehr sicher macht. Administratoren können ihr System ganz einfach vor Abhörangriffen und ähnlichen passiven Netzwerkangriffen schützen, wenn sie das Kerberos-Protokoll verwenden.

Kerberos wird vom MIT entwickelt und bietet mehrere stabile Versionen. Sie können die Anwendung von ihrer Website herunterladen. Sehen Sie in der Dokumentation nach, wie es funktioniert und wie Sie es für Ihre Verwendung einrichten können.

Administratoren sollten strenge Netzwerkrichtlinien anwenden, um ihre sicheren Server vor böswilligen Hackern zu schützen. Die Notwendigkeit des Einsatzes von Intrusion Detection Systemen und Intrusion Prevention Systemen haben wir bereits dargelegt. Sie können Ihr Hostnetzwerk jedoch weiter absichern, indem Sie die folgenden Aufgaben ausführen.

Wir haben Kommentare mit dem Raute-Symbol hinzugefügt, um den Zweck dieser Netzwerkparameter zu verdeutlichen.

AppArmor ist ein MAC-Mechanismus (Mandatory Access Control), der es ermöglicht, die Nutzung von Systemressourcen auf der Grundlage von Programmen einzuschränken. Es ermöglicht Administratoren, Richtlinien auf Programmebene und nicht auf Benutzerebene festzulegen. Sie können einfach Profile erstellen, die den Zugriff auf Netzwerk, Sockets, Dateiberechtigungen usw. für Ihre Hostanwendungen steuern.

Auf neueren Debian/Ubuntu-Systemen ist AppArmor vorinstalliert. Die bereits vorhandenen AppArmor-Profile werden im Verzeichnis /etc/apparmor.d gespeichert. Sie können diese Richtlinien während des Linux-Härtungsprozesses ändern oder sogar Ihre eigenen Richtlinien hinzufügen. Verwenden Sie den folgenden Befehl, um den AppArmor-Status in Ihrem System anzuzeigen.

Linux-Server werden häufig zum Betreiben von Webanwendungen verwendet. Wenn Sie Ihren Server für diesen Zweck verwenden, müssen Sie Ihre Serverkomponenten entsprechend absichern. Einige davon sind die PHP-Laufzeitumgebung, der Apache-HTTP-Server und der Nginx-Reverse-Proxy-Server. Sichern Sie Ihren Apache-Server, indem Sie die folgenden Zeilen in die Konfigurationsdatei einfügen.

Wir haben vor einiger Zeit eine eigenständige Anleitung zum Nginx-Server vorbereitet. Befolgen Sie die Vorschläge in diesem Leitfaden, um Ihren Nginx-Server zu sichern. Schauen Sie sich diese Dokumentation an, um mehr über die besten PHP-Sicherheitspraktiken zu erfahren.

TCP-Wrapper sind ein hostbasiertes Netzwerkfiltersystem, das den Zugriff auf Ihre Host-Dienste basierend auf voreingestellten Richtlinien erlaubt oder verweigert. Damit es funktioniert, muss Ihr Hostdienst jedoch mit der Bibliothek libwrap.a kompiliert werden. Zu den gängigen TCP-Wrapperd-Unix-Daemons gehören sshd, vsftpd und xinetd.

Dieser Befehl benachrichtigt, ob ein Dienst von TCP-Wrappern unterstützt wird oder nicht. Das TCP-Wrapper-System erzwingt die Zugriffskontrolle mithilfe von zwei Konfigurationsdateien, /etc/hosts.allow und /etc/hosts.deny. Fügen Sie beispielsweise die folgenden Zeilen zu /etc/hosts.allow hinzu, um alle eingehenden Anfragen an den SSH-Daemon zuzulassen.

Fügen Sie Folgendes zu /etc/hosts.deny hinzu, um alle eingehenden Anfragen an den FTP-Daemon abzulehnen.

Weitere Informationen zu den Konfigurationsoptionen finden Sie auf der tcpd-Manpage oder in dieser Dokumentation von FreeBSD.

Linux bietet robuste Automatisierungsunterstützung mittels Cron-Jobs. Kurz gesagt: Mit dem Cron-Scheduler können Sie Routineaufgaben festlegen. Besuchen Sie unseren früheren Leitfaden zu Cron und Crontab, um zu erfahren, wie Cron funktioniert. Dennoch müssen Administratoren sicherstellen, dass normale Benutzer nicht auf die Crontab zugreifen oder dort Einträge eingeben können. Geben Sie dazu einfach ihre Benutzernamen in die Datei /etc/cron.deny ein.

Dieser Befehl deaktiviert Cron für alle Benutzer auf Ihrem Server außer Root. Um einem bestimmten Benutzer Zugriff zu gewähren, fügen Sie seinen Benutzernamen zur Datei /etc/cron.allow hinzu.

Mit den Tastenkombinationen Strg+Alt+Entf können Benutzer einen Neustart vieler Linux-Distributionen erzwingen. Dies kann besonders problematisch sein, wenn Sie einen sicheren Server verwalten. Administratoren sollten diesen Hotkey deaktivieren, um eine ordnungsgemäße Linux-Härtung aufrechtzuerhalten. Sie können den folgenden Befehl ausführen, um dies in systemd-basierten Systemen zu deaktivieren.

Wenn Sie ältere Systeme verwenden, die init V anstelle von systemd verwenden, bearbeiten Sie die Datei /etc/inittab und kommentieren Sie die folgende Zeile aus, indem Sie davor einen Hash anhängen.

NIC- oder Network Interface Card-Bonding ist eine Form der Link-Aggregation unter Linux. Bei dieser Methode werden mehrere Netzwerkschnittstellen zusammengeführt, um eine bessere Ressourcenverfügbarkeit und einen besseren Durchsatz zu erzielen. Wenn Sie ausgelastete Linux-Server verwalten, können Sie diese Methode verwenden, um die Arbeitslast auf einer einzelnen Schnittstelle zu reduzieren und sie auf mehrere Schnittstellen zu verteilen.

Der gesamte Prozess des NIC-Bonding unterscheidet sich zwischen Debian- und RHEL/Centos-Systemen. Wir werden sie bald in einem eigenständigen Leitfaden behandeln. Denken Sie vorerst einfach daran, dass Sie durch die Aktivierung von Netzwerk-Bonding eine höhere Zuverlässigkeit erreichen können.

Core-Dumps sind Speicher-Snapshots, die Absturzinformationen von ausführbaren Dateien enthalten. Diese werden erstellt, wenn Binärdateien nicht mehr funktionieren oder einfach abstürzen. Sie enthalten zu viele vertrauliche Informationen über das Hostsystem und können Ihre Linux-Sicherheit gefährden, wenn sie in die falschen Hände geraten. Daher ist es immer eine gute Idee, Core-Dumps auf Produktionsservern einzuschränken.

Führen Sie die oben genannten Befehle aus, um Cor-Dumps auf Ihrem Server einzuschränken und die Linux-Härtung zu erhöhen.

Das Exec Shield-Projekt wurde von Red Hat entwickelt, um Linux-Systeme vor automatisierten Remote-Angriffen zu schützen. Es schneidet besonders gut gegen verschiedene Pufferüberlauf-basierte Exploits ab. Sie können Exec Shield für Ihren Linux-Server aktivieren, indem Sie die folgenden Befehle ausführen.

Diese Methode funktioniert sowohl auf Debian- als auch auf RHEL-Systemen.

Egal wie viele Linux-Härtungsmethoden Sie anwenden, Sie müssen immer auf unvorhergesehene Probleme vorbereitet sein. Das Sichern Ihrer Workstation oder Ihres Servers kann sich auf lange Sicht als äußerst vorteilhaft erweisen. Glücklicherweise gibt es eine große Anzahl von Backup-Dienstprogrammen für Linux, die System-Backups einfacher machen.

Darüber hinaus müssen Sie den Backup-Prozess automatisieren und Ihre Systemdaten sicher speichern. Der Einsatz von Lösungen für das Katastrophenmanagement und die Wiederherstellung kann auch bei der Datenverwaltung hilfreich sein.

Obwohl Linux im Vergleich zu Heimbetriebssystemen viel sicherer ist, müssen Administratoren dennoch eine Reihe von Linux-Härtungsrichtlinien einhalten. Wir haben diesen Leitfaden mit vielen der Best Practices zusammengestellt, die von Linux-Sicherheitsexperten verwendet werden. Sie sollten versuchen, so viele davon wie möglich einzusetzen. Wenden Sie diese jedoch nicht an, ohne deren Auswirkungen auf Ihr System zu verstehen. Sie benötigen einen narrensicheren Plan sowie ein gutes Verständnis der Serversicherheit, um Ihr System vor böswilligen Benutzern zu schützen. Hoffentlich haben wir Ihnen die wesentlichen Tipps gegeben, nach denen Sie gesucht haben.

Schöne Zusammenstellung. Gilt das alles auch für Ubuntu?

Vielen Dank für diese Liste. Ich habe jetzt etwas zu tun.

Kommentarfunktion ist geschlossen.

Sicherheitstipps zur Linux-Härtung für Profis1. Hostinformationen dokumentieren2. Sichern Sie das BIOS und deaktivieren Sie den USB-Start3. Festplattenspeicher verschlüsseln4. Verschlüsseln Sie die Datenkommunikation5. Vermeiden Sie veraltete Kommunikationsdienste6. Halten Sie Kernel und Pakete auf dem neuesten Stand7. Aktivieren Sie SELinux8. Minimieren Sie Systempakete9. Netzwerkdienste aufteilen10. Pflegen Sie Benutzerkonten und PasswortrichtlinienBenutzer hinzufügenBenutzermod11. Legen Sie Ablaufdaten für Passwörter feständern12. Erzwingen Sie das Linux PAM-Modul13. Anmeldeversuche nach Fehlern sperren14. Suchen Sie nach leeren Passwörtern15. Deaktivieren Sie die Anmeldung als Superuser16. Legen Sie E-Mail-Benachrichtigungen für Sudo-Benutzer fest17. Sicherer GRUB-Bootloader18. Validieren Sie die UID von Nicht-Root-Benutzern19. Deaktivieren Sie unnötige Dienste20. Entfernen Sie die X Window Systems (x11)21. Deaktivieren Sie die X Window-Systeme (x11)22. Überprüfen Sie die Überwachungsports23. Untersuchen Sie IP-Adressen24. Konfigurieren Sie IPtables und Firewalls25. Konfigurieren Sie die Kernel-Parameter26. Deaktivieren Sie die SUID- und SGID-Berechtigung27. Geteilte Festplattenpartitionen28. Sichere Systempartitionen29. Aktivieren Sie Festplattenkontingente30. Deaktivieren Sie die IPv6-Konnektivität31. Pflegen Sie Word-schreibbare Dateien32. Noowner-Dateien pflegen33. Überprüfen Sie die Serverprotokolle34. Verwenden Sie das Logrotate-Paket35. Installieren Sie Logwatch / Logcheck36. Installieren Sie IDS Solutions37. Deaktivieren Sie Firewire-/Thunderbolt-Geräte38. Installieren Sie IPS Solutions39. Härten Sie den OpenSSH-Server ab40. Nutzen Sie Kerberos41. Host-Netzwerk härten42. Nutzen Sie AppArmor43. Sicherer Webserver44. Konfigurieren Sie TCP-Wrapper45. Behalten Sie den Cron-Zugriff bei46. ​​Deaktivieren Sie Strg+Alt+Entf47. Aktivieren Sie NIC-Bonding48. Core-Dumps einschränken49. Aktivieren Sie Exec Shield50. Erstellen Sie regelmäßige BackupsSchlussgedanken