Wähle einen Artikel
CentOS Stream 10 installieren
CentOS Stream 10 installieren

VPS von dogado - gehostet in Deutschland

Behalte die Kontrolle über deinen vServer/VPS und steuere deine Online-Präsenz souverän. Profitiere von Hochgeschwindigkeits-NVME-SSDs, die bis zu 6-mal schneller sind als herkömmliche.

Server-Racks mit blauer Beleuchtung, Frontpaneele mit Laufwerkschächten, Lüftungsgitter und Netzwerkausrüstung.

CentOS Stream 10 installieren

Geht zuerst auf die Webseite: https://onehome.dogado.de und wählt dort „Meine Produkte“ aus:

Screenshot einer Web-Seite mit dem Titel Meine Produkte; zwei Cloud-Server-Karten: testbereich.net (Debian) und CentOS.

Unter dem Bereich „Cloud Servers“ seht ihr nun eure Server. Wählt hier den Server aus, auf dem ihr CentOS 10 installieren wollt. Hier findet ihr nun den Button „Server neu bereitstellen“:

Screenshot einer Cloud-Server-Verwaltungsoberfläche mit linkem Menü, Übersichtsseite und eine orange umrandete Schaltfläche.

In diesem Dialog wählt ihr CentOS aus. Anschließend könnt ihr noch die Version wählen. Hier wählt ihr die aktuelle 10er Version.

Weboberfläche zur Serverbereitstellung; Betriebssystem-Kacheln, Versionsauswahl, Abbrechen- und Nächste-Button

Nun legt ihr einen Hostnamen und einen Anzeigenamen fest. Beide Angaben könnt ihr später jederzeit noch anpassen. Der Anzeigename ist nur für die dogado Oberfläche, der Hostname ist der Name des Systems selbst und wird zum Beispiel bei einem E-Mail-Server wichtig.

Screenshot einer Server-Neu-Bereitstellung-Seite mit Warnhinweis, Felder für Anzeigename, Hostname, Passwort und SSH-Key.

Anschließend wählt ihr noch ein sicheres Kennwort. dogado bietet hier auch die Möglichkeit, ein sicheres Kennwort mit einem Klick zu generieren.

Screenshot eines Passwort-Generators mit Länge, Groß-/Kleinbuchstaben, Zahlen und Sonderzeichen; Button generieren.

Vergewissert euch, dass ihr den richtigen Server ausgewählt habt. Wenn ihr weiter klickt, wird der aktuelle Server komplett gelöscht mit allen darauf enthaltenen Daten. Sichert wichtige Daten daher vorher mit einem Backup.

Dialogfenster 'Mit CentOS neu bereitstellen?'; Warnhinweis, Checkbox, Buttons 'Abbrechen' und 'Bestätigen'.

Die Bereitstellung des vServers dauert nun einen kurzen Moment. Aktualisiert die Webseite mit der Taste „F5“, um den aktuellen Stand einzusehen. Wenn alles erfolgreich ist, solltet ihr den Status „aktiv“ sehen:

Screenshot: linke Seitenleiste Cloud Server, Übersicht markiert; Hauptbereich centos, Bearbeiten, Status Aktiv.

Im Bereich „Details“ könnt ihr auch die IPv4- und IPv6-Adresse des Servers einsehen. Diese braucht ihr, damit ihr euch im nächsten Schritt mittels SSH mit dem Server verbinden könnt.

Details: CentOS 10, 4 vCPUs, 8 GB RAM, IPv4/IPv6-Adressen, Local Speicher 200 GB.

Ebenfalls seht ihr hier den Benutzernamen, welchen ihr für den Login benötigt. In meinem Fall heißt der Benutzer „administrator“.

Per SSH mit dem vServer verbinden

Nachdem der vServer nun mit CentOS 10 bereitgestellt wurde, könnt ihr euch direkt damit verbinden. Ihr könnt beispielsweise das Programm PuTTY (https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) nutzen oder direkt den integrierten SSH-Client von Windows 11. Ich werde es mit dem Windows 11 integrierten Client zeigen.

