GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Basissicherheit konfigurieren

Einige Leute denken, dass dies nicht gefährlich ist, wenn auf dem Server keine Dienste ausgeführt werden und es keine Rolle spielt, dass alle Ports offen sind. Wir stimmen nicht zu. Wenn Verbindungen zu ungenutzten (und beliebten) Ports blockiert oder unterbrochen werden, wird die überwiegende Mehrheit der böswilligen Eindringlinge zu einem anderen Computer wechseln, auf dem Ports Verbindungen akzeptieren. Es dauert nur wenige Minuten, eine Firewall einzurichten - wir empfehlen Ihnen daher dringend, dies zu tun, um Ihren Server zu schützen.

Nachdem Sie einen neuen Cloud-Server erstellt haben, empfehlen wir Ihnen, die folgenden Aufgaben auszuführen, um die Sicherheit des Servers zu verbessern.

Hinweis: Kleine Änderungen an den folgenden Befehlen können erforderlich sein, wenn Sie eine andere Distribution verwenden. Schlagen Sie bei Bedarf in der Dokumentation Ihres Betriebssystems nach.

Melden Sie sich beim Server an

Sobald Sie die IP-Adresse und das Passwort Ihres Servers haben, melden Sie sich mit dem folgenden SSH-Befehl an:

ssh [email protected]

Hinweis :Wenn Sie sich bei einem neu erstellten Server anmelden, sehen Sie möglicherweise eine Meldung, die besagt, dass sich die Remote-Host-Identifikation geändert hat. Wenn Sie einen Cloud-Server neu erstellen, ändert sich der Remote-Host-Schlüssel, was auf ungewöhnliche oder verdächtige Aktivitäten auf Ihrem Computer hinweist. Um dieses Problem zu vermeiden, entfernen Sie den älteren Eintrag für die Server-IP-Adresse. Auf Ihrem lokalen Computer, bearbeiten Sie die SSH known_hosts Datei mit dem folgenden Befehl und entfernen Sie alle Einträge, die auf die IP-Adresse Ihres Cloud-Servers verweisen:

nano ~/.ssh/known_hosts

Wenn auf Ihrem lokalen Computer ein anderes Betriebssystem als Linux oder Mac OS X ausgeführt wird, der Speicherort von known_hosts Datei wird abweichen. Schlagen Sie in Ihrer Betriebssystemdokumentation nach, um den Speicherort dieser Datei zu erfahren.

Root-Passwort ändern

Nachdem Sie sich bei Ihrem Server angemeldet haben, ändern Sie das Root-Passwort, indem Sie den folgenden Befehl eingeben:

passwd

Fügen Sie einen Admin-Benutzer hinzu

Hinweis :Wenn Sie zusätzliche SSH-Benutzer für einen OnMetal-Server einrichten, finden Sie weitere Informationen zu den entsprechenden OnMetal-Schritten unter Erstellen von OnMetal-Cloud-Servern.

  1. Um einen Administrator hinzuzufügen, geben Sie den folgenden Befehl ein und ersetzen Sie demo mit dem Benutzernamen Ihrer Wahl:

    adduser demo
    

    Hinweis Hinweis:Nach diesem ersten Schritt sollten Sie sich nicht als Root-Benutzer anmelden, um tägliche Vorgänge auf Ihrem Server auszuführen. Sie benötigen jedoch Superuser-Berechtigungen (sudo), um diese administrativen Aufgaben auszuführen.

  2. Um dem Admin-Benutzer die sudo-Berechtigungen zuzuweisen, geben Sie den folgenden Befehl aus, der den Nano-Editor standardmäßig auf dem Ubuntu-Betriebssystem aufruft:

    visudo
    
  3. Fügen Sie am Ende der Datei Ihren Admin-Benutzernamen (anstelle von demoin im folgenden Beispiel) und die folgende Textzeichenfolge hinzu:

    demo   ALL=(ALL) ALL
    
  4. Wenn Sie mit dem Hinzufügen dieser Zeile fertig sind, beenden, bestätigen und speichern Sie die Datei wie folgt:

    a. Drücken Sie Strg-X zum Ausgang.b. Drücken Sie y um die Änderungen zu bestätigen.c. Drücken Sie Eingabe um die Datei als /etc/sudoers.tmp zu speichern .

    Hinweis :Beim Arbeiten im Nano-Editor funktioniert die Rücktaste/Entf-Taste unerwartet und löscht Zeichen vor dem Cursor und nicht dahinter. Sie können dieses Problem beheben, indem Sie die Datei /etc/nanorc bearbeiten Datei (z. B. mit nano) und kommentieren Sie die folgende Zeile entweder aus oder fügen Sie sie hinzu:

        set rebinddelete
    

