Zum Inhalt

Server-Sicherheit (Teil 2)

Letzte Aktualisierung: Mai 2022. Für fortgeschrittene BenutzerInnen. Solide technische Kenntnisse erforderlich.

Warnhinweis

Kein System ist sicher. Dies ist der zweite Teil zum Thema Serversicherheit. Es legt zwar fortgeschrittenere Maßnahmen zum Schutz Eures Ubuntu-Servers vor unmittelbaren Bedrohungen dar. Aber geschickte Hacker oder eine Organisation mit ausreichenden Ressourcen können vermutlich trotzdem einen Weg in Euer System finden.

Sudo-Privilegien

Privilegierter Zugang zu Eurem Server sollte wie nachfolgend beschrieben auf BenutzerInnen einer bestimmten Gruppe beschränkt werden.

Hier geht's zur Schritt-für-Schritt-Anleitung

Erstellt eine Gruppe namens sudousers und fügt die Benutzer gofossroot und gofossadmin hinzu (passt die Benutzernamen entsprechend an):

sudo groupadd sudousers
sudo usermod -a -G sudousers gofossroot
sudo usermod -a -G sudousers gofossadmin

Legt eine Sicherungskopie der sudoers-Konfigurationsdatei an. Sollte etwas schief gehen, könnt Ihr die ursprünglichen Einstellungen wiederherstellen:

sudo cp --archive /etc/sudoers /etc/sudoers-COPY-$(date +"%Y%m%d%H%M%S")

Öffnet die Konfigurationsdatei:

sudo vi /etc/sudoers

Fügt die folgende Zeile ein, falls nicht bereits vorhanden:

%sudousers   ALL=(ALL:ALL) ALL

Speichert und schließt die Datei (:wq!). Beschränkt schließlich mit dem folgenden Befehl den Zugang zu privilegierten Rechten auf die sudousers-Gruppe:

sudo dpkg-statoverride --update --add root sudousers 4750 /bin/su

Überprüft die Berechtigungen mit dem folgenden Befehl, die Zeichenfolge sudousers sollte angezeigt werden:

ls -lh /bin/su
Hier geht's zum 1-minütigen Zusammenfassungsvideo


Geschützte Prozesse

Geschützte Prozesse

Das /proc-Verzeichnis enthält unter Umständen schützenswerte Prozessinformationen. Standardmäßig können alle BenutzerInnen auf dieses Verzeichnis zugreifen. Mit den nachstehenden Anweisungen könnt Ihr Euren Server weiter absichern und vertrauliche Daten vor unbefugten Nutzern oder Programmen verbergen.

Hier geht's zur Schritt-für-Schritt-Anleitung

Legt eine Sicherungskopie der fstab-Konfigurationsdatei an. Sollte etwas schief gehen, könnt Ihr die ursprünglichen Einstellungen wiederherstellen:

sudo cp --preserve /etc/fstab /etc/fstab-COPY-$(date +"%Y%m%d%H%M%S")

Öffnet die Konfigurationsdatei:

sudo vi /etc/fstab

Fügt folgende Zeile am Ende der Datei ein, um Prozessinformationen auszublenden:

proc    /proc   proc    defaults,hidepid=2  0   0

Speichert und schließt die Datei (:wq!). Hängt schließlich das /proc-Verzeichnis mit folgendem Befehl erneut ein:

sudo mount -o remount,hidepid=2 /proc
Hier geht's zum 1-minütigen Zusammenfassungsvideo


Passwortsicherheit

Passwortsicherheit

Standardmäßig können BenutzerInnen jedes beliebige Passwort wählen. Hier erfahrt Ihr mehr darüber, wie Ihr sicherere Passwörter erzwingen bzw. Qualitätsanforderungen definieren könnt:

  • wie lange ein Passwort maximal verwendet werden darf
  • nach wie vielen Tagen ein Passwort frühestens abgeändert werden darf
  • die Mindestlänge eines Passworts
  • die Anzahl der zu verwendenden Groß- und Kleinbuchstaben sowie Ziffern
