Allgemeiner Leitfaden zur Sicherheitskonfiguration von Linux/CentOS-Servern

Allgemeiner Leitfaden zur Sicherheitskonfiguration von Linux/CentOS-Servern

Linux ist ein offenes System. Im Internet sind viele vorgefertigte Programme und Tools zu finden. Das ist sowohl für Benutzer als auch für Hacker praktisch, da sie leicht Programme und Tools finden können, mit denen sie sich in Linux-Systeme einschleichen oder wichtige Informationen auf Linux-Systemen stehlen können. Solange wir jedoch die verschiedenen Systemfunktionen von Linux sorgfältig konfigurieren und die notwendigen Sicherheitsmaßnahmen ergreifen, haben Hacker keine Chance, davon zu profitieren.

Zu den Sicherheitseinstellungen für Linux-Systeme gehören im Allgemeinen das Abbrechen unnötiger Dienste, die Einschränkung des Fernzugriffs, das Verbergen wichtiger Daten, das Schließen von Sicherheitslücken, die Verwendung von Sicherheitstools und regelmäßige Sicherheitsüberprüfungen.

Dieser Artikel ist eine praktische Anleitung zum Nachschlagen. Prinzipien wie IP-Spoofing werden darin nicht behandelt und Sicherheitsprobleme können nicht durch ein paar Befehlszeilen verhindert werden.

Hier sind nur die grundlegenden Methoden zur Sicherheitshärtung auf Linux-Systemen. Neue Inhalte werden später hinzugefügt.

Hinweis: Alle Dateien müssen vor der Änderung gesichert werden.

cp /etc/passwd{,.dist}

1. Deaktivieren Sie nicht verwendete Benutzer in Linux

Hinweis: Es wird nicht empfohlen, direkt zu löschen. Wenn Sie einen Benutzer benötigen, wird es mühsam, ihn selbst wieder hinzuzufügen. Sie können es auch mit usermod -L oder passwd -l user sperren.

cp /etc/passwd{,.bak} Vor dem Ändern eine Sicherungskopie erstellen

vi /etc/passwd Bearbeiten Sie den Benutzer und fügen Sie vor dieser Zeile ein # hinzu, um sie auszukommentieren

Benutzername des Kommentars:

# cat /etc/passwd|grep ^#
#adm:x:3:4:adm:/var/adm:/sbin/nologin
#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
#halt:x:7:0:halt:/sbin:/sbin/halt
#uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
#operator:x:11:0:operator:/root:/sbin/nologin
#spiele:x:12:100:spiele:/usr/spiele:/sbin/nologin
#gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
#ftp:x:14:50:FTP-Benutzer:/var/ftp:/sbin/nologin
#nfsnobody:x:65534:65534:Anonymer NFS-Benutzer:/var/lib/nfs:/sbin/nologin
#postfix:x:89:89::/var/spool/postfix:/sbin/nologin

Mit Linux kommentierte Gruppen:

# Katze /etc/Gruppe|grep ^#
#adm:x:4:adm,daemon
#lp:x:7:daemon
#uucp:x:14:
#spiele:x:20:
#gopher:x:30:
#video:x:39:
#dip:x:40:
#ftp:x:50:
#audio:x:63:
#floppy:x:19:
#postfix:x:89:

2. Linux beendet ungenutzte Dienste

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

Maildienst über den Mailserver des Unternehmens:

Dienstpostfix-Stopp
chkconfig postfix --level 2345 aus

Allgemeiner Unix-Druckdienst, nicht nützlich für Server:

Service Tassen Stopp
chkconfig cups --level 2345 aus

Passen Sie die CPU-Geschwindigkeit an, um Strom zu sparen. Häufige Verwendung bei Laptops:

Dienst CPU-Geschwindigkeit stoppen
chkconfig cpuspeed --level 2345 aus

Drahtlose Bluetooth-Kommunikation, nicht nützlich für Server:

