Website-Suche

25 Tipps zur Härtung der Sicherheit für Linux-Server


Alle sagen, dass Linux standardmäßig sicher ist, und stimmen in gewissem Maße zu (das sind umstrittene Themen). Linux verfügt jedoch standardmäßig über ein integriertes Sicherheitsmodell. Sie müssen es optimieren und an Ihre Bedürfnisse anpassen, um das System sicherer zu machen. Linux ist schwieriger zu verwalten, bietet aber mehr Flexibilität und Konfigurationsoptionen.

Ein System in einer Produktion vor den Händen von Hackern und Crackern zu schützen, ist eine herausfordernde Aufgabe für einen Systemadministrator. Dies ist unser erster Artikel zum Thema „So sichern Sie eine Linux-Box“ oder „Hardening a Linux Box“. In diesem Beitrag erklären wir 25 nützliche Tipps & Tricks zur Sicherung Ihres Linux-Systems. Ich hoffe, die folgenden Tipps und Tricks werden Ihnen dabei helfen, Ihr System besser zu schützen.

1. Physische Systemsicherheit

Konfigurieren Sie das BIOS, um das Booten von CD/DVD, externen Geräten und Diskettenlaufwerk im BIOS< zu deaktivieren. Aktivieren Sie als Nächstes das BIOS-Passwort und schützen Sie auch GRUB mit einem Passwort, um den physischen Zugriff auf Ihr System einzuschränken.

  1. Legen Sie ein GRUB-Passwort fest, um Linux-Server zu schützen

2. Festplattenpartitionen

Es ist wichtig, unterschiedliche Partitionen zu haben, um im Katastrophenfall eine höhere Datensicherheit zu gewährleisten. Durch die Erstellung verschiedener Partitionen können Daten getrennt und gruppiert werden. Wenn ein unerwarteter Unfall auftritt, werden nur die Daten dieser Partition beschädigt, während die Daten auf anderen Partitionen erhalten bleiben. Stellen Sie sicher, dass Sie über die folgenden separaten Partitionen verfügen und stellen Sie sicher, dass Anwendungen von Drittanbietern auf separaten Dateisystemen unter /opt installiert werden.

/
/boot
/usr
/var
/home
/tmp
/opt

3. Minimieren Sie Pakete, um die Schwachstelle zu minimieren

Möchten Sie wirklich, dass alle möglichen Dienste installiert werden? Es wird empfohlen, die Installation nutzloser Pakete zu vermeiden, um Schwachstellen in Paketen zu vermeiden. Dadurch kann das Risiko minimiert werden, dass die Beeinträchtigung eines Dienstes zur Beeinträchtigung anderer Dienste führt. Suchen und entfernen oder deaktivieren Sie unerwünschte Dienste vom Server, um Schwachstellen zu minimieren. Verwenden Sie den Befehl „chkconfig“, um Dienste herauszufinden, die auf Runlevel 3 ausgeführt werden.

/sbin/chkconfig --list |grep '3:on'

Wenn Sie feststellen, dass unerwünschte Dienste ausgeführt werden, deaktivieren Sie diese mit dem folgenden Befehl.

chkconfig serviceName off

Verwenden Sie den RPM-Paketmanager wie „yum“ oder „apt-get“, um alle auf einem System installierten Pakete aufzulisten und sie mit zu entfernen den folgenden Befehl.

yum -y remove package-name
sudo apt-get remove package-name
  1. 5 chkconfig-Befehlsbeispiele
  2. 20 praktische Beispiele für RPM-Befehle
  3. 20 Linux YUM-Befehle für die Linux-Paketverwaltung
  4. 25 APT-GET- und APT-CACHE-Befehle zur Verwaltung der Paketverwaltung

4. Überprüfen Sie die Listening-Netzwerkports

Mit Hilfe des Netzwerkbefehls „netstat“ können Sie alle offenen Ports und zugehörigen Programme anzeigen. Wie ich oben sagte, verwenden Sie den Befehl „chkconfig“, um alle unerwünschten Netzwerkdienste vom System zu deaktivieren.

netstat -tulpn
  1. 20 Netstat-Befehle für die Netzwerkverwaltung unter Linux

5. Verwenden Sie Secure Shell (SSH)

