GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

15 Linux-Härtungsschritte für CentOS 7 Server

Serverhärtung ist der Prozess der Verbesserung der Serversicherheit durch verschiedene Methoden. Wir haben viele Schritte, um einen Server zu sichern. Halten Sie sich und Ihr Unternehmen fern, indem Sie Ihre Linux-Systeme vor Hackern, Crackern und Angreifern schützen! Mit den folgenden Schritten können Sie eine anfällige Box in einen gehärteten Server verwandeln. Es wird Ihnen helfen, Angriffe von außen zu verhindern. Hier beschreibe ich die Serverhärtung von CentOS.

Wissenswertes

Dieser Leitfaden führt Sie durch die Schritte, die zur Sicherheitshärtung von CentOS 7 erforderlich sind. Das Härten eines Systems macht es restriktiver und Sie können auf Probleme stoßen. Ich empfehle, eine doppelte virtuelle Maschine zu erstellen, die Sie zur Fehlerbehebung verwenden können. Nachfolgend finden Sie eine Liste grundlegender Schritte, die Sie unternehmen können und sollten, um Ihre Server unmittelbar nach der Bereitstellung zu härten.

1. Sicherer Fernzugriff

Manchmal greifen wir über Remote-Methoden auf unseren Server zu, und wenn es nicht sicherer ist, können wir unseren Server offenlegen. OpenSSH-Optionen werden über /etc/ssh/sshd_config gesteuert Datei.

a. Deaktivieren Sie die SSH-Passwort-Authentifizierungsmethode und aktivieren Sie die Public-Key-Authentifizierungsmethode

Es ist wichtig, die Kennwort-Remote-Anmeldemethode zu deaktivieren und den öffentlichen Authentifizierungsschlüssel zu aktivieren

Ändern Sie ChallengeResponseAuthentication und PasswordAuthentication auf nein um die Passwortmethode zu deaktivieren

PasswordAuthentication noChallengeResponseAuthentication no

Authentifizierung mit öffentlichem Schlüssel autorisieren

RSAAuthentication yesPubkeyAuthentication yes

Jetzt können Sie ein neues Schlüsselpaar generieren

# ssh-keygen -t rsa

b. Direkte Root-Anmeldung deaktivieren

Es ist ein Sicherheitsrisiko, root zu erlauben, sich direkt beim Server anzumelden. Stattdessen sollten Sie sich mit Ihrem Konto beim System anmelden und dann su - ausführen als root anmelden. Sie müssen also PermitRootLogin yes ändern auf RootLogin-Nr zulassen

PermitRootLogin-Nr.

c. Ändern Sie den standardmäßigen SSH-Listening-Port (zB:8500)

Manchmal wird es nicht empfohlen, den Standardport zu verwenden, da er weltweit bekannt ist und ein Sicherheitsrisiko darstellt. Es ist gut, den zu verwendenden Port zu personalisieren

Port 8500

2. Bootloader mit Grub-Passwort sichern

Durch die Sicherung des Bootloaders können wir den Zugriff auf den Einzelbenutzermodus verhindern, der sich automatisch als Root anmeldet. Dies geschieht mit GRUB, indem ein Passwort gesetzt wird, das standardmäßig im Klartext gespeichert wird.

Für Debian-System

# grub-mkpasswd-pbkdf2

Für Centos

# grub2-mkpasswd-pbkdf2

3. Listening Network Ports

Nach der Konfiguration von Netzwerkdiensten ist es wichtig, darauf zu achten, welche Ports tatsächlich an den Netzwerkschnittstellen des Systems lauschen. Alle offenen Ports können ein Beweis für einen Einbruch sein.

# nmap -sT -O localhostStarting Nmap 6.40 ( http://nmap.org ) at 2017-06-07 23:13 UTCNmap scan report for localhost (127.0.0.1)Host is up (0.000061s Latency).Other Adressen für localhost (nicht gescannt):127.0.0.1rDNS-Eintrag für 127.0.0.1:centos-01Nicht angezeigt:995 geschlossene PortsPORT STATE SERVICE22/tcp open ssh25/tcp open smtp80/tcp open http111/tcp open rpcbind2049/tcp open nfs 

