Wir haben Verschlüsselung und sicheren Fernzugriff als Methoden zur Sicherung und Absicherung von Linux untersucht. Verschlüsselung macht Daten ohne den Entschlüsselungsschlüssel unlesbar. In dem Szenario, in dem ein Angreifer vollständigen physischen Zugriff auf Ihren Laptop hat, beispielsweise indem er ihn stiehlt, möchten wir sicherstellen, dass er ihm keinen Nutzen bringt. Ein Festplattenlaufwerk voller verschlüsselter Daten sollte so gut sein wie ein beschädigtes. Wenn Sie Ihr Linux-System mit SSH für die Fernverwaltung einrichten, machen Sie Ihre Linux-Box auch für alle interessierten Parteien verfügbar. Viele böswillige Hacker suchen im Internet nach lauschenden SSH-Servern und beginnen, die Anmeldeinformationen zu erraten; normalerweise versuchen sie es mit root und den gängigsten Passwörtern. Dies war Teil von TryHackMe Linux-Systemhärtung
Holen Sie sich Blue Team Notes
Verschlüsselung
Durch Verschlüsselung werden Daten ohne den Entschlüsselungsschlüssel unlesbar. In einem Szenario, in dem ein Angreifer beispielsweise durch Diebstahl vollständigen physischen Zugriff auf Ihren Laptop hat, möchten wir sicherstellen, dass er ihm keinen Nutzen bringt. Ein Festplattenlaufwerk voller verschlüsselter Daten sollte genauso gut sein wie ein beschädigtes.
Es gibt verschiedene Softwaresysteme und Tools, die eine Verschlüsselung ermöglichen Linux Systeme. Da viele moderne Linux-Distributionen mit LUKS (Linux Unified Key Setup) ausgeliefert werden, wollen wir genauer darauf eingehen.
Wir verfügen über folgende Fachgebiete:
- LUKS phdr: Es steht für LUKS Partitionsheader. LUKS phdr speichert Informationen über die UUID (Universally Unique Identifier), die verwendete Verschlüsselung, den Verschlüsselungsmodus, die Schlüssellänge und die Prüfsumme des Hauptschlüssels.
- KM: KM steht für Wichtiges Material, wo wir KM1, KM2, …, KM8 haben. Jeder Schlüsselmaterialabschnitt ist mit einem Schlüsselschlitz verknüpft, der als aktiv angezeigt werden kann in LUKS phdr. Wenn der Schlüsselsteckplatz aktiv ist, enthält der zugehörige Schlüsselmaterialabschnitt eine Kopie des Hauptschlüssels, der mit dem Kennwort eines Benutzers verschlüsselt ist. Mit anderen Worten: Wir könnten den Hauptschlüssel mit dem Kennwort des ersten Benutzers verschlüsselt und in KM1 gespeichert haben, mit dem Kennwort des zweiten Benutzers verschlüsselt und in KM2 gespeichert haben und so weiter.
- Massendaten: Hiermit sind die mit dem Hauptschlüssel verschlüsselten Daten gemeint. Der Hauptschlüssel wird in einem Schlüsselmaterialabschnitt gespeichert und mit dem Kennwort des Benutzers verschlüsselt.
LUKS verwendet vorhandene Blockverschlüsselungsimplementierungen wieder. Der Pseudocode zum Verschlüsseln von Daten verwendet die folgende Syntax:
enc_data = verschlüsseln(Chiffrename, Chiffremodus, Schlüssel, Original, Originallänge)
Wie wir sehen können, LUKS funktioniert mit verschiedenen Chiffren und Verschlüsselungsmodi. Original bezieht sich auf die Klartextdaten der Länge, ursprüngliche_länge. Das vom Benutzer bereitgestellte Passwort wird verwendet, um den Verschlüsselungsschlüssel abzuleiten. Der Schlüssel wird mithilfe der passwortbasierten Schlüsselableitungsfunktion 2 (PBKDF2) abgeleitet.
Schlüssel = PBKDF2(Passwort, Salt, Iterationszahl, Länge des abgeleiteten Schlüssels)
Verwendung einer Salz mit einer Hash-Funktion, die eine Iterationsanzahl stellt sicher, dass der resultierende Schlüssel sicher genug für die Verschlüsselung ist. Weitere Informationen finden Sie im Einführung in die Kryptographie Zimmer.
Um Daten zu entschlüsseln und den ursprünglichen Klartext wiederherzustellen, LUKS verwendet die folgende Syntax:
original = entschlüsseln(Chiffrename, Chiffremodus, Schlüssel, Verschlüsselungsdaten, Originallänge)
Bei den meisten Distributionen können Sie ein Laufwerk über eine grafische Oberfläche verschlüsseln. Wenn Sie jedoch LUKS Von der Befehlszeile aus sind die Schritte etwa diese:
- Installieren
cryptsetup-luks
. (Sie könnenapt installiere Cryptsetup
,yum installiere cryptsetup-luks
oderdnf installiere Cryptsetup-luks
für Ubuntu/Debian, RHEL/Cent Betriebssystem, bzw. Fedora.) - Bestätigen Sie den Partitionsnamen mit
fdisk -l
,lsblk
oderschwarzkind
. (Erstellen Sie eine Partition mitfdisk
Falls benötigt.) - Einrichten der Partition für LUKS Verschlüsselung:
cryptsetup -y -v luksFormat /dev/sdb1
. (Ersetzen/dev/sdb1
durch den Namen der Partition, die Sie verschlüsseln möchten.) - Erstellen Sie eine Zuordnung für den Zugriff auf die Partition:
cryptsetup luksOpen /dev/sdb1 EDC-Laufwerk
. - Mapping-Details bestätigen:
ls -l /dev/mapper/EDCdrive
Undcryptsetup -v status EDCdrive
. - Vorhandene Daten mit Null überschreiben:
dd wenn=/dev/zero von=/dev/mapper/EDCdrive
. - Formatieren Sie die Partition:
mkfs.ext4 /dev/mapper/EDCdrive -L "Strategos USB"
. - Mounten Sie es und verwenden Sie es wie eine normale Partition:
mount /dev/mapper/EDCdrive /media/secure-USB
.
Wenn Sie die LUKS Einstellung können Sie den Befehl cryptsetup luksDump /dev/sdb1
. In der Terminalausgabe unten sehen wir die UUID der verschlüsselten Festplatte. Wir können auch sehen, dass die verwendete Chiffre aes-xts-plain64
. Was den Schlüssel betrifft, verwendete PBKDF2 SHA256 mit dem bereitgestellten Salt für 194180 Iterationen.
Sicherer Fernzugriff
Der Fernzugriff auf ein System ist eine sehr praktische Möglichkeit, auf Ihr System und Ihre Dateien zuzugreifen, wenn Sie nicht physisch an der Tastatur des Zielsystems anwesend sind. Dies bedeutet jedoch auch, dass Sie freiwillig einen Dienst bereitstellen, auf den Angreifer abzielen. Zu den häufigsten Angriffen gehören:
- Passwort-Sniffing
- Erraten von Passwörtern und Brute-Force-Angriffe
- Ausnutzen des Listening-Dienstes
Schutz vor Passwort-Sniffing
Der Fernzugriff kann über viele verschiedene Protokolle und Dienste erfolgen. Obwohl alle modernen Systeme verschlüsselte Protokolle verwenden, wie z. B. SSH Für den Fernzugriff verwenden ältere Systeme möglicherweise noch Klartextprotokolle, beispielsweise das Telnet-Protokoll.
Obwohl der Benutzer in der folgenden Abbildung ein sicheres Kennwort ausgewählt hat, wird es im Klartext gesendet, sodass es für jeden mit einem Paketerfassungstool über den Netzwerkpfad lesbar ist.
Es ist wichtig, dass Sie ein Protokoll auswählen, das den Datenverkehr verschlüsselt. SSH Das Protokoll gibt es seit mehr als zwei Jahrzehnten. Es hat sich bewährt. Es hat viele Einsatzmöglichkeiten, vom sicheren Fernzugriff bis hin zu sicheren Dateiübertragungen.
Schutz vor dem Erraten von Passwörtern
Wenn Sie Ihr Linux System mit SSH für die Remote-Verwaltung, machen Sie Ihre Linux-Box auch für alle interessierten Parteien verfügbar. Viele böswillige Hacker suchen im Internet nach lauschenden SSH-Servern und beginnen, die Anmeldeinformationen zu erraten; normalerweise versuchen sie Wurzel
mit den gebräuchlichsten Passwörtern.
Die folgende Abbildung zeigt, dass das System die SSH Protokoll, um verschlüsselte Kommunikation zu gewährleisten; die Authentifizierung basiert jedoch auf Anmeldeinformationen. Viele Benutzer sind versucht, schwache Passwörter zu verwenden oder dasselbe Passwort für andere Dienste wiederzuverwenden. Obwohl qwerty1234
Obwohl es nicht im englischen Wörterbuch steht, ist es häufig unter den 10 oder 20 am häufigsten verwendeten Passwörtern zu finden und somit leicht zu erraten.
Weil du SSH Der Server wird so konfiguriert, dass er 24 Stunden am Tag, 365 Tage im Jahr auf eingehende Verbindungen wartet. Böse Benutzer haben alle Zeit der Welt, ein Passwort nach dem anderen auszuprobieren. Es gibt ein paar Richtlinien, die Sie verwenden können:
- Deaktivieren Sie die Remote-Anmeldung als
Wurzel
; Anmeldung als Nicht-Root-Benutzer erzwingen. - Deaktivieren Sie die Kennwortauthentifizierung. Erzwingen Sie stattdessen die Authentifizierung mit öffentlichem Schlüssel.
Der Grund für die oben genannten Richtlinien ist, dass Sie nicht wollen, dass der Gegner in der Lage ist, die Wurzel
Konto direkt. Außerdem möchten Sie nicht, dass ein Angreifer Zugriff erhält, wenn das Passwort schwach ist, auch wenn es sich nicht um ein Root-Konto handelt.
Die Konfiguration des OpenSSH-Servers kann über den sshd_config
Datei, normalerweise gelegen unter /etc/ssh/sshd_config
. Sie können den Root-Login deaktivieren, indem Sie die folgende Zeile hinzufügen:
PermitRootLogin nein
Obwohl ein Passwort wie 9bNfX2gmDZ4o
ist schwer zu erraten, die meisten Benutzer finden es unbequem, es sich zu merken. Stellen Sie sich vor, das Konto gehört dem sudoers (Sudo
Gruppe), und der Benutzer muss dieses Passwort jedes Mal eingeben, wenn er einen Befehl mit Sudo
. Dazu müssen Sie vielleicht Disziplin aufbringen, aber Sie können nicht erwarten, dass es bei jedem funktioniert.
Viele Benutzer neigen dazu, ein benutzerfreundliches Passwort auszuwählen oder dasselbe Passwort für mehrere Konten zu verwenden. Beide Vorgehensweisen machen es dem Angreifer leichter, das Passwort zu erraten.
Am besten verlassen Sie sich auf die Public-Key-Authentifizierung mit SSH um die Sicherheit des Remote-Login-Systems zu verbessern und es so ausfallsicher wie möglich zu machen.
Wenn Sie noch kein SSH Schlüsselpaar müssen Sie den Befehl eingeben ssh-keygen -t rsa
. Es wird ein privater Schlüssel generiert, der gespeichert wird in id_rsa
und ein öffentlicher Schlüssel gespeichert in id_rsa.pub
.
Für die SSH Server, der Sie mit Ihrem öffentlichen Schlüssel anstelle Ihrer Passwörter authentifiziert, muss Ihr öffentlicher Schlüssel auf den Ziel-SSH-Server kopiert werden. Eine einfache Möglichkeit hierfür wäre die Ausgabe des Befehls ssh-copy-id Benutzername@Server
Wo Nutzername
ist Ihr Benutzername und Server
ist der Hostname oder die IP-Adresse des SSH Server.
Stellen Sie am besten sicher, dass Sie Zugriff auf das physische Terminal haben, bevor Sie die Kennwortauthentifizierung deaktivieren, um zu vermeiden, dass Sie sich aussperren. Möglicherweise müssen Sie sicherstellen, dass die folgenden beiden Zeilen in Ihrem sshd_config
Datei.
PubkeyAuthentifizierung ja
um die Authentifizierung mit öffentlichem Schlüssel zu aktivierenPasswortAuthentifizierung nein
um die Kennwortauthentifizierung zu deaktivieren
Raumantworten
Wofür steht PBKDF2?
Wir können keinen externen Speicher an den VM, deshalb haben wir eine /home/tryhackme/secretvault.img
Datei stattdessen. Sie ist mit dem Passwort verschlüsselt 2N9EdZYNkszEE3Ad
. Um darauf zuzugreifen, müssen Sie es öffnen mit Verschlüsselungssetup
und mounten Sie es dann in ein leeres Verzeichnis, wie zum Beispiel mein Tresor
. Was ist die Flagge im geheimen Tresor?
Was ist erlaubt UDP Hafen?
sshd_config
Datei?passwd
Datei und ändern Sie die Shell des Kontos. Welcher Wert wird für die Shell empfohlen?Wie lautet der Name der Sudoers-Gruppe der RedHat- und Fedora-Systeme?
Wie heißt die Sudoers-Gruppe auf Debian- und Ubuntu-Systemen?
Außer versuche mich
Und Ubuntu
, wie lautet der Benutzername, der zur Gruppe „sudoers“ gehört?
Welchen Befehl würden Sie verwenden, um ein modernes Fedora-System zu aktualisieren?
Welche zwei Befehle sind erforderlich, um ein Debian-System zu aktualisieren? (Verbinden Sie die beiden Befehle mit &&
.)
Was macht lecker
stehen für?
Was macht nicht bestanden
stehen für?
Welche Flagge versteckt sich im Quellenliste
Datei?
kern.log
?Mit welchem Befehl lassen sich die Zeilen anzeigen, die das Wort enthalten bestritten
in der Datei sicher
?
Video-Komplettlösung