Linux Hardening: Eine 15-Schritte-Checkliste für einen sicheren Linux-Server

Gus Khawaja

Die meisten Leute gehen davon aus, dass Linux sicher ist, und das ist eine falsche Annahme. Stellen Sie sich vor, Ihr Laptop wird gestohlen, ohne vorher gehärtet zu werden. Ein Dieb würde wahrscheinlich annehmen, dass Ihr Benutzername „root“ und Ihr Passwort „toor“ ist, da dies das Standardkennwort für Kali ist und die meisten Leute es weiterhin verwenden. Tun Sie das? Hoffentlich nicht.

Die negativen beruflichen Auswirkungen der Entscheidung, Ihren Kali Linux-Host nicht zu härten, sind schwerwiegend, daher werde ich die notwendigen Schritte zur Sicherung Ihres Linux-Hosts erläutern, einschließlich der Verwendung von Penetrationstests und Kali Linux, um die Arbeit zu erledigen. Es ist wichtig zu beachten, dass es sich zwar um viele Distributionen (auch bekannt als Distributionen) von Linux handelt und jede sich von der Befehlszeilenperspektive unterscheidet, die Logik jedoch dieselbe ist. Verwenden Sie die folgenden Tipps, um Ihre eigene Linux-Box zu härten.

1- Dokumentieren Sie die Hostinformationen

Jedes Mal, wenn Sie an einem neuen Linux-Härtungsjob arbeiten, müssen Sie ein neues Dokument erstellen, das alle in diesem Beitrag aufgeführten Checklistenelemente enthält, und Sie müssen jedes Element, das Sie angewendet haben, abhaken. Darüber hinaus müssen Sie oben im Dokument die Linux-Host-Informationen angeben:

  • Maschinenname
  • IP-Adresse
  • Mac-Adresse
  • Name der Person, die die Härtung durchführt (höchstwahrscheinlich Sie)
  • Datum
  • Asset-Nummer (Wenn Sie für ein Unternehmen arbeiten, müssen Sie die Asset-Nummer angeben, die Ihr Unternehmen zum Markieren von Hosts verwendet.)

2- BIOS-Schutz

Sie müssen das BIOS des Hosts mit einem Kennwort schützen, damit der Endbenutzer die Sicherheitseinstellungen im BIOS nicht ändern und überschreiben kann. Jeder Computerhersteller hat einen anderen Schlüsselsatz, um in den BIOS-Modus zu gelangen, dann müssen Sie die Konfiguration finden, in der Sie das Administratorkennwort festlegen.

Als nächstes müssen Sie das Booten von externen Mediengeräten (USB / CD / DVD) deaktivieren. Wenn Sie diese Einstellung nicht ändern, kann jeder einen USB-Stick verwenden, der ein bootfähiges Betriebssystem enthält, und auf Ihre Betriebssystemdaten zugreifen.

+ Möchten Sie mehr über Linux erfahren? Erfahren Sie mehr mit Pluralsight, einer Technologie-Lernplattform. Lerne Linux jetzt. +

Die Motherboards der neuesten Server verfügen über einen internen Webserver, auf den Sie remote zugreifen können. Stellen Sie sicher, dass Sie das Standardkennwort der Admin-Seite ändern oder deaktivieren, wenn dies möglich ist.

3-Festplattenverschlüsselung (Vertraulichkeit)

Bei den meisten Linux-Distributionen können Sie Ihre Festplatten vor der Installation verschlüsseln. Die Festplattenverschlüsselung ist im Falle eines Diebstahls wichtig, da die Person, die Ihren Computer gestohlen hat, Ihre Daten nicht lesen kann, wenn sie die Festplatte an ihren Computer anschließt.

Wählen Sie in der Abbildung unten die dritte Option aus der Liste: Geführt- Gesamte Festplatte verwenden und verschlüsseltes LVM einrichten (LVM steht für Logical Volume Manager.)