Hier geht's zur Schritt-für-Schritt-Anleitung

Kontoparameter konfigurieren

Legt eine Sicherungskopie der login.defs-Konfigurationsdatei an. Sollte etwas schief gehen, könnt Ihr die ursprünglichen Einstellungen wiederherstellen:

sudo cp --preserve /etc/login.defs /etc/login.defs-COPY-$(date +"%Y%m%d%H%M%S")

Öffnet die Konfigurationsdatei:

sudo vi /etc/login.defs

Ändert bzw. ergänzt die folgenden Parameter:

PASS_MAX_DAYS   365
PASS_MIN_DAYS   1
PASS_WARN_AGE   30
SHA_CRYPT_MIN_ROUNDS 1000000
SHA_CRYPT_MAX_ROUNDS 1000000

Speichert und schließt die Datei (:wq!).

Dieselben Einstellungen sollten auch auf die Administratoren gofossroot und gofossadmin angewendet werden, die vor der Verschärfung der Passwortregeln erstellt wurden (passt die Benutzernamen entsprechend an):

sudo chage -m 1 -M 365 -W 30 gofossroot
sudo chage -m 1 -M 365 -W 30 gofossadmin

Vergewissert Euch, dass alle Änderungen korrekt übernommen wurden:

sudo chage -l gofossroot
sudo chage -l gofossadmin

Ein paar Zusatzinformationen zu diesen Einstellungen:

Einstellungen Beschreibung
PASS_MAX_DAYS Maximale Anzahl von Tagen, die ein Passwort verwendet werden darf.
PASS_MIN_DAYS Mindestanzahl von Tagen zwischen Passwortänderungen.
PASS_WARN_AGE Anzahl der Tage vor Ablauf eines Passworts, in denen eine Warnung ausgegeben wird.
SHA_CRYPT_MIN_ROUNDS & SHA_CRYPT_MAX_ROUNDS Standardmäßig speichert Linux das Administratorkennwort mit einem einzelnen, gesicherten SHA-512-Hash. Nutzt mehrere Hash-Runden, um das Kennwort besser zu schützen.

PAM konfigurieren

Linux Pluggable Authentication Modules (PAM) ist ein umfangreiches Benutzerauthentifizierung-Verwaltungssystem. Das folgende PAM-Modul ermöglicht die Überprüfung der Passwortstärke:

sudo apt install libpam-cracklib

Legt eine Sicherungskopie der pam.d-Konfigurationsdatei an. Sollte etwas schief gehen, könnt Ihr die ursprünglichen Einstellungen wiederherstellen:

sudo cp --archive /etc/pam.d/common-password /etc/pam.d/common-password-COPY-$(date +"%Y%m%d%H%M%S")

Öffnet die Konfigurationsdatei:

sudo vi /etc/pam.d/common-password

Ändert bzw. ergänzt die folgenden Parameter:

password requisite pam_cracklib.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 difok=3 gecoschec

Fügt in folgender Zeile die Optionen shadow sowie eine erhöhte Anzahl von rounds hinzu:

password        [success=1 default=ignore]      pam_unix.so obscure use_authtok try_first_pass sha512 shadow rounds=1000000

Speichert und schließt die Datei (:wq!).

Ein paar Zusatzinformationen zu diesen Einstellungen:

Einstellung Beschreibung
retry = 3 BenutzerInnen werden 3 Mal gefragt, bevor eine Fehlermeldung angezeigt wird.
minlen = 10 Mindestlänge des Passworts.
ucredit = -1 Das Passwort muss mindestens einen Großbuchstaben enthalten.
lcredit = -1 Das Passwort muss mindestens einen Kleinbuchstaben enthalten.
dcredit = -1 Das Passwort muss mindestens eine Ziffer enthalten.
difok = 3 Mindestens 3 Zeichen des neuen Passworts dürfen nicht im alten Passwort verwendet worden sein.
gecoschec Passwörter, die das Benutzerkonto beinhalten, sind nicht zulässig.
shadow rounds=1000000 Standardmäßig speichert das pam_unix-Modul das Administratorkennwort mit einem einzelnen, gesicherten SHA-512-Hash. Nutzt mehrere Hash-Runden, um das Kennwort besser zu schützen.