Die Protokolle Telnet und rlogin verwenden Klartext und kein verschlüsseltes Format, was eine Sicherheitslücke darstellt. SSH ist ein sicheres Protokoll, das bei der Kommunikation mit dem Server Verschlüsselungstechnologie verwendet.

Melden Sie sich niemals direkt als root an, es sei denn, dies ist erforderlich. Verwenden Sie „sudo“, um Befehle auszuführen. sudo sind in der Datei /etc/sudoers angegeben und können auch mit dem Dienstprogramm „visudo“ bearbeitet werden, das im VI-Editor geöffnet wird.

Es wird außerdem empfohlen, die Standardportnummer SSH 22 durch eine andere Portnummer höherer Ebene zu ändern. Öffnen Sie die SSH-Hauptkonfigurationsdatei und legen Sie einige folgende Parameter fest, um den Benutzerzugriff einzuschränken.

vi /etc/ssh/sshd_config
Deaktivieren Sie die Root-Anmeldung
PermitRootLogin no
Lassen Sie nur bestimmte Benutzer zu
AllowUsers username
Verwenden Sie die SSH-Protokoll-2-Version
Protocol 2
  1. 5 Best Practices zum Sichern und Schützen von SSH-Servern

6. Halten Sie das System auf dem neuesten Stand

Halten Sie das System immer mit den neuesten Patches, Sicherheitsfixes und dem Kernel auf dem neuesten Stand, sofern verfügbar.

yum updates
yum check-update

7. Cronjobs sperren

Cron verfügt über eine eigene integrierte Funktion, mit der Sie festlegen können, wer Jobs ausführen darf und wer nicht. Dies wird durch die Verwendung von Dateien namens /etc/cron.allow und /etc/cron.deny gesteuert. Um einen Benutzer mit cron zu sperren, fügen Sie einfach Benutzernamen in cron.deny hinzu und fügen Sie in der Datei cron.allow hinzu, damit ein Benutzer cron ausführen kann. Wenn Sie die Verwendung von Cron durch alle Benutzer deaktivieren möchten, fügen Sie der Datei cron.deny die Zeile „ALL“ hinzu.

echo ALL >>/etc/cron.deny
  1. 11 Cron-Planungsbeispiele unter Linux

8. Deaktivieren Sie die USB-Stick-Erkennung

Es kommt oft vor, dass wir Benutzern die Verwendung von USB-Sticks in Systemen verbieten wollen, um Daten vor Diebstahl zu schützen. Erstellen Sie eine Datei „/etc/modprobe.d/no-usb“. Wenn Sie die folgende Zeile hinzufügen, wird kein USB-Speicher erkannt.

install usb-storage /bin/true

9. Schalten Sie SELinux ein

Security-Enhanced Linux (SELinux) ist ein obligatorischer Sicherheitsmechanismus für die Zugriffskontrolle, der im Kernel bereitgestellt wird. Das Deaktivieren von SELinux bedeutet, dass der Sicherheitsmechanismus vom System entfernt wird. Überlegen Sie es sich vor dem Entfernen noch einmal: Wenn Ihr System mit dem Internet verbunden ist und für die Öffentlichkeit zugänglich ist, dann denken Sie noch einmal darüber nach.

SELinux bietet drei grundlegende Betriebsmodi und das sind sie auch.

  1. Erzwingen: Dies ist der Standardmodus, der die SELinux-Sicherheitsrichtlinie auf dem Computer aktiviert und durchsetzt.
  2. Permissiv: In diesem Modus erzwingt SELinux die Sicherheitsrichtlinie nicht auf dem System, sondern warnt nur und protokolliert Aktionen. Dieser Modus ist sehr nützlich bei der Fehlerbehebung bei SELinux-Problemen.
  3. Deaktiviert: SELinux ist ausgeschaltet.

Sie können den aktuellen Status des SELinux-Modus über die Befehlszeile mit „system-config-selinux“, „getenforce“ oder „“ anzeigen sestatus'-Befehle.

sestatus

Wenn es deaktiviert ist, aktivieren Sie SELinux mit dem folgenden Befehl.

setenforce enforcing

Es kann auch über die Datei „/etc/selinux/config“ verwaltet werden, wo Sie es aktivieren oder deaktivieren können.