Dienst Bluetooth Stopp
chkconfig bluetooth --level 2345 aus

Anfangseinstellungen nach der Systeminstallation, die nach dem ersten Systemstart nutzlos sind:

Dienst Firstboot stoppen
chkconfig firstboot --level 2345 aus

Linux fährt den NFS-Dienst und -Client herunter:

Dienst Netfs stoppen
chkconfig netfs --level 2345 aus
Dienst NFSLock stoppen
chkconfig nfslock --level 2345 aus

Wenn Sie einen Dienst wiederherstellen möchten, können Sie Folgendes tun:

Dienst acpid starten und chkconfig acpid ein

Sie können das Setup-Tool auch verwenden, um

3. Deaktivieren Sie IPV6 in Linux

IPv6 wurde entwickelt, um das Problem der Erschöpfung von IPv4-Adressen zu lösen, unsere Server verwenden es jedoch im Allgemeinen nicht. Im Gegenteil: Durch die Deaktivierung von IPv6 wird das Netzwerk nicht nur schneller, sondern auch der Verwaltungsaufwand verringert und die Sicherheit verbessert. Die folgenden Schritte deaktivieren IPv6 auf CentOS vollständig.

Linux verbietet das Laden von IPv6-Modulen:

Um zu verhindern, dass das System IPv6-bezogene Module lädt, müssen Sie modprobe bezogenen Einstellungsdateien ändern. Zur Vereinfachung der Verwaltung erstellen wir eine neue Einstellungsdatei /etc/modprobe.d/ipv6off.conf mit folgendem Inhalt

Alias ​​net-pf-10 aus
Optionen IPv6 deaktivieren = 1

Linux deaktiviert IPv6-basierte Netzwerke, sodass deren Start nicht ausgelöst wird:

# vi /etc/sysconfig/netzwerk
NETWORKING_IPV6=nein

Linux deaktiviert die IPv6-Einstellungen der Netzwerkkarte, sodass es nur im IPv4-Modus läuft:

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
IPV6INIT=nein
IPV6_AUTOCONF=nein

Linux schaltet ip6tables ab:

# chkconfig ip6tables off

Starten Sie das System neu und prüfen Sie, ob die Änderungen wirksam werden:

grep ipv6
# ifconfig | grep -i inet6

Wenn keine Ausgabe erfolgt, ist das IPv6-Modul deaktiviert, andernfalls ist es aktiviert.

4. Linux iptables-Regeln

Aktivieren Sie die Linux-Firewall, um den Zugriff illegaler Programme zu verhindern. Verwenden Sie iptable-Regeln, um eingehende, ausgehende und weitergeleitete Pakete zu filtern. Wir können den Zugriff auf bestimmte UDP/TCP-Ports basierend auf Quell- und Zieladressen gewähren oder verweigern.

Weitere Informationen zu Firewall-Einstellungen finden Sie im Blogbeitrag „Beispiel für Iptables-Einstellungen“.

5. Linux SSH-Sicherheit

Wenn möglich, sollten Sie als Erstes den Standardport 22 für SSH ändern. Wenn Sie ihn auf einen größeren Port wie 20002 ändern, wird der Sicherheitsfaktor erheblich erhöht und die Möglichkeit eines SSH-Cracking-Logins verringert.

Erstellen Sie identifizierbare Anwendungsbenutzer wie CRM und Systemverwaltungsbenutzer sysmgr

# useradd crm -d /apps/crm
# passwd crm

# Benutzeradd sysmgr
# passwd sysmgr

5.1 Linux erlaubt nur Benutzern in der Wheel-Gruppe den Wechsel zu su

# usermod -G Rad sysmgr

# vi /etc/pam.d/su
# Entfernen Sie das Kommentarzeichen aus der folgenden Zeile, um zu verlangen, dass ein Benutzer der Gruppe „Wheel“ angehört.
Authentifizierung erforderlich pam_wheel.so use_uid