Hier geht's zum 2-minütigen Zusammenfassungsvideo


Netzwerksicherheit

Netzwerksicherheit

Der Systemverwaltungsbefehl sysctl ermöglicht eine Feinabstimmung des Kernels und kann zur Verbesserung der Netzwerksicherheit verwendet werden. Mehr Details zum Thema findet Ihr im folgenden.

Hier geht's zur Schritt-für-Schritt-Anleitung

Legt eine Sicherungskopie der sysctl-Konfigurationsdatei an. Sollte etwas schief gehen, könnt Ihr die ursprünglichen Einstellungen wiederherstellen:

sudo cp --archive /etc/sysctl.conf /etc/sysctl.conf-COPY-$(date +"%Y%m%d%H%M%S")

Öffnet die Konfigurationsdatei:

sudo vi /etc/sysctl.conf

Löscht deren Inhalt durch Eingabe der Zeichenfolge :%d. Gebt anschließend die folgenden Zeilen ein bzw. kopiert/fügt diese in die Konfigurationsdatei ein:

# IP Spoofing protection
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Ignore ICMP broadcast requests
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Disable source packet routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0

# Block SYN attacks
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5

# Log Martians
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Ignore ICMP redirects
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0

# Ignore Directed pings
net.ipv4.icmp_echo_ignore_all = 1

Speichert und schließt die Datei (:wq!). Ladet schließlich die neuen Einstellungen:

sudo sysctl -p

Ein paar Zusatzinformationen zu diesen Sicherheitseinstellungen:

Einstellung Beschreibung
Enable IP spoofing protection Schützt Euch vor IP-Spoofing, bei dem Angreifer ihre IP-Adresse verschleiern, typischerweise bei Denial of Service (DoS) Angriffen.
Ignore ICMP broadcast requests Vermeidet, dass Euer Server an Smurf-Angriffen teilnimmt.
Ignore ICMP redirects Schützt Euch vor gefälschten ICMP-Umleitungspaketen, die von Angreifern verwendet werden, um einen Denial of Service (DoS) Angriff auszuführen.
Disable source packet routing Schützt Euch vor quell-geleiteten Paketen, die von Angreifern zur Verschleierung ihrer Identität und ihres Standorts verwendet werden
Block SYN attacks Schützt Euch vor SYN-Angriffen, einer Form von Denial of Service (DoS) Angriffen.
Log martians Schützt Euch vor sogenannten Mars-Paketen. Dies sind gefälschte Pakete mit einer offensichtlich falschen Quelladresse. Sie können bei Denial of Service (DoS) Angriffen zum Einsatz kommen.
Ignore directed pings Der Ping-Befehl kann verwendet werden, um den Verbindungsstatus mit Eurem Server zu überprüfen. Er kann aber auch zur Durchführung von Angriffen missbraucht werden.

Hier geht's zum 1-minütigen Zusammenfassungsvideo


Schutz vor Schadprogrammen und Viren

Schutz vor Schadprogrammen und Viren

Linux Malware Detect (LMD) und ClamAV sind quelloffene Antivirus- und Schadprogramm-Lösungen. Folgt den nachstehenden Anweisungen, um sie auf Eurem Server zu installieren und zu konfigurieren.

Hier geht's zur Schritt-für-Schritt-Anleitung

Schadprogramm-Scanner (LMD)

LMD kann mit den folgenden Befehlen installiert werden:

sudo apt install wget
sudo wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
sudo tar -xvf maldetect-current.tar.gz
cd maldetect-1.6.4
sudo ./install.sh