Das neue Verhalten tritt in Kraft, nachdem Sie die Datei gespeichert und nano erneut geöffnet haben.

Öffentliche und private Schlüssel einrichten (SSH-Keygen)

Eine effektive Möglichkeit, den SSH-Zugriff auf Ihren Cloud-Server zu sichern, ist die Verwendung eines öffentlichen/privaten Schlüssel, was bedeutet, dass ein öffentlicher Schlüssel auf dem Server abgelegt wird und der private Schlüssel auf Ihrem lokalen Computer liegt. Dies macht es unmöglich, dass sich jemand nur mit einem Passwort anmeldet; Sie müssen den privaten Schlüssel haben. Diese Einrichtung besteht aus den folgenden grundlegenden Schritten:Erstellen Sie den Schlüssel auf Ihrem lokalen Computer, kopieren Sie den öffentlichen Schlüssel auf den Server und legen Sie die richtigen Berechtigungen für den Schlüssel fest.

Die folgenden Anweisungen gehen davon aus, dass Sie Linux oder Mac OS X verwenden. Anweisungen für Windows finden Sie unter Schlüsselgenerierung mit Putty für Windows.

Schritt 1. Erstellen Sie die öffentlichen und privaten Schlüssel

  1. Erstellen Sie auf Ihrem lokalen Computer einen Ordner für Ihre Schlüssel:

    mkdir ~/.ssh
    
  2. Um die SSH-Schlüssel zu erstellen, auf Ihrem lokalen Computer, geben Sie den folgenden Befehl ein:

    ssh-keygen -t rsa
    
    • Die id_rsa und id_rsa.pub werden im Verzeichnis .ssh erstellt. Die Datei rsa.pub enthält den öffentlichen Schlüssel. Sie platzieren diese Datei auf Ihrem Server.

    • Die id_rsa-Datei ist Ihr privater Schlüssel. Zeigen, verschenken oder bewahren Sie diese Datei niemals auf einem öffentlichen Computer auf.

Schritt 2. Kopieren Sie den öffentlichen Schlüssel

Sie können den scp verwenden Befehl, um den öffentlichen Schlüssel auf Ihrem Server abzulegen.

  1. Noch auf Ihrem lokalen geben Sie den folgenden Befehl ein und ersetzen Sie Demo, IP-Adresse und Home-Verzeichnis des Admin-Benutzers durch Ihren Admin-Benutzer:

    scp ~/.ssh/id_rsa.pub [email protected]:/home/demo/
    
  2. Wenn Sie dazu aufgefordert werden, geben Sie das Admin-Benutzerpasswort ein.

  3. Erstellen Sie im Home-Ordner des Admin-Benutzers auf Ihrem Server ein Verzeichnis mit dem Namen .ssh und verschieben Sie den Pub-Schlüssel hinein, wie in den folgenden Beispielen gezeigt:

    mkdir /home/demo/.ssh
    
    mv /home/demo/id_rsa.pub /home/demo/.ssh/authorized_keys
    

Schritt 3. SSH-Berechtigungen ändern

Legen Sie mit den folgenden Befehlen die richtigen Berechtigungen für den Schlüssel fest und ändern Sie den Benutzer und die Gruppe „demo“ in Ihren Administratorbenutzer und Ihre Administratorgruppe:

chown -R demo:demo /home/demo/.ssh
chmod 700 /home/demo/.ssh
chmod 600 /home/demo/.ssh/authorized_keys

Sie haben den Schlüssel jetzt erfolgreich auf Ihrem lokalen Computer erstellt, den öffentlichen Schlüssel auf Ihren Server kopiert und die richtigen Berechtigungen für den Schlüssel festgelegt.

SSH-Konfiguration ändern

