10 Schritte, um Linux Server für Produktionsumgebungen zu sichern
Die Absicherung von Linux-Servern ist unerlässlich, um unsere Daten vor den Hackern zu schützen. Wir sollten eine Methode anwenden, die unseren Server vor den häufigsten Angriffen schützt und gleichzeitig effizient verwaltet werden kann.
Allerdings sollten Sie die Dinge nicht als selbstverständlich betrachten. Selbst die härtesten Server können durch Ausnutzung einer verwundbaren Komponente, die auf dem Server läuft, gekapert werden.
Installieren Sie nur das, was Sie brauchen
Die erste Regel ist, Ihren Server schlank und einfach zu halten. Installieren Sie nur die Pakete, die Sie wirklich brauchen. Wenn es unerwünschte Pakete gibt, entfernen Sie sie. Je weniger Pakete, desto geringer die Chance auf ungepatchten Code.
Schalten Sie SELinux ein
Security-Enhanced Linux (SELinux) ist ein Sicherheitsmechanismus zur Zugriffskontrolle im Kernel.
SELinux bietet 3 grundlegende Betriebsmodi:
- Erzwingen: Dies ist der Standardmodus, der die SELinux-Sicherheitsrichtlinien auf dem Rechner aktiviert und durchsetzt.
- Permissive: In diesem Modus setzt SELinux die Sicherheitsrichtlinien auf dem System nicht durch, sondern warnt nur und protokolliert Aktionen.
- Disabled: SELinux ist ausgeschaltet.
Es kann über die Datei ‚/etc/selinux/config‘ verwaltet werden, wo Sie es aktivieren oder deaktivieren können.
Sicherer Konsolenzugriff
Sie müssen den Konsolenzugriff von Linux-Servern schützen, indem Sie das Booten von externen Geräten wie DVDs / CDs / USB-Stiften nach der BIOS-Einrichtung deaktivieren. Legen Sie außerdem ein BIOS- und Grub-Bootloader-Passwort fest, um diese Einstellungen zu schützen.
Beschränken Sie die Verwendung alter Passwörter
Wir können die Verwendung alter Passwörter einschränken. Die alte Passwortdatei befindet sich unter /etc/security/opasswd. Dies kann mithilfe des PAM-Moduls erfolgen.
Ö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.
# vi /etc/pam.d/common-password
Fügen Sie die folgende Zeile in den Abschnitt „auth“ ein.
auth sufficient pam_unix.so likeauth nullok
Fügen Sie die folgende Zeile in den Abschnitt „password“ ein, um zu verhindern, dass ein Benutzer die letzten 3 Passwörter erneut verwenden kann.
password sufficient pam_unix.so nullok use_authtok md5 shadow remember=3
Die letzten 3 Passwörter werden vom Server gespeichert. Wenn Sie versuchen, eines der letzten 3 alten Passwörter zu verwenden, erhalten Sie eine Fehlermeldung wie.
Check Listening Ports
Verwenden Sie den Befehl ’netstat‘, um offene Ports und die entsprechenden Dienste anzuzeigen.
netstat -tunlp
Deaktivieren Sie unerwünschte Dienste im System mit dem Befehl „chkconfig“ und schließen Sie nicht benötigte Ports.
chkconfig serviceName off
Deaktivieren Sie den Root-Login
Es ist nicht ratsam, sich als Superuser (Root) in den Server einzuwählen. Wir sollten ssh als Root-Benutzer auf dem Server deaktivieren, aber bevor wir das tun, sollten wir einen Benutzer mit sudo-Befugnissen erstellen, damit Sie sich per ssh in den Server einloggen und administrative Aufgaben durchführen können. Sobald Sie auf dem Server angemeldet sind, können Sie bei Bedarf jederzeit zum Benutzer root wechseln.
Erstellen Sie einen neuen Benutzer :
useradd user1
Erstellen Sie ein Passwort für den hinzugefügten Benutzer :
passwd user1
Erteilen Sie dem neu hinzugefügten Benutzer sudo-Berechtigungen :
echo 'user1 ALL=(ALL) ALL' >> /etc/sudoers
SSH zum Server mit dem neuen Benutzer und stellen Sie sicher, dass die Anmeldung funktioniert.
Wir werden jetzt den Root-Login deaktivieren, was bedeutet, dass sich niemand als Root-Benutzer per ssh auf dem Server anmelden kann. Dazu öffnen Sie die sshd-Konfigurationsdatei:
nano /etc/ssh/sshd_conf
Nächste Zeile:
PermitRootLogin no
Dann speichern und schließen Sie diese Datei und starten den Dienst neu
service sshd restart
Wichtig: Loggen Sie sich noch nicht vom Server aus. Testen Sie zunächst, ob Sie sich mit dem zuvor angelegten Benutzer erfolgreich per ssh auf dem Server anmelden können. Öffnen Sie eine weitere Instanz des Terminals und verbinden Sie sich mit dem zuvor angelegten Benutzer mit dem Server. Wenn alles gut funktioniert, können Sie sich sicher als root vom Server abmelden.
Ändern Sie den Port
Wir können den Standard-SSH-Port ändern, um eine Schicht der Undurchsichtigkeit hinzuzufügen, um Ihren Server sicher zu halten.
Öffnen Sie die Datei /etc/ssh/sshd_config
Ersetzen Sie den Standardport 22 durch eine andere Portnummer, z.B. 1110
Speichern Sie &Beenden Sie die Datei
service sshd restart
Nun definieren Sie die Portnummer für die Anmeldung.
ssh username@IP -p 1110
Strg+Alt+Entf in Inittab deaktivieren
Das Drücken von Strg+Alt+Entf führt zu einem Neustart des Servers. Daher ist es immer ratsam, dies zu deaktivieren, da jemand das System versehentlich neu starten kann.
Die Aktion Strg+Alt+Entf ist in /etc/init/control-alt-delete.conf definiert.Kommentieren Sie die folgende Zeile
Passwortlose Anmeldung
Wir können uns ganz einfach über SSH ohne Passwort an unserem Server anmelden, indem wir die ssh-Schlüssel erzeugen. Achten Sie nur darauf, dass Sie sich nur von dem Rechner aus einloggen können, auf dem Sie die ssh-Schlüssel generiert haben
Generierung von SSH-Schlüsseln :
ssh-keygen - t rsa
Kopieren Sie Ihren öffentlichen SSH Schlüssel , und fügen Sie ihn dann auf dem Server hinzu
cat ~/.ssh/id_rsa.pub
Um ssh-Schlüssel auf dem Server hinzuzufügen
Angenommen, wir haben user-user1, um ssh-Schlüssel für den Server bereitzustellen
cd /home/user1
ls -ll
Erstellen Sie ein .ssh-Verzeichnis und erstellen Sie darin eine Datei namens authorized_keys und fügen Sie den öffentlichen SSH-Schlüssel des Benutzers in dieselbe Datei ein
mkdir .ssh
cd /home/admin/.ssh
vim authorized_keys
Fügen Sie den öffentlichen SSH-Schlüssel hinzu und ändern Sie dann den Besitzer der Datei
chown user1 authorized_keys
Ssh-Login deaktivieren
Editieren Sie /etc/ssh/sshd_config
Passwordauthentication no
PermitRootLogin no
Nun, kann sich nur der autorisierte Benutzer mit dem Befehl
ssh user-name@serverIP -p(port Number)
Fail2Ban für SSH-Login
Fail2ban funktioniert, indem die Firewall-Regeln dynamisch geändert werden, um Adressen zu sperren, die eine bestimmte Anzahl von erfolglosen Anmeldeversuchen unternommen haben.
Installieren Sie Fail2ban:
sudo apt-get update
apt-get install fail2ban
Erstellen Sie eine neue Datei jail.local und kopieren Sie den Inhalt von jail.config dorthin und nehmen Sie die Änderungen nur in der Datei jail.local vor
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Bearbeiten Sie /etc/fail2ban/jail.local
Die gewünschten Änderungen vornehmen:
enabled = true
port = ssh ( provide the port number if the default port is changed )
protocol = tcp
filter = sshd
logpath = /var/log/secure
maxretry = 3 ( max no. of tries after which the host should be banned)
findtime = 600 (This parameter sets the window that fail2ban will pay attention to when looking for repeated failed authentication attempts in seconds)
bantime = 600 (time duration for which the host is banned -in seconds)
Dann die fail2ban-Dienste neu starten
service fail2ban restart
IP kann durch Setzen von bantime = -1 dauerhaft blockiert werden.
Hinweis: FAIL2BAN wird die globale IP blockieren.
Sicherheit war früher manchmal eine Unannehmlichkeit, aber jetzt ist sie eine ständige Notwendigkeit – Martina Navratilova
Danke fürs Lesen . Wenn Sie diesen Artikel hilfreich fanden, würden ein paar Klatschen viel bedeuten!
Bleiben Sie dran 🙂