Wenn andere Benutzer zu Root wechseln, wird ihnen die Meldung „su: falsches Passwort“ angezeigt, auch wenn sie das richtige Passwort eingeben.

5.2 Zeitüberschreitung bei der Linux-Anmeldung

Wenn der Benutzer 5 Minuten lang online ist, ohne etwas zu tun, wird die Verbindung getrennt. Fügen Sie Folgendes zu /etc/profile hinzu:

Export TMOUT=300
schreibgeschütztes TMOUT

5.3 Linux verbietet Root die Remote-Anmeldung

# vi /etc/ssh/sshd_config
PermitRootLogin nein

5.4 Linux begrenzt die Anzahl fehlgeschlagener Anmeldungen und Sperren

Nach /etc/pam.d/login hinzufügen

auth required pam_tally2.so deny=6 unlock_time=180 even_deny_root root_unlock_time=180

Wenn die Anmeldung 5 Mal fehlschlägt, wird das System für 180 Sekunden gesperrt. Sie können bei Bedarf festlegen, ob Root einbezogen werden soll.

5.5 IP-Einschränkung bei der Anmeldung unter Linux

(Da es an eine feste IP oder ein festes IP-Segment gebunden sein muss, wurde es noch nicht festgelegt.)

Eine strengere Einschränkung besteht darin, die für SSH zulässigen Benutzer und Quell-IP-Adressen in sshd_config zu definieren:

## erlaubte SSH-Benutzer sysmgr
AllowUsers [email protected].*
Oder verwenden Sie tcpwrapper:

vi /etc/hosts.deny
sshd:alle
vi /etc/hosts.allow
sshd:172.29.73.23
sshd:172.29.73.

6. Die Linux-Konfiguration kann nur Schlüsseldateien zum Anmelden verwenden

Die Verwendung von Schlüsseldateien anstelle einer einfachen Kennwortauthentifizierung verbessert die Sicherheit ebenfalls erheblich:

[dir@Benutzername ~]$ ssh-keygen -t rsa -b 2048
Generieren eines öffentlichen/privaten RSA-Schlüsselpaars.
Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (/root/.ssh/id_rsa): //Standardpfad, drücken Sie die Eingabetaste.Geben Sie die Passphrase ein (leer, wenn keine Passphrase vorhanden ist): //Geben Sie Ihre Schlüsselphrase ein und verwenden Sie sie beim Anmelden.Geben Sie die gleiche Passphrase erneut ein: 
Ihre Identifikation wurde in /root/.ssh/id_rsa gespeichert.
Ihr öffentlicher Schlüssel wurde in /root/.ssh/id_rsa.pub gespeichert.
Der Schlüsselfingerabdruck ist:
3e:fd:fc:e5:d3:22:86:8e:2c:4b:a7:3d:92:18:9f:64 [email protected]
Das Randomart-Bild des Schlüssels ist:
+--[RSA 2048]----+
| |
…
| o++o..oo..o|
+-----------------+

Benennen Sie den öffentlichen Schlüssel in authorized_key um:

$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

Laden Sie die private Schlüsseldatei id_rsa auf Ihren lokalen Computer herunter (benennen Sie sie zur einfacheren Identifizierung in Hostname_Benutzername_id_rsa) und speichern Sie sie an einem sicheren Ort. In Zukunft muss der Benutzer mit dem Benutzernamen diesen privaten Schlüssel und die Passphrase verwenden, um sich bei diesem Host anzumelden (das eigene Passwort des Benutzers mit dem Benutzernamen wird nicht mehr verwendet).

Darüber hinaus müssen Sie die Datei /etc/ssh/sshd_config ändern

Offene Anmerkungen

RSA-Authentifizierung ja
PubkeyAuthentifizierung ja
Autorisierte Schlüsseldatei .ssh/authorized_keys