Dazu öffnet ihr ein Windows Terminal und gebt Folgendes ein:

ssh benutzernamen@eureip

Bei mir sieht es dann so aus:

Schwarzes Terminalfenster mit SSH-Warnung: Host 81.88.19.201, Fingerprint SHA256; Abfrage.

Bei der ersten Verbindung per SSH fragt der SSH-Client nach, ob ihr dem Server vertrauen wollt. Dies bestätigt ihr mit „yes“. Anschließend gebt ihr euer Kennwort ein, welches ihr bei der Installation festgelegt habt.

Nachdem ihr erfolgreich verbunden seid, wechselt ihr zum Benutzer „root“ für die weitere Einrichtung. Dazu gebt ihr folgenden Befehl ein:

sudo -i

Jetzt sollte sich die Konsole entsprechend verändert haben und den Benutzer „root“ anzeigen:

Terminalfenster mit zwei Zeilen: [administrator@centos ~]$ sudo -i und [root@centos ~]#

System aktualisieren

Zuerst führt ihr ein Update aller installierten Programme durch. Dazu gebt ihr Folgendes ein:

dnf upgrade --refresh -y

Nach einem kurzen Moment sollte euer Server „Complete!“ anzeigen:

Schwarzes Terminal mit weißem Text; Aktualisierungsvorgang mit 'Running transaction', 'Upgrading' und 'Complete!'

Werkzeug installieren

Hier installiert ihr euch den Texteditor „nano“. Dieser lässt sich sehr einfach bedienen und hilft uns, im späteren Teil dieser Anleitung die Konfigurationsdateien zu erstellen:

dnf install -y nano

Bei nano speichert ihr Dateien mit STRG+O und ENTER. Beenden könnt ihr nano mit STRG+X.

Neuen Benutzer anlegen

Der Benutzername „administrator“ ist auf vielen Servern vorhanden und wird deshalb häufig bei automatisierten Angriffen genutzt. Daher solltet ihr euch einen eigenen Benutzer anlegen. Der neue Benutzer wird Mitglied der Gruppe „wheel“, damit er mittels „sudo“ zum root Benutzer wechseln kann. Ich wähle hier den Benutzernamen „dogado“.

useradd -m -G wheel dogado
passwd dogado

Öffnet nun ein zweites Terminal in Windows und baut mit dem neuen Benutzer eine Verbindung zu eurem Server auf. Gebt dazu folgendes ein:

ssh neuer-benutzernamen@eureip

Nach dem Login gebt ihr noch „sudo -i“ ein, um zum root Benutzer zu wechseln:

Terminalfenster mit sudo -i; Text über drei Grundsätze; Passwort-Eingabe wird nicht sichtbar; [root@centos ~]#

Wenn dies erfolgreich war, könnt ihr den Benutzer „administrator“ löschen, um eine mögliche Angriffsfläche zu verringern. Dazu müsst ihr zuerst noch die offene SSH-Sitzung des Benutzers „administrator“ beenden, indem ihr das Fenster schließt. Wartet danach einen kurzen Moment und gebt Folgendes ein:

userdel -r administrator

Solltet ihr die Meldung erhalten, dass der Benutzer aktuell noch genutzt wird, so wartet noch einen Moment und gebt den Befehl dann erneut ein:

Root-Terminal [root@centos ~]#; Befehl: userdel -r administrator; Fehlermeldung: Benutzer wird von Prozess 5053 verwendet.

Firewall einrichten

Wir wollen die Firewall „firewalld“ installieren und konfigurieren. Dort könnt ihr festlegen, welche Ports bzw. Dienste von außen erreichbar sind. Installiert und aktiviert zuerst firewalld:

dnf install -y firewalld
systemctl enable --now firewalld

Nach einem kurzen Moment solltet ihr „Complete“ im Terminal sehen. Schaut euch anschließend an, welche Ports und Dienste aktuell freigegeben sind:

firewall-cmd --list-all

So sieht meine Ausgabe aus:

Schwarzes Terminalfenster zeigt firewall-cmd --list-all: Zone public, Felder target, Interfaces, Services.

Konkret sind die Dienste „cockpit“, „dhcpv6-client“ und „ssh“ freigegeben. Um unseren SSH-Port gegen automatische Angriffe zu schützen, wollen wir diesen später auf den Port 3333 legen. Ihr könnt grundsätzlich jeden freien Port über 1023 nutzen. Wir geben diesen Port jetzt schon frei:

firewall-cmd --permanent --add-port=3333/tcp
firewall-cmd --reload

SSH-Zugang absichern

Hier wollen wir zwei Maßnahmen anwenden, welche einen großen Effekt bringen. Zum einen verbieten wir die direkte Anmeldung als „root“ und verlegen zusätzlich noch den SSH-Port von 22 auf 3333. Der Portwechsel hilft nichts gegen einen gezielten Angriff, senkt aber die Zahl automatisierter Angriffe deutlich.

Neuen Port für SELinux freigeben

SELinux ist bei CentOS ein zusätzlicher Schutz. Es erlaubt dem SSH-Dienst nur bestimmte Ports. Ohne Freigabe würde SSH auf Port 3333 nicht starten. Gebt folgende Befehle ein, um den Port 3333 freizugeben. Solltet ihr einen anderen Port gewählt haben, so gebt euren Port entsprechend frei.

dnf install -y policycoreutils-python-utils
semanage port -a -t ssh_port_t -p tcp 3333

SSH-Konfiguration anpassen

Nachdem ihr jetzt die Freigabe für den Port 3333 erstellt habt, müssen wir diesen im SSH-Dienst noch umstellen. Damit eure Änderungen nicht bei Updates überschrieben werden, erzeugt ihr eine eigene Datei.

nano /etc/ssh/sshd_config.d/00-haertung.conf

Kopiert folgenden Inhalt in die Datei. Passt entsprechend den Benutzer „dogado“ an euren Benutzernamen an.

Port 3333
PermitRootLogin no
MaxAuthTries 3
LoginGraceTime 30
AllowUsers dogado
EinstellungErklärung
PortDer neue SSH-Port.
PermitRootLogin noEine Anmeldung als root wird immer abgelehnt.
MaxAuthTries 3Nach drei Fehlversuchen wird die Verbindung getrennt.
LoginGraceTime 30Nicht angemeldete Verbindungen werden nach 30 Sekunden geschlossen.
AllowUsersNur die genannten Benutzer dürfen sich per SSH anmelden. Mehrere Namen trennt ihr mit Leerzeichen.

Nachdem ihr die Konfiguration gespeichert habt, testet ihr mit folgendem Befehl, ob die Konfiguration fehlerfrei ist:

sshd -t

Hier solltet ihr keine Ausgabe sehen. Solltet ihr eine Ausgabe sehen, so ist ein Fehler in der Datei und ihr solltet den Dienst nicht neu starten. Korrigiert die Datei entsprechend.

Wenn alles fehlerfrei ist, startet ihr den Dienst neu, damit die Änderungen übernommen werden:

systemctl restart sshd

Neuen Zugang testen

Lasst eure aktuelle Sitzung zur Sicherheit offen. Öffnet eine neue Sitzung mit dem neuen Port:

ssh -p 3333 name@EURE-SERVER-IP

Wenn alles korrekt läuft, solltet ihr euch nun anmelden können mit eurem neuen Benutzer über den geänderten Port. Schließt das alte Terminal erst, wenn dies korrekt funktioniert.

SSH Port 22 aus der Firewall entfernen

Nachdem der Login auf Port 3333 korrekt funktioniert hat, entfernt ihr den Port 22 noch aus der Firewall. Dazu gebt ihr Folgendes ein:

firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload

Noch sicherer wird der Zugang, wenn ihr statt eines Passworts SSH-Schlüssel nutzt. Wie das geht, zeigen wir euch in unserer Anleitung zur Public-Key-Authentifizierung.

Cockpit

Bei Cockpit handelt es sich um eine Verwaltungsoberfläche, welche ihr per Webbrowser öffnen könnt. Bei jedem SSH-Login solltet ihr folgende Meldung gesehen haben:

Dunkler Bildschirm mit weißem Text: Web console: https://centos:9090/ or https://81.88.19.201:9090/

Ihr könnt die Webseite öffnen und solltet dann folgendes sehen:

Screenshot einer Webkonsole mit Seitenleiste, gelber Warnhinweis, Hauptbereich 'Meldungen' und 'Nutzung' (CPU, Speicher).

Mit dieser grafischen Oberfläche könnt ihr viele Parameter von CentOS einsehen und verändern. Dieser Dienst ist aber für das gesamte Internet erreichbar und die Einschränkungen aus den vorherigen Kapiteln sowie der Brute-Force-Schutz aus dem nachfolgenden Kapitel gelten nur für den SSH-Dienst. Wenn ihr Cockpit nicht nutzt, solltet ihr den Dienst aus Sicherheitsgründen deaktivieren. Dies könnt ihr mit folgenden Befehlen erledigen:

systemctl disable --now cockpit.socket
firewall-cmd --permanent --remove-service=cockpit

Anschließend ladet ihr die Firewall neu, damit die Einstellung übernommen wird:

firewall-cmd --reload

Brute-Force-Schutz bereitstellen

Fail2Ban erkennt fehlgeschlagene Logins und kann die betreffenden IP-Adressen sperren. Dies ist ein Vorteil gegenüber der SSH-Einstellung „MaxAuthTries“, die zwar die Verbindung nach drei Fehlversuchen trennt, bei der ein Angreifer aber jederzeit eine neue Verbindung aufbauen kann.

Fail2Ban installieren

Um Fail2Ban zu installieren, benötigt ihr das Zusatz-Repository EPEL. Dies richtet ihr nun ein:

dnf config-manager --set-enabled crb
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm

Jetzt könnt ihr Fail2Ban installieren:

dnf install -y fail2ban fail2ban-firewalld

SSH-Schutz aktivieren

Nachdem ihr Fail2Ban installiert habt, müsst ihr es noch einrichten. Dazu legt ihr euch eine Konfigurationsdatei an. Dies hat den Vorteil, dass sie bei Updates nicht überschrieben wird:

nano /etc/fail2ban/jail.d/sshd.local

Fügt den folgenden Inhalt ein:

[sshd]
enabled = true
port = 3333
backend = systemd
maxretry = 5
findtime = 10m
bantime = 1h

Mit diesen Einstellungen wird also eine IP-Adresse für eine Stunde gesperrt, wenn sie sich innerhalb von 10 Minuten fünf Mal falsch angemeldet hat.

EinstellungErklärung
portEuer SSH-Port.
backend = systemdFail2ban liest die Anmeldeversuche direkt aus dem Systemprotokoll.
maxretryAnzahl der erlaubten Fehlversuche …
findtime… innerhalb dieses Zeitraums.
bantimeSo lange bleibt eine IP-Adresse danach gesperrt.

Jetzt könnt ihr Fail2Ban starten:

systemctl enable --now fail2ban

Nun solltet ihr prüfen, ob der SSH-Schutz aktiv ist:

fail2ban-client status sshd

Hier könnt ihr sehen, dass der Schutz für SSH aktiv ist und es bisher noch keine gesperrten IP-Adressen gibt:

Terminal: root@centos; fail2ban-client status sshd, Filter & Actions; Currently failed:0, Currently banned:0

Genauere Logs findet ihr hier:

tail -n 50 /var/log/fail2ban.log
Nächster Artikel
Debian auf vServer/Linux installieren
Weitere passende Themen
Finde den passenden vServer zu deinem Projekt