10. Entfernen Sie KDE/GNOME-Desktops

Es ist nicht erforderlich, X Window-Desktops wie KDE oder GNOME auf Ihrem dedizierten LAMP-Server auszuführen. Sie können sie entfernen oder deaktivieren, um die Sicherheit des Servers und die Leistung zu erhöhen. Zum Deaktivieren öffnen Sie einfach die Datei „/etc/inittab“ und setzen die Ausführungsebene auf 3. Wenn Sie es vollständig aus dem System entfernen möchten, verwenden Sie den folgenden Befehl.

yum groupremove "X Window System"

11. Schalten Sie IPv6 aus

Wenn Sie kein IPv6-Protokoll verwenden, sollten Sie es deaktivieren, da die meisten Anwendungen oder Richtlinien kein IPv6-Protokoll erfordern und es derzeit auch nicht auf dem Server erforderlich ist . Gehen Sie zur Netzwerkkonfigurationsdatei und fügen Sie die folgenden Zeilen hinzu, um sie zu deaktivieren.

vi /etc/sysconfig/network
NETWORKING_IPV6=no
IPV6INIT=no

12. Beschränken Sie Benutzer auf die Verwendung alter Passwörter

Dies ist sehr nützlich, wenn Sie Benutzern die Verwendung derselben alten Passwörter verbieten möchten. Die alte Passwortdatei befindet sich unter /etc/security/opasswd. Dies kann durch die Verwendung des PAM-Moduls erreicht werden.

Öffnen Sie die Datei „/etc/pam.d/system-auth“ unter RHEL/CentOS/Fedora.

vi /etc/pam.d/system-auth

Öffnen Sie die Datei ‘/etc/pam.d/common-password‘ unter Ubuntu/Debian/Linux Mint.

vi /etc/pam.d/common-password

Fügen Sie die folgende Zeile zum Abschnitt „auth“ hinzu.

auth        sufficient    pam_unix.so likeauth nullok

Fügen Sie die folgende Zeile zum Abschnitt „Passwort“ hinzu, um einem Benutzer die Wiederverwendung der letzten 5 seines Passworts zu verbieten.

password   sufficient    pam_unix.so nullok use_authtok md5 shadow remember=5

Nur die letzten 5 Passwörter werden vom Server gespeichert. Wenn Sie versucht haben, eines der letzten 5 alten Passwörter zu verwenden, erhalten Sie eine Fehlermeldung wie.

Password has been already used. Choose another.

13. So überprüfen Sie den Ablauf des Passworts des Benutzers

Unter Linux werden Benutzerkennwörter in verschlüsselter Form in der Datei „/etc/shadow“ gespeichert. Um den Ablauf des Passworts des Benutzers zu überprüfen, müssen Sie den Befehl „chage“ verwenden. Es zeigt Informationen zum Ablauf des Passworts sowie das Datum der letzten Passwortänderung an. Anhand dieser Angaben entscheidet das System, wann ein Benutzer sein Passwort ändern muss.

Um die Alterungsinformationen eines vorhandenen Benutzers wie Ablaufdatum und Uhrzeit anzuzeigen, verwenden Sie den folgenden Befehl.

#chage -l username

Um die Kennwortalterung eines beliebigen Benutzers zu ändern, verwenden Sie den folgenden Befehl.

#chage -M 60 username
#chage -M 60 -m 7 -W 7 userName
Parameter
  1. -M Legen Sie die maximale Anzahl an Tagen fest
  2. -m Mindestanzahl an Tagen festlegen
  3. -W Legen Sie die Anzahl der Tage der Warnung fest

14. Konto manuell sperren und entsperren

Die Funktionen zum Sperren und Entsperren sind sehr nützlich. Anstatt ein Konto aus dem System zu entfernen, können Sie es für eine Woche oder einen Monat sperren. Um einen bestimmten Benutzer zu sperren, können Sie den folgenden Befehl verwenden.

passwd -l accountName

Hinweis: Der gesperrte Benutzer ist weiterhin nur für Root-Benutzer verfügbar. Die Sperrung erfolgt durch Ersetzen des verschlüsselten Passworts durch eine (!)-Zeichenfolge. Wenn jemand versucht, mit diesem Konto auf das System zuzugreifen, wird eine Fehlermeldung ähnlich der folgenden angezeigt.