Legt eine Sicherungskopie der maldet-Konfigurationsdatei an. Sollte etwas schief gehen, könnt Ihr die ursprünglichen Einstellungen wiederherstellen:

sudo cp --archive /usr/local/maldetect/conf.maldet /usr/local/maldetect/conf.maldet-COPY-$(date +"%Y%m%d%H%M%S")

Öffnet die Konfigurationsdatei:

sudo vi /usr/local/maldetect/conf.maldet

Ändert bzw. ergänzt die folgenden Parameter (passt den Administrator-Namen gofossadmin entsprechend an):

#Sendet Ergebnisse der Schadprogramm-Prüfung an den lokalen Systemadministrator gofossadmin (entsprechend anpassen) in /var/mail/gofossadmin

email_alert="1"
email_addr="gofossadmin@localhost"

#In Quarantäne verschieben und Alarm schlagen, wenn Schadprogramme entdeckt werden
quarantine_hits="1"

#Saubere, auf Zeichenketten basierende Schadprogramm-Injektionen werden nicht automatisch gelöscht (vermeidet das Löschen von Dateien im Falle von Fehlalarmen)
quarantine_clean="0"

#Ermöglicht die Sperrung von Nutzern, die von Schadprogrammen betroffen sind
quarantine_suspend_user="1"

#Nutzt ClamAVs Suchmaschine für schnellere Ergebnisse
scan_clamscan="1"

#Root-Dateien durchsuchen
scan_ignore_root="0"

Speichert und schließt die Datei (:wq!). Bringt LMD auf den neuesten Stand und ladet die aktuellsten Schadprogramm-Definitionen herunter:

sudo maldet --update-ver
sudo maldet --update

Antivirus (ClamAV)

ClamAV kann mit den folgenden Befehlen installiert werden:

sudo apt install clamav

Vergewissert Euch, ob das Programm erfolgreich installiert wurde:

clamscan --version

Aktualisiert die Virensignaturdatenbank:

sudo systemctl stop clamav-freshclam
sudo freshclam
sudo systemctl start clamav-freshclam

Ermöglicht ClamAV nach jedem Neustart automatisch zu laden:

sudo systemctl enable clamav-freshclam

LMD und ClamAV testen

Lasst uns den Schadprogramm-Scanner und das Antivirus-Programm testen. Dazu verwenden wir Schadprogramm-Attrappen, die von der Europäischen Expertengruppe für IT-Sicherheit (EICAR) zur Verfügung gestellt werden. Ladet die Dateien wie folgt herunter:

cd /var/www/html
sudo wget http://www.eicar.org/download/eicar.com
sudo wget http://www.eicar.org/download/eicar.com.txt
sudo wget http://www.eicar.org/download/eicar_com.zip
sudo wget http://www.eicar.org/download/eicarcom2.zip

Verwendet ClamAV, um das Verzeichnis /var/www/html und alle Unterverzeichnisse rekursiv nach Viren zu durchsuchen:

sudo clamscan --recursive --infected /var/www/html

Die Terminal-Ausgabe sollte in etwa folgendermaßen aussehen:

/var/www/html/eicar_com.zip: Win.Test.EICAR_HDB-1 FOUND
/var/www/html/eicar.com: Win.Test.EICAR_HDB-1 FOUND
/var/www/html/eicarcom2.zip: Win.Test.EICAR_HDB-1 FOUND
/var/www/html/eicar.com.txt: Win.Test.EICAR_HDB-1 FOUND

----------- SCAN SUMMARY -----------
Known viruses: 6880642
Engine version: 0.102.2
Scanned directories: 1
Scanned files: 5
Infected files: 4
Data scanned: 0.01 MB
Data read: 0.01 MB (ratio 1.00:1)
Time: 54.632 sec (0 m 54 s)

Untersucht anschließend das gleiche Verzeichnis mit LMD auf Schadprogramme:

sudo maldet --scan-all /var/www/html

