Website-Suche

23 Sicherheitstipps zur Härtung von CentOS-Servern – Teil 2


In Fortsetzung des vorherigen Tutorials zum Sichern und Härten des CentOS-Servers besprechen wir in diesem Artikel weitere Sicherheitstipps, die in der folgenden Checkliste aufgeführt werden.

Anforderungen

  1. 20 Sicherheitstipps zur Härtung von CentOS-Servern – Teil 1

21. Deaktivieren Sie nutzlose SUID- und SGID-Befehle

Wenn die Bits setuid und setgid in Binärprogrammen gesetzt sind, können diese Befehle Aufgaben mit anderen Benutzer- oder Gruppenrechten ausführen, beispielsweise mit root-Berechtigungen kann schwerwiegende Sicherheitsprobleme aufdecken.

Bei Pufferüberlaufangriffen können häufig solche ausführbaren Binärdateien ausgenutzt werden, um nicht autorisierten Code mit den Rechten eines Root-Power-Users auszuführen.

find /  -path /proc -prune -o -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;

Um das setuid-Bit zu deaktivieren, führen Sie den folgenden Befehl aus:

chmod u-s /path/to/binary_file

Um das setgid-Bit zu deaktivieren, führen Sie den folgenden Befehl aus:

chmod g-s /path/to/binary_file

22. Suchen Sie nach nicht besessenen Dateien und Verzeichnissen

Dateien oder Verzeichnisse, die keinem gültigen Konto gehören, müssen gelöscht oder mit Berechtigungen eines Benutzers und einer Gruppe zugewiesen werden.

Geben Sie den folgenden Suchbefehl ein, um Dateien oder Verzeichnisse ohne Benutzer und Gruppe aufzulisten.

find / -nouser -o -nogroup -exec ls -l {} \;

23. Listen Sie weltweit beschreibbare Dateien auf

Das Behalten einer unbeschreibbaren Datei auf dem System kann gefährlich sein, da sie von jedem geändert werden kann. Führen Sie den folgenden Befehl aus, um Word-schreibbare Dateien anzuzeigen, mit Ausnahme von Symlinks, die immer weltweit schreibbar sind.

find / -path /proc -prune -o -perm -2 ! -type l –ls

24. Erstellen Sie sichere Passwörter

Erstellen Sie ein Passwort mit mindestens acht Zeichen. Das Passwort muss Ziffern, Sonderzeichen und Großbuchstaben enthalten. Verwenden Sie pwmake, um aus der Datei /dev/urandom ein 128-Bit-Passwort zu generieren.

pwmake 128

25. Wenden Sie die Richtlinie für sichere Passwörter an

Erzwingen Sie die Verwendung sicherer Passwörter durch das System, indem Sie die folgende Zeile in die Datei /etc/pam.d/passwd einfügen.

password required pam_pwquality.so retry=3

Wenn man die obige Zeile hinzufügt, darf das eingegebene Passwort nicht mehr als 3 Zeichen in einer monotonen Folge, wie z. B. abcd, und mehr als 3 identische aufeinanderfolgende Zeichen, wie z. B. , enthalten 1111.

Um Benutzer zu zwingen, ein Passwort mit einer Mindestlänge von 8 Zeichen zu verwenden, einschließlich aller Zeichenklassen, fügen Sie der Stärkeprüfung für Zeichenfolgen und aufeinanderfolgende Zeichen die folgenden Zeilen zu /etc/security hinzu /pwquality.conf-Datei.

minlen = 8
minclass = 4
maxsequence = 3
maxrepeat = 3

26. Nutzen Sie die Passwortalterung

Der Befehl chage kann für die Alterung von Benutzerkennwörtern verwendet werden. Um das Passwort eines Benutzers so festzulegen, dass es in 45 Tagen abläuft, verwenden Sie den folgenden Befehl:

chage -M 45 username

Um die Ablaufzeit des Passworts zu deaktivieren, verwenden Sie den folgenden Befehl:

chage -M -1 username

Erzwingen Sie den sofortigen Ablauf des Passworts (Benutzer muss das Passwort bei der nächsten Anmeldung ändern), indem Sie den folgenden Befehl ausführen:

chage -d 0 username

27. Konten sperren

Benutzerkonten können durch Ausführen des Befehls passwd oder usermod gesperrt werden:

passwd -l username
usermod -L username

Um Konten zu entsperren, verwenden Sie die Option -u für den Befehl passwd und die Option -U für usermod.

28. Verhindern Sie den Shell-Zugriff auf Konten

Um zu verhindern, dass ein Systemkonto (normales Konto oder Dienstkonto) Zugriff auf eine Bash-Shell erhält, ändern Sie die Root-Shell in /usr/sbin/nologin oder /bin/false Öffnen Sie die Datei /etc/passwd, indem Sie den folgenden Befehl ausführen:

usermod -s /bin/false username

Um die Shell beim Erstellen eines neuen Benutzers zu ändern, geben Sie den folgenden Befehl ein:

useradd -s /usr/sbin/nologin username