Den SSH-Dienst auf dem Standardport 22 zu belassen, macht ihn zu einem einfachen Ziel. Wir empfehlen, die standardmäßige SSH-Konfiguration zu ändern, um sie sicherer zu machen.

  1. Geben Sie den folgenden Befehl aus:

    nano /etc/ssh/sshd_config
    
  2. Ändern Sie den Standardport von 22 auf einen Ihrer Wahl, schalten Sie Root-Logins aus und definieren Sie, welche Benutzer sich anmelden können:

    Port 22                           <--- change to a port of your choosing
    Protocol 2
    PermitRootLogin no
    PasswordAuthentication no
    UseDNS no
    AllowUsers demo
    

    Hinweis :Die Portnummer kann eine beliebige Ganzzahl zwischen 1025 und 65536 sein. Notieren Sie sich unbedingt die neue Portnummer und denken Sie daran, Portkonflikte zu vermeiden, wenn Sie später zusätzliche Listening-Prozesse konfigurieren.

Da Sie einen öffentlichen/privaten Schlüssel eingerichtet haben, können Sie den Parameter „PasswordAuthentication“ auf „no“ setzen. Wenn Sie jedoch beabsichtigen, von verschiedenen Computern aus auf Ihren Server zuzugreifen, sollten Sie PasswordAuthentication auf yes belassen. Verwenden Sie den privaten Schlüssel nur, wenn der lokale Computer sicher ist (d. h. legen Sie den privaten Schlüssel nicht auf einem Arbeitscomputer ab).

Diese Einstellungen sind noch nicht aktiviert. Bevor Sie SSH über den neuen Port neu starten, müssen Sie mithilfe von iptables eine einfache Firewall erstellen.

Hinweis :SSH noch nicht neu starten.

Richten Sie eine private Firewall mit iptables ein

Das Dienstprogramm namens iptables ist die Standard-Firewall für Linux-Systeme. Es funktioniert, indem es Verbindungen zu Ports oder Diensten ablehnt, die Sie angeben.

Hinweis: Das Verfahren in diesem Abschnitt gilt nicht für Server, die systemd verwenden . Server, die systemd verwenden Verwenden Sie jetzt ein anderes Firewall-Frontend für iptables namens FirewallD. Die Syntax und Implementierung für FirewallD sind sehr unterschiedlich. Für die richtige Firewall-Konfiguration auf FirewallDund systemd Server finden Sie unter „Introduction to firewalld“ im Red Hat Kundenportal.

Als Teil dieses Verfahrens öffnen Sie drei Ports:ssh , http , und https.

Anschließend erstellen Sie zwei Dateien:

  • /etc/iptables.test.rules

  • /etc/iptables.up.rules

Der erste ist ein Satz temporärer Testregeln und der zweite ist der permanente Satz von Regeln, die iptables verwenden wird.

Hinweis :Sie müssen Root-Benutzerberechtigungen haben, um den Vorgang abzuschließen. Wenn Sie derzeit nicht als Root angemeldet sind, verwenden Sie den Befehl sudo vor den folgenden Befehlen.

  1. Geben Sie den folgenden Befehl ein, um zu sehen, welche Prozesse derzeit ausgeführt werden:

    iptables -L
    

    Sie werden etwas Ähnliches sehen:

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    

    Das bedeutet, dass der Server alles von jedem auf jedem Port akzeptiert.

  2. Erstellen Sie zum Erstellen der Firewall die Datei /etc/iptables.test.rules und einige Regeln hinzufügen. Wenn Sie diese Schritte zuvor durchgearbeitet haben, darf diese Datei nicht leer sein:

    nano /etc/iptables.test.rules
    
  3. Ports nach Bedarf ändern und hinzufügen.

  4. Geben Sie den folgenden Befehl aus, um die Regeln auf Ihren Server anzuwenden:

    iptables-restore < /etc/iptables.test.rules
    
  5. Geben Sie den folgenden Befehl aus, um Unterschiede festzustellen:

    iptables -L
    
  6. Wenn sich die Ausgabe nicht ändert, wiederholen Sie die vorherigen Schritte und versuchen Sie es erneut.

  7. Überprüfen Sie die Regeln und sehen Sie genau, was akzeptiert, abgelehnt und fallen gelassen wird. Wenn Sie mit den Regeln zufrieden sind, speichern Sie sie dauerhaft, indem Sie den folgenden Befehl ausführen:

    iptables-save > /etc/iptables.up.rules
    

    Hinweis :Wenn der Server neu gestartet wird, bevor Sie die Regeln permanent speichern, gehen die Änderungen verloren und der Server kehrt zu den vorherigen Einstellungen zurück.

  8. Fügen Sie ein Skript hinzu, das das System ausführt, wenn Ihre Netzwerkschnittstellen gestartet werden. Erstellen Sie die Datei, indem Sie Folgendes ausführen:

    nano /etc/network/if-pre-up.d/iptables
    
  9. Fügen Sie der neuen Datei die folgenden Zeilen hinzu:

    #!/bin/sh
    /sbin/iptables-restore < /etc/iptables.up.rules
    
  10. Speichern Sie Ihre Änderungen und machen Sie das neue Skript ausführbar:

    chmod +x /etc/network/if-pre-up.d/iptables
    