Die Ausgabe sollte eine Scan-ID enthalten, z.B. 200510-1954.2127. Der detaillierte Bericht kann mit dem folgenden Befehl eingesehen werden (passt die Scan-ID entsprechend an):

sudo maldet --report 200510-1954.2127

Eine Liste aller Scanberichte kann mit folgendem Befehl aufgerufen werden:

sudo maldet -e list

Entfernt schließlich alle unter Quarantäne gestellten Dateien:

sudo ls /usr/local/maldetect/quarantine/
sudo rm -rf /usr/local/maldetect/quarantine/*

LMD-Scans planen

Der Schadprogramm-Scanner LMD ist so konfiguriert, dass er täglich einen Cron-Job ausführt (/etc/cron.daily/maldet). Dieser Cron-Job aktualisiert die Schadprogramm-Datenbank und untersucht alle Heim-Verzeichnisse. Dies sollte für die meisten Anwendungsfälle ausreichend sein. Deaktiviert die Echtzeitüberwachung, um die Serverlast gering zu halten und zu vermeiden, dass alle 10 Minuten Scans laufen.

sudo rm /etc/cron.d/maldet_pub
sudo maldet -k

ClamAV-Scans planen

Die Virensignaturdatenbank wird durch den freshclam-Dienst aktualisiert. Standardmäßig geschieht dies stündlich, Ihr könnt die Häufigkeit in der Datei /etc/clamav/freshclam.conf ändern und den Dienst mit sudo service clamav-freshclam restart neu starten.

Damit Antiviren-Scans geplant werden können, muss erst einmal eine leere Protokolldatei angelegt:

sudo touch /var/log/clamav/clamscan.log

Erstellt nun einen Cron-Job, um jeden Tag nach Viren zu suchen:

sudo vi /etc/cron.daily/clamav

Fügt die folgenden Zeilen in die Datei ein:

#!/bin/sh

MYLOG=/var/log/clamav/clamscan.log
echo "Scanning for viruses at `date`" >> $MYLOG
clamscan --recursive --infected --max-filesize=100M --max-scansize=100M --exclude=/boot / >> $MYLOG 2>&1

Speichert und schließt die Datei (:wq!). Macht schließlich das Skript ausführbar:

sudo chmod +x /etc/cron.daily/clamav

Folgende Optionen zur Ausführung von clamscan-Skript können an Eure eigenen Bedürfnisse angepasst werden:

Einstellungen Beschreibung
--recursive Verzeichnisse und Unterverzeichnisse werden rekursiv auf Viren geprüft.
--infected Nur infizierte Dateien werden in den Scanbericht aufgenommen, nicht alle gescannten Dateien.
--max-filesize=100M, --max-scansize=100M Dateien von bis zu 100 MB werden gescannt. Standardmäßig scannt ClamAV keine Dateien, die größer als 20 MB sind.
--exclude=/boot Im obigen Beispiel haben wir das Verzeichnis /boot von der Überprüfung ausgeschlossen. Dies kann an Eure eigenen Bedürfnisse angepasst werden. Die Option kann auch mehrfach verwendet werden, um mehrere Verzeichnisse auszuschließen.
/ Dies ist das Verzeichnis, das ClamAV nach Viren durchsuchen soll. Im obigen Beispiel haben wir das gesamte Stammverzeichnis / gescannt. Das Zielverzeichnis könnt Ihr natürlich nach Euren eigenen Bedürfnissen anpassen.

Testet den Cron-Job. Habt ein wenig Geduld, je nach Größe der Zielverzeichnisse kann der Scan eine Weile dauern:

sudo bash /etc/cron.daily/clamav
sudo cat /var/log/clamav/clamscan.log

Die Terminalausgabe sollte in etwa so aussehen:

----------- SCAN SUMMARY -----------
Infected files: 0
Time: 54.052 sec (0 m 54 s)
Start Date: 2021:05:22 21:05:29
End Date:   2021:05:22 21:06:23
Hier geht's zum 4-minütigen Zusammenfassungsvideo


Berechtigungen

Datei- und Verzeichnisberechtigungen

Nachfolgend wird erklärt, wie Ihr unbefugten Zugriff auf System-Dateien einschränkt.

??? tip "Hier geht's zur Schritt-für-Schritt-Anleitung"´

```bash
sudo chmod 600 /etc/crontab
sudo chmod 600 /etc/ssh/sshd_config
sudo chmod 700 /etc/cron.d
sudo chmod 700 /etc/cron.daily
sudo chmod 700 /etc/cron.hourly
sudo chmod 700 /etc/cron.weekly
sudo chmod 700 /etc/cron.monthly
sudo chmod 750 /home/gofossroot
sudo chmod 750 /home/gofossadmin
```
Hier geht's zum 1-minütigen Zusammenfassungsvideo

Hier erfahrt Ihr mehr zu Linux-Berechtigungen

umask schränkt den Benutzerzugriff auf neu erstellte Dateien oder Verzeichnisse ein. Es gibt drei Benutzerklassen:

Benutzerklassen Beschreibung
User EigentümerIn der Datei oder des Verzeichnisses.
Group BenutzerInnen, die zu der Gruppe der Datei oder des Verzeichnisses gehören.
Others BenutzerInnen, die weder Eigentümer noch Mitglied der Gruppe der Datei oder des Verzeichnisses sind.

Zudem gibt es drei Zugangsbeschränkungen:

Zugangsbeschränkung Beschreibung Dezimalwert
Read ( r ) Datei oder Verzeichnis lesen bzw. anzeigen. 4
Write ( w ) Datei oder Verzeichnis bearbeiten bzw. ändern. 2
Execute ( x ) Datei oder Verzeichnis ausführen. 1

umask schränkt den Zugriff auf neu erstellte Dateien oder Verzeichnisse ein, indem die drei Dezimalwerte addiert werden:

umask Wert Zugangsbeschränkung
--- 0 = 0 + 0 + 0 Lesen, schreiben und ausführen erlaubt.
--x 1 = 0 + 0 + 1 Lesen und schreiben erlaubt, ausführen nicht.
-w- 2 = 0 + 2 + 0 Lesen und ausführen erlaubt, schreiben nicht.
-wx 3 = 0 + 2 + 1 Lesen erlaubt, schreiben und ausführen nicht.
r-- 4 = 4 + 0 + 0 Schreiben und ausführen erlaubt, lesen nicht.
r-x 5 = 4 + 0 + 1 Schreiben erlaubt, lesen und ausführen nicht.
rw- 6 = 4 + 2 + 0 Ausführen erlaubt, lesen und schreiben nicht.
rwx 7 = 4 + 2 + 1 Weder lesen, schreiben noch ausführen sind erlaubt.

umask besteht aus drei Werten, einen für jede Benutzerklasse. Wenn Ihr also zum Beispiel umask von 022 auf 027 ändert, wird verhindert, dass "andere (others)" Dateien und Verzeichnisse lesen, schreiben oder ausführen können:

Umask Beschränkungen für BenutzerInnen Beschränkungen für Gruppen Beschränkungen für Andere Resultierende Berechtigungen
022 --- -w- -w- • Der Eigentümer der Datei oder des Verzeichnisses kann lesen, schreiben und ausführen.
• Gruppenmitglieder der Datei oder des Verzeichnisses können lesen und ausführen, aber nicht schreiben.
• BenutzerInnen, die weder Eigentümer noch Mitglied der Gruppe der Datei oder des Verzeichnisses sind, können lesen und ausführen, aber nicht schreiben.
• Mit anderen Worten: Der Eigentümer der Datei oder des Verzeichnisses hat Vollzugriff, Gruppenmitglieder und Andere können nur lesen und ausführen.
027 --- -w- rwx • Der Eigentümer der Datei oder des Verzeichnisses kann lesen, schreiben und ausführen.
• Gruppenmitglieder der Datei oder des Verzeichnisses können lesen und ausführen, aber nicht schreiben.
• BenutzerInnen, die weder Eigentümer noch Mitglied der Gruppe der Datei oder des Verzeichnisses sind, können weder lesen, schreiben noch ausführen.
• Mit anderen Worten: Der Eigentümer der Datei oder des Verzeichnisses hat Vollzugriff, Gruppenmitglieder können nur lesen und ausführen, und andere haben keinen Zugriff.

In mehreren Kapiteln wird der chmod-Befehl verwendet, um Zugriffsrechte für Dateien oder Verzeichnisse festzulegen. Im Gegensatz zu umask, das die Standard-Einschränkungen für neu erstellte Dateien oder Verzeichnisse festlegt, definiert der chmod-Befehl Berechtigungen für vorhandene Dateien oder Verzeichnisse. Daher sind die Werte zwischen umask und chmod in gewisser Hinsicht symmetrisch.


Kerndumps

Kerndumps deaktivieren

Ein Kerndump ("core dump") ist eine Datei, die den Speicherzustand eines Programms im Falle eines Absturzes beinhaltet. Das ist z.B. für die Fehlersuche nützlich, kann aber gegebenenfalls sensible Daten preisgeben. Falls Ihr keine Fehlersuche betreibt empfehlen wir daher, Kerndumps zu deaktivieren. Untenstehend findet Ihr detaillierte Anweisungen.

Hier geht's zur Schritt-für-Schritt-Anleitung

Legt Sicherungskopien der Konfigurationsdateien an:

sudo cp --archive /etc/security/limits.conf /etc/security/limits.conf-COPY-$(date +"%Y%m%d%H%M%S")

sudo cp --archive /etc/sysctl.conf /etc/sysctl.conf-COPY-$(date +"%Y%m%d%H%M%S")

Öffnet die erste Konfigurationsdatei:

sudo vi /etc/security/limits.conf

Fügt folgende Zeilen am Ende der Datei ein:

* soft core 0
* hard core 0

Speichert und schließt die Datei (:wq!).

Öffnet die zweite Konfigurationsdatei:

sudo vi /etc/sysctl.conf

Fügt folgende Zeilen am Ende der Datei ein:

# Disable coredumps
fs.suid_dumpable=0

Speichert und schließt die Datei (:wq!). Übernehmt schließlich alle Änderungen:

sudo sysctl -p
Hier geht's zum 1-minütigen Zusammenfassungsvideo


Kernel-Module

Ungenutzte Kernel-Module deaktivieren

Der Linux-Kernel ist das Herzstück des Betriebssystems. Er steuert die Hardware, den Speicher, Aufgaben und Prozesse usw. Kernel-Module sind Programmbausteine, die die Funktionalität des Kernels erweitern, zum Beispiel um auf neue Hardware zuzugreifen. Allerdings können Kernel-Module auch missbraucht werden, um Schadprogramme zu laden oder sich unbefugten Zugriff auf den Server zu verschaffen. Um dies zu vermeiden, könnt Ihr das Aufrufen von nicht verwendeten Kernel-Modulen unterbinden.

Hier geht's zur Schritt-für-Schritt-Anleitung

Legt eine Sicherungskopie der Konfigurationsdatei an:

sudo cp --archive /etc/modprobe.d/blacklist.conf /etc/modprobe.d/blacklist.conf-COPY-$(date +"%Y%m%d%H%M%S")

Öffnet die Konfigurationsdatei:

sudo vi /etc/modprobe.d/blacklist.conf

Fügt folgende Zeilen am Ende der Datei ein::

# Instruct modprobe to force inactive modules to always fail loading
install cramfs /bin/false
install freevxfs /bin/false
install hfs /bin/false
install hfsplus /bin/false
install jffs2 /bin/false
install udf /bin/false

Speichert und schließt die Datei (:wq!).

Hier geht's zum 1-minütigen Zusammenfassungsvideo


Ubuntu server security