Wenn Ihre Linux-Distribution keine Verschlüsselung unterstützt, können Sie eine Software wie TrueCrypt verwenden.

4- Festplattenschutz (Verfügbarkeit)

Backups haben so viele Vorteile im Falle eines beschädigten Systems, Fehler im Betriebssystem-Update. Bei wichtigen Servern muss das Backup im Katastrophenfall extern übertragen werden. Backup muss auch verwaltet werden. Zum Beispiel, wie lange werden Sie die alten Backups behalten? Wann müssen Sie Ihr System sichern (jeden Tag, jede Woche …)?

Kritische Systeme sollten in verschiedene Partitionen:

  • /
  • /boot
  • /usr
  • /home
  • /tmp
  • /var
  • /opt

Das Portionieren von Festplatten bietet Ihnen die Möglichkeit, im Falle eines Systemfehlers Leistung und Sicherheit zu gewährleisten. Im Bild unten sehen Sie die Möglichkeit, Partitionen in Kali Linux während der Installation zu trennen.

5- Sperren des Bootverzeichnisses

Das Bootverzeichnis enthält wichtige Dateien, die sich auf den Linux-Kernel beziehen.Daher müssen Sie sicherstellen, dass dieses Verzeichnis für schreibgeschützte Berechtigungen gesperrt ist, indem Sie die nächsten einfachen Schritte ausführen. Öffnen Sie zuerst die Datei „fstab“.

Fügen Sie dann die letzte unten hervorgehobene Zeile hinzu.

Wenn Sie die Bearbeitung der Datei abgeschlossen haben, müssen Sie den Eigentümer festlegen, indem Sie den folgenden Befehl ausführen:

#chown root:root /etc/fstab

Als nächstes habe ich einige Berechtigungen zum Sichern der Starteinstellungen festgelegt:

  • Legen Sie den Besitzer und die Gruppe von /etc/grub fest.conf an den Root-Benutzer:

#chown root:root /etc/grub.conf

  • Legen Sie die Berechtigung für / etc / grub fest.conf-Datei zum Lesen und Schreiben nur für root:

#chmod og-rwx /etc/grub.conf

  • Authentifizierung für Einzelbenutzermodus erforderlich:

#sed -i "/SINGLE/s/sushell/sulogin/" /etc/sysconfig/init

#sed -i "/PROMPT/s/yes/no/" /etc/sysconfig/init

6- Deaktivieren Sie die USB-Nutzung

Je nachdem, wie kritisch Ihr System ist, ist es manchmal erforderlich, die USB-Stick-Nutzung auf dem Linux-Host zu deaktivieren. Es gibt mehrere Möglichkeiten, die Verwendung von USB-Speicher zu verweigern; Hier ist eine beliebte:

Öffnen Sie die „blacklist.conf“ -Datei mit Ihrem bevorzugten Texteditor:

#nano /etc/modprobe.d/blacklist.conf

Wenn die Datei geöffnet wird, fügen Sie am Ende der Datei die folgende Zeile hinzu (Speichern und Schließen):

blacklist usb_storage

Öffnen Sie danach den RC.lokale Datei:

#nano /etc/rc.local

Fügen Sie schließlich die folgenden zwei Zeilen hinzu:

modprobe -r usb_storage

exit 0

7- System Update

Das erste, was nach dem ersten Start zu tun ist, ist das System zu aktualisieren; Dies sollte ein einfacher Schritt sein. Im Allgemeinen öffnen Sie Ihr Terminalfenster und führen die entsprechenden Befehle aus. In Kali Linux erreichen Sie dies, indem Sie die Befehle im Bild unten ausführen:

8- Überprüfen Sie die installierten Pakete

