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¶
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¶
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¶
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¶
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
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 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
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!
).