29. Sperren Sie die virtuelle Benutzerkonsole mit vlock

vlock ist ein Programm zum Sperren mehrerer Sitzungen auf der Linux-Konsole. Installieren Sie das Programm und beginnen Sie mit der Sperrung Ihrer Terminalsitzung, indem Sie die folgenden Befehle ausführen:

yum install vlock
vlock

30. Verwenden Sie ein zentrales System zur Verwaltung von Konten und Authentifizierung

Die Verwendung eines zentralisierten Authentifizierungssystems kann die Kontoverwaltung und -kontrolle erheblich vereinfachen. Dienste, die diese Art der Kontoverwaltung anbieten können, sind IPA Server, LDAP, Kerberos, Microsoft Active Directory, Nis, Samba ADS oder Winbind.

Einige dieser Dienste sind standardmäßig mit kryptografischen Protokollen und symmetrischer Schlüsselkryptografie wie Kerberos hochsicher.

31. Schreibgeschütztes Mounten von USB-Medien erzwingen

Mit dem Dienstprogramm blockdev können Sie erzwingen, dass alle Wechselmedien schreibgeschützt gemountet werden. Erstellen Sie beispielsweise eine neue udev-Konfigurationsdatei mit dem Namen 80-readonly-usb.rules im Verzeichnis /etc/udev/rules.d/ mit folgendem Inhalt:

SUBSYSTEM=="block",ATTRS{removable}=="1",RUN{program}="/sbin/blockdev --setro %N"

Wenden Sie dann die Regel mit dem folgenden Befehl an:

udevadm control -reload

32. Deaktivieren des Root-Zugriffs über TTY

Um zu verhindern, dass das Root-Konto die Systemanmeldung über alle Konsolengeräte (TTY) durchführt, löschen Sie den Inhalt der Securetty-Datei, indem Sie als Root die folgende Eingabeaufforderung im Terminal eingeben.

cp /etc/securetty /etc/securetty.bak
cat /dev/null > /etc/securetty

Denken Sie daran, dass diese Regel nicht für SSH-Anmeldesitzungen gilt
Um die Root-Anmeldung über SSH zu verhindern, bearbeiten Sie die Datei /etc/ssh/sshd_config und fügen Sie die folgende Zeile hinzu:

PermitRootLogin no

33. Verwenden Sie POSIX-ACLs, um Systemberechtigungen zu erweitern

Zugriffskontrolllisten können Zugriffsrechte für mehr als nur einen einzelnen Benutzer oder eine einzelne Gruppe definieren und Rechte für Programme, Prozesse, Dateien und Verzeichnisse festlegen. Wenn Sie ACL für ein Verzeichnis festlegen, erben seine Nachkommen automatisch dieselben Rechte.

Zum Beispiel,

setfacl -m u:user:rw file
getfacl file

34. Richten Sie SELinux im Enforce-Modus ein

Die SELinux-Erweiterung des Linux-Kernels implementiert die Mandatory Access Control (MAC)-Richtlinie, die es Benutzern ermöglicht, eine Sicherheitsrichtlinie zu definieren, die detaillierte Berechtigungen für alle Benutzer, Programme, Prozesse, Dateien und Geräte bereitstellt.

Die Zugriffskontrollentscheidungen des Kernels basieren auf dem gesamten sicherheitsrelevanten Kontext und nicht auf der authentifizierten Benutzeridentität.

Um den Selinux-Status abzurufen und die Richtlinie durchzusetzen, führen Sie die folgenden Befehle aus:

getenforce
setenforce 1
sestatus

35. Installieren Sie die zusätzlichen SELinux-Dienstprogramme

Installieren Sie das Paket policycoreutils-python, das zusätzliche Python-Dienstprogramme für den Betrieb von SELinux bereitstellt: audit2allow, audit2why, chcat und semanage.

Um alle booleschen Werte zusammen mit einer kurzen Beschreibung anzuzeigen, verwenden Sie den folgenden Befehl:

semanage boolean -l

Um beispielsweise den Wert von httpd_enable_ftp_server anzuzeigen und festzulegen, führen Sie den folgenden Befehl aus:

getsebool httpd_enable_ftp_server

Damit der Wert eines booleschen Werts auch bei Neustarts bestehen bleibt, geben Sie die Option -P für setsebool an, wie im folgenden Beispiel dargestellt:

setsebool -P httpd_enable_ftp_server on

36. Verwenden Sie einen zentralen Protokollserver

Konfigurieren Sie den rsyslog-Daemon, um Protokollmeldungen vertraulicher Dienstprogramme an einen zentralen Protokollserver zu senden. Überwachen Sie außerdem Protokolldateien mit Hilfe des Dienstprogramms logwatch.

Durch das Senden von Protokollnachrichten an einen Remote-Server wird sichergestellt, dass die böswilligen Benutzer ihre Aktivitäten nach einer Kompromittierung des Systems nicht vollständig verbergen können und immer Spuren in Remote-Protokolldateien hinterlassen.

37. Aktivieren Sie die Prozessabrechnung