Verwenden Sie den folgenden Befehl, um alle offenen Ports und zugehörigen Programme aufzulisten

# netstat -tulpnAktive Internetverbindungen (nur Server)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Programmname tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0 .0.0:20048 0.0.0.0:* HÖREN 

4. Berechtigungen eingrenzen

Schränken Sie die Berechtigungen für Systemdateien und -ordner ein, um die Risiken zu begrenzen.

# chmod 700 /root
# chmod 700 /var/log/audit
# chmod 740 /etc/rc.d/init.d/iptables
# chmod 740 /sbin/iptables
# chmod -R 700 /etc/skel
# chmod 600 /etc/rsyslog.conf
# chmod 640 /etc/security/access.conf
# chmod 600 /etc/sysctl.conf

5. Überprüfen von Konten auf leere Passwörter

Jedes Konto mit einem leeren Passwort bedeutet, dass es für unbefugten Zugriff auf das Internet geöffnet ist und ein Teil der Sicherheit innerhalb eines Linux-Servers ist. Um Konten mit leerem Passwort zu überprüfen, verwenden Sie den folgenden Befehl

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

Aus Sicherheitsgründen ist es gut, alle leeren Passwortkonten zu sperren:

# passwd -l paulSperrpasswort für Benutzer paul.passwd:Erfolgreich

6. Kernel-Parameter abstimmen

Sysctl ist eine Schnittstelle zum Untersuchen und dynamischen Ändern von Parametern im Linux-Betriebssystem. Bearbeiten Sie /etc/sysctl.conf Datei zur Optimierung der Kernelparameter

Sysctl ist der Befehl, der verwendet wird, um Kernelparameter zur Laufzeit zu ändern.

# sysctl -a 
# sysctl -A 
# sysctl net.ipv4.conf.all.rp_filter 
To load settings, enter:   
# sysctl -p 

Kopieren Sie den folgenden Inhalt und fügen Sie ihn in /etc/sysctl.conf ein

# Turn on execshield
kernel.exec-shield=1
kernel.randomize_va_space=1

# Enable IP spoofing protection
net.ipv4.conf.all.rp_filter=1

# Disable IP source routing
net.ipv4.conf.all.accept_source_route=0

# Ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1

# Make sure spoofed packets get logged
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1

# Disable ICMP routing redirects
sysctl -w net.ipv4.conf.all.accept_redirects=0
sysctl -w net.ipv6.conf.all.accept_redirects=0
sysctl -w net.ipv4.conf.all.send_redirects=0
sysctl -w net.ipv6.conf.all.send_redirects=0

# Disables the magic-sysrq key
kernel.sysrq = 0

# Turn off the tcp_sack
net.ipv4.tcp_sack = 0

# Turn off the tcp_timestamps
net.ipv4.tcp_timestamps = 0

# Enable TCP SYN Cookie Protection
net.ipv4.tcp_syncookies = 1

# Enable bad error message Protection
net.ipv4.icmp_ignore_bogus_error_responses = 1 

7. Unerwünschte Dienste deaktivieren

Sie müssen alle unerwünschten Dienste und Daemons (Dienste, die im Hintergrund laufen) aus dem Systemstart entfernen, die beim Booten in Runlevel 3 gestartet werden .

# chkconfig --list | grep '3:on' 

Um den Dienst zu deaktivieren, geben Sie Folgendes ein:

# service serviceName stop
# chkconfig serviceName off 

8. Authentifizierung für Einzelbenutzermodus erforderlich

Es wird empfohlen, beim Aufrufen des Einzelbenutzermodus das Root-Passwort anzufordern. Öffnen Sie /etc/sysconfig/init Datei und fügen Sie die Zeile hinzu:

SINGLE=/sbin/sulogin 

9. Sicherheitsoptimiertes Linux (SELinux)