Listen Sie alle auf Ihrem Linux-Betriebssystem installierten Pakete auf und entfernen Sie die nicht benötigten. Sie müssen sehr streng sein, wenn der Host, den Sie zu härten versuchen, ein Server ist, da Server die geringste Anzahl von Anwendungen und Diensten benötigen, die auf ihnen installiert sind. Hier ist ein Beispiel, wie Sie die unter Kali Linux installierten Pakete auflisten:

Denken Sie daran, dass das Deaktivieren unnötiger Dienste die Angriffsfläche verringert, Daher ist es wichtig, die folgenden Legacy-Dienste zu entfernen, wenn Sie sie auf dem Linux-Server installiert haben:

  • Telnet-Server
  • RSH-Server
  • NIS-Server
  • TFTP-Server
  • Gesprächsserver

9- Überprüfen Sie auf offene Ports

Das Identifizieren offener Verbindungen zum Internet ist eine wichtige Aufgabe. In Kali Linux verwende ich den folgenden Befehl, um versteckte offene Ports zu erkennen:

10- Secure SSH

Ja, SSH ist zwar sicher, aber Sie müssen diesen Dienst auch härten. Vor allem, wenn Sie SSH deaktivieren können, ist das ein Problem gelöst. Wenn Sie es jedoch verwenden möchten, müssen Sie die Standardkonfiguration von SSH ändern. Navigieren Sie dazu zu / etc / ssh und öffnen Sie die Datei „sshd_config“ mit Ihrem bevorzugten Texteditor.

  • Ändern Sie die Standardportnummer 22 in etwas anderes, z. B. 99.
  • Stellen Sie sicher, dass root sich nicht remote über SSH anmelden kann:

PermitRootLogin no

  • Bestimmten Benutzern erlauben:

AllowUsers

Die Liste kann weiter und weiter gehen, aber diese sollten ausreichen, um damit zu beginnen. Einige Unternehmen fügen beispielsweise Banner hinzu, um Angreifer abzuschrecken und sie davon abzuhalten, weiterzumachen. Ich empfehle Ihnen, das Handbuch des SSH zu überprüfen, um alle Konfigurationen in dieser Datei zu verstehen, oder Sie können diese Website für weitere Informationen besuchen.

Hier sind einige zusätzliche Optionen, die Sie sicherstellen müssen, dass sie in der Datei „sshd_config“ vorhanden sind:

  • Protocol2
  • IgnoreRhosts zu yes
  • HostbasedAuthentication nein
  • PermitEmptyPasswords nein
  • X11Forwarding nein
  • MaxAuthTries 5
  • Chiffren aes128-ctr, aes192-ctr,aes256-ctr
  • ClientAliveInterval 900
  • ClientAliveCountMax 0
  • UsePAM yes

Legen Sie abschließend die Berechtigungen für die Datei sshd_config so fest, dass nur Root-Benutzer deren Inhalt ändern können:

#chown root:root /etc/ssh/sshd_config

#chmod 600 /etc/ssh/sshd_config

11- Enable SELinux

Security Enhanced Linux ist ein Kernel-Sicherheitsmechanismus zur Unterstützung der Zugriffskontrollsicherheitsrichtlinie. Der SELinux verfügt über drei Konfigurationsmodi:

  • Disabled: Ausgeschaltet
  • Permissiv: Gibt Warnungen aus
  • Erzwingen: Richtlinie wird erzwungen

Öffnen Sie die Konfigurationsdatei mit einem Texteditor:

#nano /etc/selinux/config

Und stellen Sie sicher, dass die Richtlinie durchgesetzt wird:

SELINUX=enforcing

12- Netzwerkparameter

Die Sicherung Ihrer Linux-Host-Netzwerkaktivitäten ist eine wesentliche Aufgabe. Gehen Sie nicht immer davon aus, dass Ihre Firewall sich um alles kümmert. Hier sind einige wichtige Funktionen, die Sie zur Sicherung Ihres Host-Netzwerks berücksichtigen sollten:

– Deaktivieren Sie die IP-Weiterleitung, indem Sie das Netz einstellen.ipv4.ip_forward Parameter auf 0 in „/etc/sysctl.conf“

– Aktivieren Sie den Schutz vor fehlerhaften Fehlermeldungen, indem Sie das Netz festlegen.ipv4.icmp_ignore_bogus_error_responses Parameter auf 1 in „/ etc/sysctl.conf“

Ich empfehle dringend, die Linux-Firewall zu verwenden, indem Sie die iptable-Regeln anwenden und alle eingehenden, ausgehenden und weitergeleiteten Pakete filtern. Das Konfigurieren Ihrer iptables-Regeln wird einige Zeit dauern, aber es lohnt sich.

13- Kennwortrichtlinien

Benutzer verwenden ihre Kennwörter häufig erneut, was eine schlechte Sicherheitspraxis ist. Die alten Passwörter werden in der Datei „/etc/security/opasswd“ gespeichert. Wir werden das PAM-Modul verwenden, um die Sicherheitsrichtlinien des Linux-Hosts zu verwalten. Öffnen Sie unter einer Debian-Distribution die Datei „/etc/pam.d/common-password“ mit einem Texteditor und fügen Sie die folgenden zwei Zeilen:

auth sufficient pam_unix.so likeauth nullok

password sufficient pam_unix.so remember=4 ( Benutzer können die letzten vier Kennwörter nicht wiederverwenden.)

Eine weitere Kennwortrichtlinie, die erzwungen werden sollte, sind starke Kennwörter. Das PAM-Modul bietet eine pam_cracklib, die Ihren Server vor Wörterbuch- und Brute-Force-Angriffen schützt. Öffnen Sie dazu die Datei /etc/pam.d /system-auth mit einem beliebigen Texteditor und fügen Sie die folgende Zeile:

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

Linux wird das Passwort hashen, um zu vermeiden, dass es im Klartext gespeichert wird, also müssen Sie sicherstellen, dass Sie einen sicheren Passwort-Hashing-Algorithmus SHA512 definieren.

Eine weitere interessante Funktion besteht darin, das Konto nach fünf fehlgeschlagenen Versuchen zu sperren. Um dies zu ermöglichen, müssen Sie die Datei „/etc/pam.d/password-auth“ und fügen Sie die folgenden Zeilen hinzu:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth pam_unix.so

auth pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

Wir sind noch nicht fertig; Ein weiterer Schritt ist erforderlich. Öffnen Sie die Datei „/etc/pam.d / system-auth“ und stellen Sie sicher, dass Sie die folgenden Zeilen hinzugefügt haben:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth pam_unix.so

auth pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

Nach fünf fehlgeschlagenen Versuchen kann nur ein Administrator das Konto mit dem folgenden Befehl entsperren:

# /usr/sbin/faillock –user <userlocked> –reset

Eine weitere bewährte Methode besteht darin, das Kennwort so einzustellen, dass es nach 90 Tagen abläuft. Um diese Aufgabe zu erfüllen, müssen Sie:

  • Setzen Sie den Parameter PASS_MAX_DAYS in „/etc/login“ auf 90.defs“
  • Ändern Sie den aktiven Benutzer, indem Sie den folgenden Befehl ausführen :

#chage --maxdays 90 <user>

Der nächste Tipp zur Verbesserung der Kennwortrichtlinien besteht darin, den Zugriff auf den Befehl su einzuschränken, indem Sie die pam_wheel.so parameter in „/etc/pam.d/su“:

auth erforderlich pam_wheel.so use_uid

Der letzte Tipp für die Kennwortrichtlinie besteht darin, die Systemkonten für Nicht-Root-Benutzer mithilfe des folgenden Bash-Skripts zu deaktivieren:

#!/bin/bash

for user in `awk -F: '( < 500) {print }' /etc/passwd`; do

if

then

/usr/sbin/usermod -L $user

if && &&

then /usr/sbin/usermod -s /sbin/nologin $user