su - accountName
This account is currently not available.

Um ein gesperrtes Konto zu entsperren oder den Zugriff darauf zu ermöglichen, verwenden Sie den Befehl as. Dadurch wird die Zeichenfolge (!) mit dem verschlüsselten Passwort entfernt.

passwd -u accountName

15. Durchsetzung stärkerer Passwörter

Eine Reihe von Benutzern verwenden weiche oder schwache Passwörter und ihr Passwort könnte durch Wörterbuch-basierte oder Brute-Force-Angriffe gehackt werden. Das Modul „pam_cracklib“ ist im Modulstapel PAM (Pluggable Authentication Modules) verfügbar, das den Benutzer dazu zwingt, sichere Passwörter festzulegen. Öffnen Sie die folgende Datei mit einem Editor.

Lesen Sie auch:

vi /etc/pam.d/system-auth

Und fügen Sie eine Zeile mit Kreditparametern wie (lcredit, ucredit, dcredit und/oder ocredit jeweils in Kleinbuchstaben hinzu , Großbuchstaben, Ziffern und andere)

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

16. Iptables (Firewall) aktivieren

Es wird dringend empfohlen, die Linux-Firewall zu aktivieren, um den unbefugten Zugriff auf Ihre Server zu schützen. Wenden Sie Regeln in iptables an, um eingehende, ausgehende und weitergeleitete Pakete zu filtern. Wir können die Quell- und Zieladresse angeben, die in einer bestimmten udp/tcp-Portnummer zugelassen oder verweigert werden soll.

  1. Grundlegende IPTables-Anleitung und Tipps

17. Deaktivieren Sie Strg+Alt+Entf in Inittab

Bei den meisten Linux-Distributionen führt das Drücken von „STRG-ALT-ENTF“ dazu, dass Ihr System neu gestartet wird. Daher ist es keine gute Idee, diese Option zumindest auf Produktionsservern zu aktivieren, falls jemand dies versehentlich tut.

Dies ist in der Datei „/etc/inittab“ definiert. Wenn Sie in dieser Datei genau hinsehen, werden Sie eine Zeile ähnlich der folgenden sehen. Standardmäßig ist die Zeile nicht auskommentiert. Wir müssen es auskommentieren. Durch diese spezielle Tastenfolge-Signalisierung wird ein System heruntergefahren.

Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

18. Konten auf leere Passwörter prüfen

Jedes Konto mit einem leeren Passwort bedeutet, dass es für unbefugten Zugriff im Web geöffnet ist und Teil der Sicherheit innerhalb eines Linux-Servers ist. Sie müssen daher sicherstellen, dass alle Konten über sichere Passwörter verfügen und niemand autorisierten Zugriff hat. Leere Passwortkonten stellen ein Sicherheitsrisiko dar und können leicht gehackt werden. Um zu überprüfen, ob Konten mit leerem Passwort vorhanden sind, verwenden Sie den folgenden Befehl.

cat /etc/shadow | awk -F: '($2==""){print $1}'

19. SSH-Banner vor der Anmeldung anzeigen

Es ist immer eine bessere Idee, vor der SSH-Authentifizierung ein rechtliches Banner oder Sicherheitsbanner mit einigen Sicherheitswarnungen zu haben. Um solche Banner zu setzen, lesen Sie den folgenden Artikel.

  1. SSH-Warnmeldung für Benutzer anzeigen

20. Überwachen Sie Benutzeraktivitäten

Wenn Sie mit vielen Benutzern zu tun haben, ist es wichtig, die Informationen über die Aktivitäten und Prozesse jedes einzelnen Benutzers zu sammeln und diese zu einem späteren Zeitpunkt oder bei Leistungs- oder Sicherheitsproblemen zu analysieren. Aber wie können wir Benutzeraktivitätsinformationen überwachen und sammeln?