Wir verlangen, dass sich der Benutzer mit dem Benutzernamen (der zu anderen Benutzern wechseln kann, insbesondere root) mithilfe der SSH-Schlüsseldatei anmelden muss, während sich andere normale Benutzer direkt mit einem Kennwort anmelden können. Daher müssen Sie am Ende der Datei sshd_config Folgendes hinzufügen:

Benutzer-Abschnitt abgleichen
    PasswortAuthentifizierung nein

Starten Sie den SSHD-Dienst neu.

# service sshd restart

Außerdem eine Erinnerung, dass dieses Paar aus öffentlichen und privaten Schlüsseln separat auf einem anderen Computer gespeichert werden muss. Der Verlust des öffentlichen Schlüssels auf dem Server oder des privaten Schlüssels (oder der Schlüsselphrase) auf der Verbindungsseite kann dazu führen, dass Sie sich nicht mehr beim Server anmelden und keine Root-Berechtigungen erhalten können!

7. Reduzieren Sie die Verlaufsbefehlsaufzeichnungen in Linux

Je mehr historische Befehlsaufzeichnungen ausgeführt wurden, desto einfacher ist die Wartung, desto größer sind jedoch auch die Sicherheitsprobleme.

vi /etc/profile

Suchen Sie nach HISTSIZE=1000 und ändern Sie es in HISTSIZE=50 .

Oder bereinigen Sie history,history -c

8. Linux erweitert spezielle Dateiberechtigungen

Fügen Sie den folgenden Dateien unveränderliche Attribute hinzu, um zu verhindern, dass unbefugte Benutzer Berechtigungen erhalten

chattr +i /etc/passwd
chattr +i /etc/Schatten
chattr +i /etc/Gruppe
chattr +i /etc/gshadow
chattr +i /etc/services #Sperren Sie die Portlistendatei der Systemdienste, um ein unbefugtes Löschen oder Hinzufügen von Diensten zu verhindern. chattr +i /etc/pam.d/su
chattr +i /etc/ssh/sshd_config

Anzeigen der Eigenschaften einer Datei

lsattr /etc/passwd /etc/shadow /etc/dienste /etc/ssh/sshd_config

Hinweis: Nachdem Sie die oben beschriebene Änderung der Chattr-Berechtigungen ausgeführt haben, können Sie keine Benutzer mehr hinzufügen oder löschen.

Wenn Sie erneut Benutzer hinzufügen oder löschen möchten, müssen Sie zuerst die obigen Einstellungen löschen. Führen Sie nach dem Hinzufügen und Löschen von Benutzern die obigen Vorgänge erneut aus. Löschen Sie beispielsweise die schreibgeschützte Berechtigung chattr -i /etc/passwd . (Denken Sie daran, auf schreibgeschützt zurückzusetzen)

9. Linux verhindert gängige Netzwerkangriffe

Cyberangriffe lassen sich nicht mit ein paar Einstellungszeilen vermeiden. Die folgenden einfachen Maßnahmen minimieren zwar die Möglichkeit und erhöhen den Schwierigkeitsgrad des Angriffs, können ihn jedoch nicht vollständig verhindern.

9.1 Linux-Bann-Ping

Ping blockieren Wenn niemand Ihr System anpingen kann, erhöht sich natürlich die Sicherheit und Ping-Floods können effektiv verhindert werden. Fügen Sie dazu die folgende Zeile zur Datei /etc/rc.d/rc.local hinzu:

# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

Oder verwenden Sie iptables, um Ping zu deaktivieren:

iptables -A INPUT -p icmp --icmp-type 0 -s 0/0 -j DROP

Pingen anderer Hosts nicht zulassen:

iptables -A AUSGABE -p icmp --icmp-type 8 -j DROP

9.2. Linux verhindert IP-Spoofing

Bearbeiten Sie die Datei /etc/host.conf und fügen Sie die folgenden Zeilen hinzu, um IP-Spoofing-Angriffe zu verhindern.

order hosts,bind #Namensinterpretation ordermulti on #Hosts mehrere IP-Adressen erlaubennospoof on #IP-Adress-Spoofing verbieten