fi

fi

done

14- Berechtigungen und Überprüfungen

Bereiten Sie sich mental vor, da dies eine lange Liste sein wird. Berechtigungen sind jedoch eine der wichtigsten und kritischsten Aufgaben, um das Sicherheitsziel auf einem Linux-Host zu erreichen.

#chown root:root /etc/anacrontab

#chmod og-rwx /etc/anacrontab

#chown root:root /etc/crontab

#chmod og-rwx /etc/crontab

#chown root:root /etc/cron.hourly

#chmod og-rwx /etc/cron.hourly

#chown root:root /etc/cron.daily

#chmod og-rwx /etc/cron.daily

#chown root:root /etc/cron.weekly

#chmod og-rwx /etc/cron.weekly

#chown root:root /etc/cron.monthly

#chmod og-rwx /etc/cron.monthly

#chown root:root /etc/cron.d

#chmod og-rwx /etc/cron.d

Legen Sie das Recht und die Berechtigungen für „/ var / spool / cron“ für „root crontab“ fest“

#chown root:root <crontabfile>

#chmod og-rwx <crontabfile>

Benutzer- / Gruppenbesitzer und Berechtigung für die Datei „passwd“ festlegen

#chmod 644 /etc/passwd

#chown root:root /etc/passwd

Benutzer-/Gruppenbesitzer und Berechtigung festlegen in der Datei „Gruppe“

#chmod 644 /etc/group

#chown root:root /etc/group

Benutzer- / Gruppenbesitzer und Berechtigung für die Datei „Shadow“ festlegen

#chmod 600 /etc/shadow

#chown root:root /etc/shadow

Benutzer- / Gruppenbesitzer und Berechtigung für die Datei „gshadow“ festlegen

#chmod 600 /etc/gshadow

#chown root:root /etc/gshadow

15- Zusätzliche Prozesshärtung

Für diesen letzten Punkt in der Liste füge ich einige zusätzliche Tipps hinzu, die beim Härten eines Linux-Hosts berücksichtigt werden sollten.

Beschränken Sie zunächst Core-Dumps durch:

  • Hinzufügen von Hard Core 0 zu den „/ etc / security / limits.conf“ Datei
  • fs hinzufügen.suid_dumpable = 0 auf die „/etc/sysctl.conf“ Datei

Zweitens konfigurieren Sie Exec Shield durch:

  • Kernel hinzufügen.exec-shield = 1 auf die „/etc/sysctl.conf“-Datei

Aktivieren Sie drittens die Platzierung randomisierter virtueller Speicherbereiche durch:

  • Kernel hinzufügen.randomize_va_space = 2 auf die „/etc/sysctl.conf“ Datei

Abschließende Worte

In diesem kurzen Beitrag haben wir viele wichtige Konfigurationen für die Linux-Sicherheit behandelt. Aber wir haben gerade die Oberfläche der Linux-Härtung zerkratzt – es gibt viele komplexe, Nitty-Gritty-Konfigurationen. Um mehr darüber zu erfahren, wie Sie Ihre Linux-Server für eine bessere Sicherheit härten können, lesen Sie meine Kurse zu Pluralsight.

Gus Khawaja ist Sicherheitsberater und Autor bei Pluralsight. Er arbeitet in den Bereichen Sicherheit, IT und Entwicklung von Webanwendungen und erstellt Kurse für Pluralsight. Gus hat erfolgreich IT-Lösungen für Unternehmen in ganz Kanada geliefert und entwickelt. Nach langjähriger Erfahrung in der Informatik hat er sich der Cybersicherheit und der Bedeutung, die Sicherheit für dieses Minenfeld hat, zugewandt. Seine Leidenschaft für ethisches Hacken vermischt mit seinem Hintergrund in der Programmierung und IT machen ihn zu einem klugen Schweizer Taschenmesser-Profi auf dem Gebiet der Informatik.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.