Heutzutage ist die Einrichtung eines Servers auf einem Hosting eine Sache von ein paar Minuten und ein paar Mausklicks. Doch gleich nach dem Start findet er sich in einer feindseligen Umgebung wieder, denn er ist dem gesamten Internet gegenüber aufgeschlossen wie ein unschuldiges Mädchen in einer Rocker-Disco. Scanner werden es schnell finden und Tausende von automatisch skriptgesteuerten Bots erkennen, die das Netzwerk nach Schwachstellen und Fehlkonfigurationen durchsuchen. Es gibt einige Dinge, die Sie direkt nach dem Start tun sollten, um einen grundlegenden Schutz zu gewährleisten.
Der erste Schritt besteht darin, einen Nicht-Root-Benutzer für sich selbst zu erstellen. Der Punkt ist, dass der Benutzer root absolute Privilegien im System, und wenn Sie ihm die Fernverwaltung erlauben, erledigen Sie die halbe Arbeit für den Hacker und hinterlassen einen gültigen Benutzernamen für ihn.
Daher müssen Sie einen weiteren Benutzer erstellen und die Remoteverwaltung über SSH für Root deaktivieren.
Durch den Befehl wird ein neuer Benutzer gestartet useradd:
useradd [options] <username>
Dann wird mit dem Befehl ein Passwort dafür hinzugefügt passwd:
passwd <username>
Schließlich muss dieser Benutzer einer Gruppe hinzugefügt werden, die das Recht hat, erhöhte Befehle auszuführen sudo. Je nach Linux-Distribution kann es sich hierbei um unterschiedliche Gruppen handeln. In CentOS und Red Hat wird der Benutzer beispielsweise zur Gruppe hinzugefügt wheel:
usermod -aG wheel <username>
In Ubuntu wird es der Gruppe hinzugefügt sudo:
usermod -aG sudo <username>
Schlüssel statt SSH-Passwörter
Brute Force oder Passwortlecks sind ein Standard-Angriffsvektor, daher ist es am besten, die Passwortauthentifizierung in SSH (Secure Shell) zu deaktivieren und stattdessen die Schlüsselauthentifizierung zu verwenden.
Es gibt verschiedene Programme zur Implementierung des SSH-Protokolls, wie z lsch и Fallbär, aber am beliebtesten ist OpenSSH. Installation des OpenSSH-Clients unter Ubuntu:
sudo apt install openssh-client
Serverinstallation:
sudo apt install openssh-server
Starten des SSH-Daemons (sshd) auf dem Ubuntu-Server:
sudo systemctl start sshd
Starten Sie den Daemon automatisch bei jedem Start:
sudo systemctl enable sshd
Es ist zu beachten, dass der Serverteil von OpenSSH den Clientteil umfasst. Das heißt, durch openssh-server Sie können eine Verbindung zu anderen Servern herstellen. Darüber hinaus können Sie von Ihrem Client-Rechner aus einen SSH-Tunnel von einem Remote-Server zu einem Drittanbieter-Host starten, und der Drittanbieter-Host betrachtet dann den Remote-Server als Quelle der Anfragen. Eine sehr praktische Funktion zum Maskieren Ihres Systems. Einzelheiten finden Sie im Artikel „Praxistipps, Beispiele und SSH-Tunnel“.
Auf einem Client-Rechner macht es in der Regel keinen Sinn, einen vollwertigen Server zu installieren, um die Möglichkeit einer Remote-Verbindung zu einem Rechner zu verhindern (aus Sicherheitsgründen).
Für Ihren neuen Benutzer müssen Sie also zunächst SSH-Schlüssel auf dem Computer generieren, von dem aus Sie auf den Server zugreifen:
ssh-keygen -t rsa
Der öffentliche Schlüssel wird in einer Datei gespeichert .pub und sieht aus wie eine Folge zufälliger Zeichen, die mit beginnt ssh-rsa.
Erstellen Sie dann unter Root ein SSH-Verzeichnis auf dem Server im Home-Verzeichnis des Benutzers und fügen Sie der Datei den öffentlichen SSH-Schlüssel hinzu authorized_keys, mit einem Texteditor wie Vim:
Auf der Clientseite müssen Sie den Speicherort des geheimen Schlüssels für die Authentifizierung angeben:
ssh-add DIR_PATH/keylocation
Nun können Sie sich mit diesem Schlüssel unter dem Benutzernamen am Server anmelden:
ssh [username]@hostname
Nach der Autorisierung können Sie den Befehl scp zum Kopieren von Dateien verwenden, das Dienstprogramm sshfs um ein Dateisystem oder Verzeichnisse remote bereitzustellen.
Es ist ratsam, mehrere Sicherungskopien des privaten Schlüssels zu erstellen, denn wenn Sie die Passwortauthentifizierung deaktivieren und verlieren, haben Sie überhaupt keine Möglichkeit, sich bei Ihrem eigenen Server anzumelden.
Wie oben erwähnt, müssen Sie in SSH die Authentifizierung für Root deaktivieren (aus diesem Grund haben wir einen neuen Benutzer erstellt).
Auf CentOS/Red Hat finden wir die Zeile PermitRootLogin yes in der Konfigurationsdatei /etc/ssh/sshd_config und ändere es:
PermitRootLogin no
Unter Ubuntu fügen Sie die Zeile hinzu PermitRootLogin no zur Konfigurationsdatei 10-my-sshd-settings.conf:
Nachdem Sie überprüft haben, dass sich der neue Benutzer mit seinem Schlüssel authentifiziert, können Sie die Passwortauthentifizierung deaktivieren, um das Risiko von Passwortlecks oder Brute-Force-Angriffen auszuschließen. Um nun auf den Server zuzugreifen, muss ein Angreifer einen privaten Schlüssel erhalten.
Auf CentOS/Red Hat finden wir die Zeile PasswordAuthentication yes in der Konfigurationsdatei /etc/ssh/sshd_config und ändere es so:
PasswordAuthentication no
Unter Ubuntu fügen Sie die Zeile hinzu PasswordAuthentication no einordnen 10-my-sshd-settings.conf:
Anweisungen zum Aktivieren der Zwei-Faktor-Authentifizierung über SSH finden Sie unter hier.
Firewall
Die Firewall stellt sicher, dass nur der Datenverkehr auf den Ports, die Sie direkt zulassen, zum Server geleitet wird. Dies schützt vor der Ausnutzung von Ports, die versehentlich mit anderen Diensten aktiviert wurden, was die Angriffsfläche erheblich verringert.
Bevor Sie eine Firewall installieren, müssen Sie sicherstellen, dass SSH in der Ausschlussliste enthalten ist und nicht blockiert wird. Andernfalls können wir nach dem Starten der Firewall keine Verbindung zum Server herstellen.
Die Ubuntu-Distribution wird mit Uncomplicated Firewall geliefert (ufw) und mit CentOS/Red Hat - Feuerland.
SSH in der Firewall unter Ubuntu zulassen:
sudo ufw allow ssh
Verwenden Sie unter CentOS/Red Hat den Befehl firewall-cmd:
Service Fail2Ban analysiert Protokolle auf dem Server und zählt die Anzahl der Zugriffsversuche von jeder IP-Adresse. Die Einstellungen legen die Regeln fest, wie viele Zugriffsversuche für einen bestimmten Zeitraum erlaubt sind – danach wird diese IP-Adresse für einen bestimmten Zeitraum gesperrt. Lassen Sie uns beispielsweise 5 fehlgeschlagene SSH-Authentifizierungsversuche innerhalb von 2 Stunden zulassen und dann die angegebene IP-Adresse für 12 Stunden blockieren.
Installation von Fail2Ban unter CentOS und Red Hat:
Das Programm verfügt über zwei Konfigurationsdateien: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Verbotseinschränkungen werden in der zweiten Datei angegeben.
Jail für SSH ist standardmäßig mit den Standardeinstellungen aktiviert (5 Versuche, Intervall 10 Minuten, Sperre für 10 Minuten).
Neben SSH kann Fail2Ban auch andere Dienste auf dem Nginx- oder Apache-Webserver schützen.
Automatische Sicherheitsupdates
Wie Sie wissen, werden in allen Programmen ständig neue Schwachstellen gefunden. Nach der Veröffentlichung der Informationen werden Exploits zu beliebten Exploit-Paketen hinzugefügt, die von Hackern und Teenagern massiv genutzt werden, wenn sie alle Server hintereinander scannen. Daher ist es sehr wichtig, Sicherheitsupdates zu installieren, sobald sie erscheinen.
Auf dem Ubuntu-Server sind automatische Sicherheitsupdates standardmäßig aktiviert, sodass keine weiteren Maßnahmen erforderlich sind.
Unter CentOS/Red Hat müssen Sie die Anwendung installieren dnf-automatisch und schalte den Timer ein:
SSH wurde 1995 entwickelt, um Telnet (Port 23) und FTP (Port 21) zu ersetzen, so der Autor des Programms, Tatu Iltonen Standardmäßig ist Port 22 ausgewähltund wurde von der IANA genehmigt.
Natürlich wissen alle Angreifer, auf welchem Port SSH läuft – und scannen ihn zusammen mit den übrigen Standard-Ports, um die Softwareversion herauszufinden, Standard-Root-Passwörter zu überprüfen und so weiter.
Das mehrfache Ändern von Standardports – Verschleierung – reduziert die Menge an Müllverkehr, die Größe der Protokolle und die Belastung des Servers und verringert auch die Angriffsfläche. Obwohl einige kritisieren diese Methode des „Schutzes durch Unklarheit“ (Sicherheit durch Dunkelheit). Der Grund dafür ist, dass diese Technik dem Grundlegenden widerspricht architektonischer Schutz. Daher beispielsweise das US-amerikanische National Institute of Standards and Technology in „Leitfaden zur Serversicherheit“ weist auf die Notwendigkeit einer offenen Serverarchitektur hin: „Die Sicherheit eines Systems sollte nicht von der Geheimhaltung der Implementierung seiner Komponenten abhängen“, heißt es in dem Dokument.
Theoretisch verstößt die Änderung der Standardports gegen die Praxis der offenen Architektur. In der Praxis wird die Menge an bösartigem Datenverkehr jedoch tatsächlich reduziert, sodass es sich hierbei um eine einfache und wirksame Maßnahme handelt.
Die Portnummer kann durch Ändern der Direktive konfiguriert werden Port 22 in der Konfigurationsdatei / etc / ssh / sshd_config. Dies wird auch durch den Parameter angezeigt -p <port> в sshd. SSH-Client und -Programme Sftp unterstützen auch die Option -p <port>.
Parameter -p <port> kann verwendet werden, um die Portnummer anzugeben, wenn eine Verbindung mit dem Befehl hergestellt wird ssh unter Linux. IN Sftp и scp Parameter verwendet wird -P <port> (Großbuchstabe P). Befehlszeilenanweisungen überschreiben alle Werte in Konfigurationsdateien.
Bei vielen Servern können fast alle dieser Aktionen zum Schutz des Linux-Servers in einem Skript automatisiert werden. Wenn jedoch nur ein Server vorhanden ist, ist es besser, den Prozess manuell zu steuern.
Über die Rechte der Werbung
Bestellen und gleich loslegen! Erstellung von VDS jede Konfiguration und mit jedem Betriebssystem innerhalb einer Minute. Mit der maximalen Konfiguration können Sie das Beste aus sich herausholen – 128 CPU-Kerne, 512 GB RAM, 4000 GB NVMe. Episch 🙂