SELinux ist eine Reihe von Sicherheitsregeln, die bestimmen, welcher Prozess auf welche Datei, Verzeichnisse, Ports usw. zugreifen kann. Jede Datei, jeder Prozess, jedes Verzeichnis und jeder Port hat ein spezielles Sicherheitslabel namens SELinux-Kontexte. Ein Kontext ist einfach ein Name, der von der SELinux-Richtlinie verwendet wird, um zu bestimmen, ob ein Prozess auf eine Datei, ein Verzeichnis oder einen Port zugreifen kann oder nicht. Standardmäßig lässt die Richtlinie keine Interaktion zu, sodass explizite Regeln den Zugriff gewähren. Wenn es keine Allow-Regel gibt, wird kein Zugriff erlaubt.

getenforce Der Befehl sagt uns, in welchem ​​Modus sich SELinux befindet.

Wir können den SELinux-Modus in Erzwingen ändern, indem wir SELINUX=enforcing ändern in /etc/sysconfig/selinux

Es gibt drei Direktiven in dieser Datei, wie unten erklärt.

  • Durchsetzung: Die SELinux-Sicherheitsrichtlinie wird durchgesetzt.
  • Zulässig: SELinux gibt Warnungen aus, anstatt sie zu erzwingen.
  • Deaktiviert: SELinux ist vollständig deaktiviert.

Sie können den Status von SELinux mit dem Befehl

überprüfen
# sestatus
SELinux status: disabled 

Sie sehen, dass es deaktiviert ist. Um es zu aktivieren, können Sie

verwenden
# setenforce enforcing 

10. Firewall mit iptables einrichten

iptables ist ein Userspace-Anwendungsprogramm, mit dem ein Systemadministrator die von der Linux-Kernel-Firewall bereitgestellten Tabellen und die darin gespeicherten Ketten und Regeln konfigurieren kann.

a. Schließen Sie alle unerwünschten Ports

iptables -A INPUT -p tcp --dport PORT_NUMBER -j DROP 

b. Blockiere schlechte IPs

iptables -A INPUT -s IP_ADDRESS -j DROP 

c. Verbindungen zu einer Netzwerkschnittstelle blockieren

Um Verbindungen von einer bestimmten IP-Adresse zu einer bestimmten Netzwerkschnittstelle zu blockieren, verwenden Sie den Befehl

# iptables -A INPUT -i ens0 -s 6.6.6.6 -j DROP 

d. Iptables-Regeln auflisten

Sie können alle iptables-Regeln mit dem Befehl

sehen
iptables -L -n -v 

11. Überprüfung des Dateisystems

Alle Dateien mit aktivierten SUID/SGID-Bits können für böswillige Aktivitäten verwendet werden, wenn die ausführbare SUID/SGID-Datei ein Sicherheitsproblem aufweist. Alle lokalen oder entfernten Benutzer können diese Datei verwenden.

a. Identifizieren Sie unerwünschte SUID- und SGID-Binärdateien

find / \( -perm -4000 -o -perm -2000 \) -print
find / -path -prune -o -type f -perm +6000 -ls 

b. Identifizieren Sie weltweit beschreibbare Dateien

find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print 

c. Identifizieren Sie verwaiste Dateien und Ordner

find /dir -xdev \( -nouser -o -nogroup \) -print 

12. Belassen Sie /boot als schreibgeschützt

Der Linux-Kernel und die zugehörigen Dateien befinden sich im /boot-Verzeichnis, das standardmäßig schreibgeschützt ist. Wenn Sie es auf schreibgeschützt ändern, verringert sich das Risiko einer nicht autorisierten Änderung kritischer Boot-Dateien. Wir müssen /etc/fstab bearbeiten Datei und fügen Sie die folgende Zeile ein<

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

13. Alle TCP-Wrapper ablehnen