IPtables in Red Hat einrichten

Wenn Sie eine Red-Hat-Distribution verwenden, funktioniert iptables etwas anders als auf dem Ubuntu-Betriebssystem. Mit den folgenden Befehlen können Sie Ihren iptables-Regelsatz direkt von der Befehlszeile aus ändern.

HTTP - Port 80

Verwenden Sie für RHEL 7 und CentOS 7 den folgenden Befehl, um Port 80 für HTTP-Datenverkehr (Web) in Ihrer iptables-Firewall zu öffnen:

sudo firewall-cmd --add-service=http --permanent

Verwenden Sie für ältere Betriebssystemversionen den folgenden Befehl:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport http -j ACCEPT

HTTPS/SSL - Port 443

Verwenden Sie für RHEL 7 und CentOS 7 den folgenden Befehl, um Port 443 für sicheren HTTP-Datenverkehr zu öffnen:

sudo firewall-cmd --add-service=https --permanent

Verwenden Sie für ältere Betriebssystemversionen den folgenden Befehl:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport https -j ACCEPT

SSH - Port 22

Obwohl Port 22 standardmäßig offen ist, damit Sie SSH mit Ihrem Server verbinden können, nachdem er erstellt wurde, zeigt Ihnen der folgende Befehl, wie Sie Port 22 in RHEL 7 und CentOS 7 öffnen würden:

sudo firewall-cmd --add-service=ssh -permanent

Wenn Sie einen benutzerdefinierten Port für SSH einrichten, verwenden Sie den folgenden Befehl für RHEL7 und CentOS 7:

sudo firewall-cmd --add-port=<customport>/tcp --permanent

Verwenden Sie für ältere Betriebssystemversionen den folgenden Befehl, um Port 22 zu öffnen:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ssh -j ACCEPT

FTP - Port 21

FTP ist ein gängiger Dienst für die Dateiübertragung, der jedoch weitgehend veraltet ist, da es sich nicht um ein sicheres Protokoll handelt. Wir empfehlen dringend, stattdessen ein sicheres Dateiübertragungsprotokoll wie SFTP zu verwenden. Wenn Sie unbedingt FTP verwenden müssen, verwenden Sie den folgenden Befehl, um den Standardport 21 in RHEL 7 und CentOS 7 zu öffnen:

sudo firewall-cmd --add-service=ftp --permanent

Verwenden Sie für ältere Betriebssystemversionen die folgenden Befehle:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ftp -j ACCEPT
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ftp-data -j ACCEPT

MySQL - Port 3306

Wenn Sie von einem anderen Server aus eine Remote-Verbindung zu Ihrer MySQL-Datenbank herstellen müssen, müssen Sie Port 3306 in iptables öffnen. Verwenden Sie für RHEL 7 und CentOS 7 den folgenden Befehl:

sudo firewall-cmd --add-service=mysql --permanent

Verwenden Sie für ältere Betriebssystemversionen den folgenden Befehl:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport mysql -j ACCEPT

Speichern Sie Ihre Regeln