Es gibt zwei nützliche Tools namens „psacct“ und „acct“, die zur Überwachung von Benutzeraktivitäten und -prozessen auf einem System verwendet werden. Diese Tools laufen im Systemhintergrund und verfolgen kontinuierlich jede Benutzeraktivität auf einem System und die von Diensten wie Apache, MySQL, SSH verbrauchten Ressourcen. FTP usw. Weitere Informationen zur Installation, Konfiguration und Verwendung finden Sie unter der folgenden URL.

  1. Überwachen Sie die Benutzeraktivität mit psacct- oder acct-Befehlen

21. Überprüfen Sie die Protokolle regelmäßig

Verschieben Sie Protokolle auf einen dedizierten Protokollserver. Dadurch wird möglicherweise verhindert, dass Eindringlinge lokale Protokolle einfach ändern können. Nachfolgend finden Sie die Namen der Common Linux-Standardprotokolldateien und ihre Verwendung:

  1. /var/log/message – Wo vollständige Systemprotokolle oder aktuelle Aktivitätsprotokolle verfügbar sind.
  2. /var/log/auth.log – Authentifizierungsprotokolle.
  3. /var/log/kern.log – Kernel-Protokolle.
  4. /var/log/cron.log – Crond-Protokolle (Cron-Job).
  5. /var/log/maillog – Mailserverprotokolle.
  6. /var/log/boot.log – Systemstartprotokoll.
  7. /var/log/mysqld.log – Protokolldatei des MySQL-Datenbankservers.
  8. /var/log/secure – Authentifizierungsprotokoll.
  9. /var/log/utmp oder /var/log/wtmp: Anmeldedatensatzdatei.
  10. /var/log/yum.log: Yum-Protokolldateien.

22. Wichtige Dateisicherung

In einem Produktionssystem ist es notwendig, wichtige Dateien zu sichern und sie für die Notfallwiederherstellung im Sicherheitstresor, an einem Remote-Standort oder an einem anderen Standort aufzubewahren.

23. NIC-Bonding

Beim NIC-Bonding gibt es zwei Arten von Modi, die in der Bonding-Schnittstelle erwähnt werden müssen.

  1. mode=0 – Round Robin
  2. mode=1 – Aktiv und Backup

NIC Bonding hilft uns, Single Point of Failure zu vermeiden. Beim NIC-Bonding verbinden wir zwei oder mehr Netzwerk-Ethernet-Karten und erstellen eine einzige virtuelle Schnittstelle, über die wir IP-Adressen zuweisen können, um mit anderen zu kommunizieren Server. Unser Netzwerk ist verfügbar, falls eine NIC-Karte ausfällt oder aus irgendeinem Grund nicht verfügbar ist.

Lesen Sie auch: Erstellen Sie NIC-Channel-Bonding unter Linux

24. Behalten Sie /boot als schreibgeschützt bei

Der Linux-Kernel und die zugehörigen Dateien befinden sich im Verzeichnis /boot, das standardmäßig Lese-/Schreibzugriff hat. Wenn Sie es auf schreibgeschützt ändern, verringert sich das Risiko einer unbefugten Änderung kritischer Startdateien. Öffnen Sie dazu die Datei „/etc/fstab“.

vi /etc/fstab

Fügen Sie unten die folgende Zeile hinzu, speichern und schließen Sie sie.

LABEL=/boot     /boot     ext2     defaults,ro     1 2

Bitte beachten Sie, dass Sie die Änderung auf Lese-/Schreibzugriff zurücksetzen müssen, wenn Sie den Kernel in Zukunft aktualisieren müssen.

25. Ignorieren Sie ICMP oder Broadcast Request

Fügen Sie die folgende Zeile in die Datei „/etc/sysctl.conf“ ein, um Ping- oder Broadcast-Anfragen zu ignorieren.

Ignore ICMP request:
net.ipv4.icmp_echo_ignore_all = 1

Ignore Broadcast request:
net.ipv4.icmp_echo_ignore_broadcasts = 1

Laden Sie neue Einstellungen oder Änderungen, indem Sie den folgenden Befehl ausführen

#sysctl -p

Wenn Sie einen wichtigen Sicherheits- oder Härtungstipp in der obigen Liste übersehen haben oder einen anderen Tipp haben, der in die Liste aufgenommen werden muss. Bitte hinterlassen Sie Ihre Kommentare in unserem Kommentarfeld. TecMint ist immer an Kommentaren, Vorschlägen und Diskussionen für Verbesserungen interessiert.