9.3 Linux verhindert DoS-Angriffe

DoS-Angriffe können verhindert werden, indem für alle Benutzer des Systems Ressourcenbeschränkungen festgelegt werden, beispielsweise hinsichtlich der maximalen Anzahl von Prozessen und der Speichernutzung.
Sie können die folgenden Zeilen zu /etc/security/limits.conf hinzufügen:

* weicher Kern 0
* weicher nproc 2048
* harter nproc 16384
* Soft-Nofile 1024
* hartes Nofile 65536

core 0 bedeutet, dass die Erstellung von Core-Dateien verboten ist; nproc 128 begrenzt die maximale Anzahl von Prozessen auf 20; nofile 64 begrenzt die maximale Anzahl von Dateien, die ein Benutzer gleichzeitig öffnen kann, auf 64; * bedeutet alle am System angemeldeten Benutzer, außer root

Dann müssen Sie die Datei /etc/pam.d/login bearbeiten, um zu prüfen, ob die folgende Zeile vorhanden ist.

session required pam_limits.so

Die Werte der limits.conf -Parameter müssen den jeweiligen Umständen entsprechend angepasst werden.

10. Linux behebt bekannte Sicherheitslücken

Unter Linux können gelegentlich zerstörerische Schwachstellen auftreten, wie etwa udev , heartbleed , shellshock , ghost usw. Wenn der Server dem externen Netzwerk ausgesetzt ist, muss er rechtzeitig repariert werden.

11. Regelmäßige Sicherheitsüberprüfung des Linux-Protokolls

Verschieben Sie die Protokolle auf einen dedizierten Protokollserver, um zu verhindern, dass Eindringlinge lokale Protokolle einfach ändern. Nachfolgend sind die gängigen Standardprotokolldateien von Linux und ihre Verwendung aufgeführt:

/var/log/message – zeichnet Systemprotokolle oder aktuelle Aktivitätsprotokolle auf.
/var/log/auth.log – Authentifizierungsprotokoll.
/var/log/cron – Crond-Protokolle (Cron-Jobs).
/var/log/maillog – Mailserver-Protokoll.
/var/log/secure – Authentifizierungsprotokoll.
/var/log/wtmp Historische Anmelde-, Abmelde-, Start- und Herunterfahrprotokolle. Der Befehl lastb kann Benutzer anzeigen, deren Anmeldung fehlgeschlagen ist. /var/run/utmp Aktuell angemeldetes Benutzerinformationsprotokoll. Die Informationen der Befehle w und who stammen hieraus. /var/log/yum.log Yum-Protokoll.

Lesen Sie die ausführliche Analyse von CentOS, um den Eindringling über Protokolle rückgängig zu machen.

11.1 Installieren von logwatch unter Linux

Logwatch ist ein mit Perl entwickeltes Tool zur Protokollanalyse. Es kann Linux-Protokolldateien analysieren und automatisch E-Mails an das entsprechende Verarbeitungspersonal senden, die angepasst werden können.

Die Mail-Funktion von Logwatch verwendet den eigenen Mailserver des Hostsystems zum Senden von E-Mails. Daher muss das System einen Mailserver wie Sendmail, Postfix, Qmail usw. installieren.

Informationen zu Installations- und Konfigurationsmethoden finden Sie im Blogbeitrag „Linux-Protokollüberwachung logwatch“.

12. Linux-Webserver-Sicherheit

Wenn bei der Konfiguration serverseitiger Programme wie Apache oder Tomcat Sicherheitsprobleme auftreten, können Sie zur Verstärkung der Sicherheit auf die Dokumentation zurückgreifen. Ich werde in Zukunft neue Artikel hinzufügen, wenn ich Zeit habe.

Weitere Lösungen zur Konfiguration der Linux-Serversicherheit finden Sie in den folgenden verwandten Artikeln