Aktivieren Sie die Prozessabrechnung, indem Sie das Dienstprogramm psacct installieren und den Befehl lastcomm verwenden, um Informationen über zuvor ausgeführte Befehle anzuzeigen, wie sie in der Systemabrechnungsdatei aufgezeichnet sind, und sa, um Informationen über zuvor ausgeführte Befehle wie aufgezeichnet zusammenzufassen in der Systembuchhaltungsdatei.

38. Härtung von /etc/sysctl.conf

Verwenden Sie die folgenden Kernel-Parameterregeln, um das System zu schützen:

Quellrouting deaktivieren

net.ipv4.conf.all.accept_source_route=0

Deaktivieren Sie die IPv4-Weiterleitung

ipv4.conf.all.forwarding=0

Deaktivieren Sie IPv6

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Deaktivieren Sie die Annahme und das Senden von ICMP-umgeleiteten Paketen, sofern dies nicht ausdrücklich erforderlich ist.

net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.send_redirects=0

Deaktivieren Sie die Reverse-Path-Weiterleitung

net.ipv4.conf.all.rp_filter=2

Alle ICMP-Echoanfragen ignorieren (zum Aktivieren auf 1 setzen)

net.ipv4.icmp_echo_ignore_all = 0

39. Nutzen Sie VPN-Dienste, um über ungeschützte öffentliche Netzwerke auf Ihre Räumlichkeiten zuzugreifen

Nutzen Sie immer VPN-Dienste für Netzbetreiber, um über das Internet remote auf LAN-Gelände zuzugreifen. Solche Arten von Diensten können mit einer kostenlosen Open-Source-Lösung wie OpenVPN oder mit einer proprietären Lösung wie Cisco VPN (Befehlszeilenprogramm „vpnc installieren“ von Epel Repositories) konfiguriert werden.

40. Führen Sie einen externen Systemscan durch

Bewerten Sie die Sicherheit Ihres Systems auf Schwachstellen, indem Sie das System von Remote-Punkten über Ihr LAN mit spezifischen Tools scannen, wie zum Beispiel:

  1. Nmap – Netzwerkscanner 29 Beispiele für Nmap-Befehle
  2. Nessus – Sicherheitsscanner
  3. OpenVAS – wird zum Scannen nach Schwachstellen und für ein umfassendes Schwachstellenmanagement verwendet.
  4. Nikto – ein ausgezeichneter CGI-Skriptscanner (Common Gateway Interface), der Web-Schwachstellen in Linux scannt

41. System intern schützen

Nutzen Sie den internen Systemschutz vor Viren, Rootkits und Malware und installieren Sie als bewährte Methode Intrusion-Detection-Systeme, die nicht autorisierte Aktivitäten (DDOS-Angriffe, Port-Scans) erkennen können, wie zum Beispiel:

  1. AIDE – Advanced Intrusion Detection Environment – http://aide.sourceforge.net/
  2. ClamAV – Antiviren-Scanner https://www.clamav.net
  3. Rkhunter – Rootkit-Scanner
  4. Lynis – Sicherheitsüberwachungs- und Scan-Tool für Linux
  5. Tripwire – Sicherheit und Datenintegrität http://www.tripwire.com/
  6. Fail2Ban – Intrusion Network Prevention
  7. OSSEC – (HIDS) Host-basiertes Intrusion Detection System http://ossec.github.io/
  8. Mod_Security – Schützen Sie Brute-Force- oder DDoS-Angriffe

42. Benutzerumgebungsvariablen ändern

Hängen Sie das Format Datum und Uhrzeit an, um die Befehlsausführung zu speichern, indem Sie den folgenden Befehl ausgeben:

echo 'HISTTIMEFORMAT="%d/%m/%y  %T  "' >> .bashrc'

Erzwingen Sie die sofortige Aufzeichnung von HISTFILE bei jeder Eingabe eines Befehls (anstelle einer Abmeldung):

echo ‘PROMPT_COMMAND="history -a"’ >> .bashrc

Begrenzen Sie die Timeout-Anmeldesitzung. Die Shell wird automatisch abgebaut, wenn während einer Leerlaufzeit keine Aktivität ausgeführt wird. Sehr nützlich, um SSH-Sitzungen automatisch zu trennen.

echo ‘TMOUT=120’ >> .bashrc

Wenden Sie alle Regeln an, indem Sie Folgendes ausführen:

source .bashrc

43. Sicherungsdaten

Verwenden Sie Backup-Dienstprogramme wie tar, cat, rsync, scp, LVM-Snapshots usw., um für den Fall eines Systemausfalls eine Kopie Ihres Systems, vorzugsweise extern, zu speichern.

Wenn das System kompromittiert wird, können Sie eine Datenwiederherstellung aus früheren Sicherungen durchführen.

Vergessen Sie nicht, dass Sie, egal wie viele Sicherheitsmaßnahmen und Gegenmaßnahmen Sie ergreifen, um Ihr System zu schützen, nie 100 % sicher sein werden, solange Ihr Gerät angeschlossen und eingeschaltet ist.