TCP-Wrapper können eine schnelle und einfache Methode zur Steuerung des Zugriffs auf mit ihnen verknüpfte Anwendungen bieten. Daher wird empfohlen, alle nicht verwendeten Anwendungen zu blockieren und dann nur die Anwendungen zu autorisieren, die verwendet werden.

Beispielsweise werden wir alle Anwendungen blockieren, außer autorisiertem SSH

echo "ALL:ALL" >> /etc/hosts.deny 
echo "sshd:ALL" >> /etc/hosts.allow 

14. Cronjobs für nicht autorisierte Benutzer sperren

Cron wird verwendet, um Jobs zu einem bestimmten Zeitpunkt zu automatisieren. Es ist möglich festzulegen, wer Jobs ausführen darf und wer nicht. Dies wird durch die Verwendung von Dateien namens /etc/cron.allow gesteuert und /etc/cron.deny . Um einen Benutzer mit cron zu sperren, fügen Sie einfach Benutzernamen in cron.deny hinzu und um einem Benutzer zu erlauben, cron auszuführen, fügen Sie in der Datei cron.allow hinzu.

# echo ALL >>/etc/cron.deny 

15. Sichern Sie den Server gegen Pufferüberlauf

Ein Pufferüberlauf tritt auf, wenn ein Programm oder Prozess versucht, mehr Daten in einen Speicherblock mit fester Länge oder einen Puffer zu schreiben, als dem Puffer zugewiesen ist. Es ist wichtig, Ihren Server vor diesem Angriff zu schützen

a. Aktivieren Sie ExecShield

Es hilft, das Zerbrechen des Stapels zu verhindern. Typischerweise überschreibt ein Pufferüberlauf-Exploit eine Rücksprungadresse, sodass eine Funktion zu einer vom Angreifer gewählten Adresse zurückkehrt. Sie müssen den aktuellen Kernel aktivieren

sysctl -w kernel.exec-shield=1 

Sie können die folgende Zeile auch zu /etc/sysctl.conf hinzufügen

kernel.exec-shield = 1 

b. Überprüfen/aktivieren Sie ASLR

Die Adressraum-Layout-Randomisierung ist eine Abwehrfunktion, um Pufferüberläufe zu erschweren. ASLR erschwert es dem Angreifer, eine Adresse zu finden, zu der er springen kann. Sie müssen die zufällige Platzierung virtueller Speicherbereiche aktivieren, indem Sie die Laufzeit für kernel.randomize_va_space festlegen

sysctl -q -n -w kernel.randomize_va_space=2 

Fügen Sie die folgende Zeile zu /etc/sysctl.conf hinzu falls es noch nicht existiert

kernel.randomize_va_space = 2 

Schlussfolgerung

Dies sind einige der grundlegenden Überlegungen für neue Benutzer, die versuchen, ihre eigenen Server zu betreiben. Denken Sie daran, dass Cracker immer einen Schritt voraus sind; Sie suchen ständig nach Löchern, um sich in Ihren Server zu hacken. Es ist wichtig zu erkennen, dass Sicherheitsmaßnahmen zwar besser spät als nie an Wirksamkeit verlieren, je länger Sie mit der Implementierung warten


Cent OS
  1. 7 Schritte zur Sicherung Ihres Linux-Servers

  2. So installieren Sie den DNS-Server unter RHEL 8 / CentOS 8 Linux

  3. So installieren oder aktualisieren Sie auf PHP 7 auf CentOS 7 Linux Server

  4. Top 7 Tipps zur Sicherheitshärtung für CentOS 8 / RHEL 8 Server

  5. Linux-Befehl zum Warten auf das Hochfahren eines SSH-Servers

Linux-Server-Härtung – Best Practices

FreeIPA-Server auf Alma Linux 8/CentOS 8

So konfigurieren Sie die FreeIPA-Replikation unter Rocky Linux/Alma Linux/Centos 8

Schritte zum Installieren von Spotify in Rocky Linux oder CentOS 8

So installieren Sie memcahed unter CentOS 8 Linux

Graylog-Überwachungsserver unter Ubuntu Linux für Überwachungsserver/-dienste