Das könnte Sie auch interessieren:
  • Erfahren Sie, wie Sie einen sicheren Linux-Server erstellen – Tutorial
  • Linux VPS-Sicherheitseinstellungen 1: SSH-Port ändern (CentOS/Debian)
  • Handbuch zur grundlegenden Sicherheitskonfiguration für Linux-Server
  • So konfigurieren Sie ein SSL-Zertifikat für Nginx unter Linux
  • Linux SSH-Sicherheitsrichtlinie SSH-Port ändern
  • Anweisungen zur Installation der Server Security Dog Linux Edition-Software
  • Detaillierte Erläuterung der PHPCMS v9-Sicherheitskonfiguration unter Linux-Server
  • Shell-Skriptcode zur Verstärkung der Linux-Serversicherheit
  • Sicherheitskonfiguration für Linux-Server
  • So verwenden Sie iptables zum Festlegen von Sicherheitsrichtlinien auf Alibaba Cloud Linux-Servern
  • Detaillierte Erläuterung der Nginx-Sicherheitskonfiguration unter Linux-Server
  • Sicherheitseinstellungen und Optimierung des Linux-Apache-Serversystems
  • Red Hat Linux-Sicherheitseinstellungen
  • Sicherheitseinstellungen unter CentOS 5.1 (geeignet für alle Linux-Versionen)
  • Linux VPS Sicherheitseinstellungen 2: Deaktivieren des ROOT-Kontos
  • Die Linux-SSH-Sicherheitsrichtlinie schränkt die IP-Anmeldemethode ein
  • Sicherheitstests: Erste Schritte mit den Sicherheitseinstellungen für Unix- und Linux-Server
  • Tipps zu Apache- und PHP-Sicherheitseinstellungen unter Linux

<<:  Verwenden Sie Javascript, um die Funktion zum Senden des SMS-Bestätigungscodeintervalls zu implementieren

>>:  Zusammenfassung einiger wichtiger Punkte zu mysql init_connect

Artikel empfehlen

Lösungen für das Problem der Tabellenschachtelung und Rahmenzusammenführung

【Frage】 Wenn die äußere und die innere Tabelle ve...

Eine kurze Analyse des Unterschieds zwischen FIND_IN_SET() und IN in MySQL

Ich habe die Mysql FIND_IN_SET-Funktion vor einig...

So speichern Sie „false“ oder „true“ in MySQL

Boolescher MySQL-Wert, speichert „false“ oder „tr...

So implementieren Sie geplante MySQL-Aufgaben zur Datensicherung unter Linux

Vorwort Backup ist die Grundlage der Notfallwiede...

Detaillierte Erklärung der Kernfunktionen und der Ereignisbehandlung von jQuery

Inhaltsverzeichnis Ereignis Seite wird geladen Ve...

Einführung in die reaktive Funktion toRef-Funktion ref-Funktion in Vue3

Inhaltsverzeichnis Reaktive Funktion Verwendung: ...

So verwenden Sie Webpack und Rollup zum Verpacken von Komponentenbibliotheken

Vorwort Ich habe zuvor eine Komponente im Ladesti...

Detaillierte Erklärung der Überwachungseigenschaften von Vue

Inhaltsverzeichnis Vue-Monitoreigenschaften Was i...

Verwendung von „Select“, „Distinct“ und „Limit“ in MySQL

Inhaltsverzeichnis 1. Einleitung 2. auswählen 2.1...

Implementierung der CentOS8.0-Netzwerkkonfiguration

1. Unterschiede in der Netzwerkkonfiguration zwis...

Bei der Verwendung von MySQL aufgetretene Probleme

Hier sind einige Probleme, die bei der Verwendung...

Vue3 basierend auf der Skript-Setup-Syntax $refs-Verwendung

Inhaltsverzeichnis 1. Vue2-Syntax 2. Nutzung von ...

Vue+el-table realisiert das Zusammenführen von Zellen

In diesem Artikelbeispiel wird der spezifische Co...