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
- 2- BIOS-Schutz
- 3-Festplattenverschlüsselung (Vertraulichkeit)
- 4- Festplattenschutz (Verfügbarkeit)
- 5- Sperren des Bootverzeichnisses
- 6- Deaktivieren Sie die USB-Nutzung
- 7- System Update
- 8- Überprüfen Sie die installierten Pakete
- 9- Überprüfen Sie auf offene Ports
- 10- Secure SSH
- 11- Enable SELinux
- 12- Netzwerkparameter
- 13- Kennwortrichtlinien
- 14- Berechtigungen und Überprüfungen
- 15- Zusätzliche Prozesshärtung
- Abschließende Worte
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.