Verwenden Sie den folgenden Befehl, um alle von Ihnen erstellten Regeln zu speichern. Wenn vor dem Neustart Ihres Servers nicht gespeichert wird, wird der iptables-Regelsatz auf den Standardregelsatz zurückgesetzt und den gesamten Datenverkehr außer auf Port 22 blockiert. Wenn Sie RHEL 7 oder CentOS 7 verwenden, ist dieser Schritt nicht erforderlich.

sudo /sbin/service iptables save

IPtables neu starten

Ihre Änderungen an iptables werden erst wirksam, nachdem Sie die Regeln gespeichert und den iptables-Dienst neu gestartet haben. Denken Sie daran, wenn Sie iptables neu starten, bevor Sie Ihre Regeln speichern, kehrt iptables zum Standardregelsatz zurück.

Verwenden Sie für RHEL 7 und CentOS 7 den folgenden Befehl:

firewall-cmd --reload

Verwenden Sie für ältere Betriebssystemversionen den folgenden Befehl:

sudo /sbin/service iptables restart

Regeln prüfen

Um die Regeln nach dem Neuladen der Firewall in RHEL 7 und CentOS 7 zu überprüfen, verwenden Sie die folgenden Befehle:

firewall-cmd --get-active-zones

Dies gibt zurück, welche Zone aktiv ist (diejenige, in der Sie gerade alle Ihre Regeln gespeichert haben).

firewall-cmd --zone=<zone> --list-all

Dies listet die aktivierten Dienste in einer bestimmten Zone auf.

ssh neu starten

Jetzt können Sie den SSH-Dienst neu starten. Bleiben Sie angemeldet, während Sie ssh neu starten, und testen Sie es mit einer neuen Verbindung. Wenn ein Fehler auftritt, können Sie ihn so leichter beheben.

Bei den meisten Distributionen ist der Dienst sshd und Sie starten ihn mit dem Befehl:

neu
sudo service sshd restart

Auf dem Ubuntu-Betriebssystem und einigen anderen Distributionen heißt der Dienst ssh und Sie starten ihn mit einem ähnlichen Befehl neu:

sudo service ssh restart

Wenn Sie nach dem Neustart von SSH Probleme haben, eine neue Verbindung herzustellen, überprüfen Sie die Symptome, um festzustellen, woran es liegen könnte.

  • Wenn die Verbindung abläuft, liegt möglicherweise ein Problem mit der iptables-Konfiguration vor.
  • Wenn Sie eine Warnung zu einem privaten Schlüssel erhalten, wurde Ihr Schlüssel möglicherweise nicht richtig auf dem Server installiert (überprüfen Sie auf zusätzliche Zeilenumbrüche oder Zeichen, die beim Kopieren-und-Einfügen-Vorgang übersehen wurden).
  • Wenn Sie den Server neu aufgebaut haben, müssen Sie möglicherweise den Host-Schlüssel aus Ihrer known_hosts-Datei entfernen, bevor Sie eine Verbindung herstellen können.

Wenn Sie ausgesperrt sind

Die falsche Konfiguration von SSH, sudo oder iptables kann dazu führen, dass Sie von Ihrem System ausgeschlossen werden. Melden Sie sich in diesem Fall beim TheRackspace Cloud Control Panel an und verwenden Sie die Notfallkonsole oder den Rettungsmodus, um die Konfigurationen zu reparieren.

Dies sind die Grundlagen für die Verbindung zu einem Linux-Cloud-Server und die Einrichtung von Sicherheit. Informationen zum Ausführen dieser Schritte auf einem Windows-Server finden Sie unter Windows Cloud Server.


Linux
  1. So installieren und konfigurieren Sie OpenVPN Server unter Debian 10

  2. So installieren und konfigurieren Sie den VNC-Server unter Debian 10

  3. 7 grundlegende Tipps zur Verbesserung der Apache-Sicherheit

  4. So sichern Sie den PostgreSQL-Server

  5. So installieren und konfigurieren Sie den OpenVPN-Server unter Ubuntu 20.04

So konfigurieren Sie NGINX auf einem CentOS 7-Server

So konfigurieren Sie Postfix als Nur-Senden-SMTP-Server unter Ubuntu 20.04

Installieren und konfigurieren Sie phpMyAdmin

Konfigurieren Sie die Netzwerkbindung in Ubuntu Server

Ubuntu 19.04:NTP-Server konfigurieren

Centos 7:NTP-Server konfigurieren