Website-Suche

Ersteinrichtung und Konfigurationen des Servers in RHEL 7


In diesem Tutorial besprechen wir die ersten Konfigurationsschritte, die Sie nach einer Neuinstallation von Red Hat Enterprise Linux 7 auf einem Bare-Metal-Server oder auf einem Virtual Private Server durchführen müssen.

Anforderungen

  1. RHEL 7 – Minimale Installation

Wichtig: CentOS 7-Benutzer können diesem Artikel folgen, um eine Ersteinrichtung des Servers unter CentOS 7 durchzuführen.

Aktualisieren des RHEL 7-Systems

Melden Sie sich im ersten Schritt mit einem Konto mit Root-Rechten oder direkt als Root bei Ihrer RHEL-Serverkonsole an und führen Sie den folgenden Befehl aus, um Ihre Systemkomponenten, wie z. B. die installierten Pakete, den Kernel oder andere Sicherheitspatches vollständig zu aktualisieren.

# yum check-update
yum update

Um alle lokal heruntergeladenen Pakete und andere zugehörige YUM-Caches zu entfernen, führen Sie den folgenden Befehl aus.

# yum clean all

Installieren von Systemdienstprogrammen unter RHEL 7

Die folgenden Dienstprogramme können sich als nützlich für die tägliche Systemverwaltung erweisen: nano (Texteditor, um den vi-Editor zu ersetzen), wget, curl (Dienstprogramme, die hauptsächlich zum Herunterladen von Paketen über das Netzwerk verwendet werden), net-tools, lsof (Dienstprogramme zur Verwaltung lokaler Netzwerke) und bash-completion (Befehlszeilen-Autovervollständigung).

Installieren Sie sie alle auf einmal, indem Sie den folgenden Befehl ausführen.


yum install nano wget curl net-tools lsof bash-completion

Einrichten des Netzwerks in RHEL 7

RHEL 7 verfügt über eine breite Palette von Tools, die zum Konfigurieren und Verwalten des Netzwerks verwendet werden können, von der manuellen Bearbeitung der Netzwerkkonfigurationsdatei bis hin zur Verwendung von Befehlen wie ip, ifconfig, nmtui, nmcli oder route.

Das einfachste Dienstprogramm, das ein Anfänger zum Verwalten und Ändern von Netzwerkkonfigurationen verwenden kann, ist die grafische Befehlszeile nmtui.

Um den System-Hostnamen über das Dienstprogramm nmtui zu ändern, führen Sie den Befehl nmtui-hostname aus, legen Sie den Hostnamen Ihres Computers fest und drücken Sie OK, um den Vorgang abzuschließen, wie im folgenden Screenshot dargestellt.


nmtui-hostname

Um eine Netzwerkschnittstelle zu bearbeiten, führen Sie den Befehl nmtui-edit aus, wählen Sie die Schnittstelle aus, die Sie bearbeiten möchten, und wählen Sie Bearbeiten aus dem rechten Menü aus, wie im folgenden Screenshot gezeigt.

Sobald Sie sich in der grafischen Oberfläche befinden, die vom Dienstprogramm nmtui bereitgestellt wird, können Sie die IP-Einstellungen der Netzwerkschnittstelle einrichten, wie im folgenden Screenshot dargestellt. Wenn Sie fertig sind, navigieren Sie mit der [Tab]-Taste zu OK, um die Konfiguration zu speichern und zu beenden.

Um die neue Konfiguration der Netzwerkschnittstelle anzuwenden, führen Sie den Befehl nmtui-connect aus, wählen Sie die Schnittstelle aus, die Sie verwalten möchten, und klicken Sie auf die Option Deaktivieren/Aktivieren, um die Schnittstelle außer Betrieb zu nehmen und mit den IP-Einstellungen zu starten, wie in den folgenden Screenshots dargestellt.


nmtui-connect

Um die Einstellungen der Netzwerkschnittstelle anzuzeigen, können Sie den Inhalt der Schnittstellendatei überprüfen oder die folgenden Befehle ausführen.


ifconfig enp0s3
ip a
ping -c2 google.com

Weitere nützliche Dienstprogramme, die verwendet werden können, um die Geschwindigkeit zu verwalten, den Verbindungsstatus zu verknüpfen oder Informationen über Netzwerkschnittstellen von Maschinen zu erhalten, sind ethtool und mii-tool.


ethtool enp0s3
mii-tool enp0s3

Neues Benutzerkonto erstellen

Erstellen Sie im nächsten Schritt, während Sie als root auf Ihrem Server angemeldet sind, einen neuen Benutzer mit dem folgenden Befehl. Dieser Benutzer wird später verwendet, um sich in Ihr System einzuloggen und administrative Aufgaben zu erledigen.

# adduser tecmint_user

Nachdem Sie den Benutzer mit dem obigen Befehl hinzugefügt haben, richten Sie ein sicheres Kennwort für diesen Benutzer ein, indem Sie den folgenden Befehl eingeben.

# passwd tecmint_user

In Fällen, in denen Sie diesen neuen Benutzer zwingen möchten, sein Kennwort beim ersten Anmeldeversuch zu ändern, führen Sie den folgenden Befehl aus.

# chage -d0 tecmint_user

Dieses neue Benutzerkonto verfügt vorerst über reguläre Kontoberechtigungen und kann keine administrativen Aufgaben über den Befehl sudo ausführen.

Um die Verwendung des root-Kontos für die Ausführung von Administratorrechten zu vermeiden, erteilen Sie diesem neuen Benutzer Administratorrechte, indem Sie den Benutzer zur Systemgruppe "wheel" hinzufügen.

Die Benutzer, die zur Gruppe "wheel" gehören, dürfen in RHEL standardmäßig Befehle mit Root-Rechten ausführen, indem sie das Dienstprogramm sudo verwenden, bevor sie den für die Ausführung erforderlichen Befehl schreiben.

Um beispielsweise den Benutzer "tecmint_user" zur Gruppe "wheel" hinzuzufügen, führen Sie den folgenden Befehl aus.

# usermod -aG wheel tecmint_user

Melden Sie sich anschließend mit dem neuen Benutzer am System an und versuchen Sie, das System über den Befehl "sudo yum update" zu aktualisieren, um zu testen, ob dem Benutzer Root-Kräfte erteilt wurden.

# su - tecmint_user
sudo yum update

Konfigurieren der SSH-Authentifizierung mit öffentlichem Schlüssel in RHEL 7

Um die Sicherheit Ihrer RHEL-Bereitstellung zu erhöhen, konfigurieren Sie im nächsten Schritt die SSH-Authentifizierung mit öffentlichem Schlüssel für den neuen Benutzer. Um ein SSH-Schlüsselpaar, den öffentlichen und den privaten Schlüssel, zu generieren, führen Sie den folgenden Befehl auf Ihrer Serverkonsole aus. Stellen Sie sicher, dass Sie mit dem Benutzer, für den Sie den SSH-Schlüssel einrichten, beim System angemeldet sind.

# su - tecmint_user
ssh-keygen -t RSA

Während der Generierung des Schlüssels werden Sie aufgefordert, eine Passphrase hinzuzufügen, um den Schlüssel zu sichern. Sie können eine starke Passphrase eingeben oder die Passphrase leer lassen, wenn Sie Aufgaben über den SSH-Server automatisieren möchten.

Nachdem der SSH-Schlüssel generiert wurde, kopieren Sie das öffentliche Schlüsselpaar auf einen Remote-Server, indem Sie den folgenden Befehl ausführen. Um den öffentlichen Schlüssel auf dem Remote-SSH-Server zu installieren, benötigen Sie ein Benutzerkonto mit Anmeldeinformationen für die Anmeldung bei diesem Server.

$ ssh-copy-id [email 

Nun sollten Sie versuchen, sich per SSH am Remote-Server anzumelden, wobei der private Schlüssel als Authentifizierungsmethode verwendet wird. Sie sollten sich automatisch anmelden können, ohne dass der SSH-Server nach einem Passwort fragt.

$ ssh [email 

Geben Sie den folgenden Befehl ein, um den Inhalt Ihres öffentlichen SSH-Schlüssels anzuzeigen, wenn Sie den Schlüssel manuell auf einem entfernten SSH-Server installieren möchten.

$ cat ~/.ssh/id_rsa

Sicheres SSH auf RHEL 7

Um den SSH-Daemon zu sichern und den Remote-SSH-Zugriff auf das Root-Konto per Passwort oder Schlüssel zu verhindern, öffnen Sie die Hauptkonfigurationsdatei des SSH-Servers und nehmen Sie die folgenden Änderungen vor.

$ sudo vi /etc/ssh/sshd_config

Suchen Sie nach der Zeile #PermitRootLogin ja, kommentieren Sie die Zeile aus, indem Sie das #-Zeichen (Hashtag) am Anfang der Zeile entfernen, und ändern Sie die Zeile so, dass sie wie im folgenden Auszug gezeigt aussieht.

PermitRootLogin no

Starten Sie anschließend den SSH-Server neu, um die neuen Einstellungen zu übernehmen und die Konfiguration zu testen, indem Sie versuchen, sich mit dem root-Konto bei diesem Server anzumelden. Der Zugriff auf das Root-Konto über SSH sollte nun eingeschränkt sein.

$ sudo systemctl restart sshd

Es gibt Situationen, in denen Sie alle Remote-SSH-Verbindungen zu Ihrem Server nach einer gewissen Zeit der Inaktivität automatisch trennen möchten.

Um diese Funktion systemweit zu aktivieren, führen Sie den folgenden Befehl aus, der die TMOUT-Bash-Variable zur Haupt-Bashrc-Datei hinzufügt und erzwingt, dass jede SSH-Verbindung nach 5 Minuten Inaktivität getrennt oder unterbrochen wird.

$ su -c 'echo "TMOUT=300" >> /etc/bashrc'

Führen Sie den Befehl tail aus, um zu überprüfen, ob die Variable am Ende der Datei /etc/bashrc korrekt hinzugefügt wurde. Alle nachfolgenden SSH-Verbindungen werden von nun an nach 5 Minuten Inaktivität automatisch geschlossen.

$ tail /etc/bashrc

Im folgenden Screenshot wurde die SSH-Remotesitzung vom Drupal-Computer zum RHEL-Server nach 5 Minuten automatisch abgemeldet.

Konfigurieren der Firewall in RHEL 7

Im nächsten Schritt konfigurieren Sie die Firewall, um das System auf Netzwerkebene weiter abzusichern. RHEL 7 wird mit der Firewalld-Anwendung ausgeliefert, um iptables-Regeln auf dem Server zu verwalten.

Stellen Sie zunächst sicher, dass die Firewall in Ihrem System ausgeführt wird, indem Sie den folgenden Befehl ausführen. Wenn der Firewalld-Daemon gestoppt ist, sollten Sie ihn mit dem folgenden Befehl starten.

$ sudo systemctl status firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld

Sobald die Firewall aktiviert ist und in Ihrem System ausgeführt wird, können Sie das Befehlszeilenprogramm firewall-cmd verwenden, um die Firewall-Richtlinieninformationen festzulegen und Datenverkehr zu bestimmten Netzwerkports zuzulassen, z. B. SSH-Daemon, Verbindungen zu einem internen Webserver oder anderen verwandten Netzwerkdiensten.

Da wir im Moment nur einen SSH-Daemon auf unserem Server ausführen, können wir die Firewall-Richtlinie so anpassen, dass Datenverkehr für den SSH-Dienstport zugelassen wird, indem wir den folgenden Befehl ausgeben.

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

Um eine Firewallregel on-fly hinzuzufügen, ohne die Regel beim nächsten Start des Servers anzuwenden, verwenden Sie die folgende Befehlssyntax.

$ sudo firewall-cmd --add-service=sshd

Wenn Sie andere Netzwerkdienste auf Ihrem Server installieren, z. B. einen HTTP-Server, einen Mailserver oder andere Netzwerkdienste, können Sie wie folgt Regeln hinzufügen, um die spezifischen Verbindungen zuzulassen.

$ sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=smtp

Um alle Firewall-Regeln aufzulisten, führen Sie den folgenden Befehl aus.

$ sudo firewall-cmd --permanent --list-all

Entfernen nicht benötigter Dienste in RHEL 7

Um eine Liste aller Netzwerkdienste (TCP und UDP) zu erhalten, die standardmäßig auf Ihrem RHEL-Server ausgeführt werden, geben Sie den Befehl ss ein, wie im folgenden Beispiel dargestellt.

$ sudo ss -tulpn

Der Befehl ss zeigt einige interessante Dienste an, die standardmäßig in Ihrem System gestartet und ausgeführt werden, wie z.B. der Postfix-Master-Dienst und der Server, der für das NTP-Protokoll verantwortlich ist.

Wenn Sie nicht vorhaben, diesen Server als Mailserver zu konfigurieren, sollten Sie den Postfix-Daemon stoppen, deaktivieren und entfernen, indem Sie die folgenden Befehle ausführen.

$ sudo systemctl stop postfix.service 
sudo yum remove postfix

In letzter Zeit wurden einige böse DDOS-Angriffe über das NTP-Protokoll gemeldet. Falls Sie nicht vorhaben, Ihren RHEL-Server so zu konfigurieren, dass er als NTP-Server ausgeführt wird, damit interne Clients die Zeit mit diesem Server synchronisieren können, sollten Sie den Chrony-Daemon vollständig deaktivieren und entfernen, indem Sie die folgenden Befehle ausgeben.

$ sudo systemctl stop chronyd.service 
sudo yum remove chrony

Führen Sie erneut den Befehl ss aus, um festzustellen, ob andere Netzwerkdienste in Ihrem System ausgeführt werden, und deaktivieren und entfernen Sie diese.

$ sudo ss -tulpn

Um die genaue Uhrzeit für Ihren Server anzugeben und die Zeit mit einem Peer-Server mit oberer Zeit zu synchronisieren, können Sie das Dienstprogramm ntpdate installieren und die Zeit mit einem öffentlichen NTP-Server synchronisieren, indem Sie die folgenden Befehle ausführen.

$ sudo yum install ntpdate
sudo ntpdate 0.uk.pool.ntp.org

Um zu automatisieren, dass der Befehl ntpdate time synchronize jeden Tag ohne Benutzereingriff ausgeführt wird, planen Sie einen neuen Crontab-Auftrag, der um Mitternacht mit dem folgenden Inhalt ausgeführt wird.

$ sudo crontab -e

Auszug aus der Crontab-Datei:

@daily /usr/sbin/ntpdate 0.uk.pool.ntp.org

Das ist alles! Jetzt ist der RHEL-Server für die Installation zusätzlicher Software vorbereitet, die für benutzerdefinierte Netzwerkdienste oder -anwendungen erforderlich ist, z. B. das Installieren und Konfigurieren eines Webservers, eines Datenbankservers, eines Dateifreigabedienstes oder anderer spezifischer Anwendungen.

Informationen zum weiteren Sichern und Härten des RHEL 7-Servers finden Sie in den folgenden Artikeln.

  1. Der Mega-Guide zum Härten und Sichern von RHEL 7 – Teil 1
  2. Der Mega-Guide zum Härten und Sichern von RHEL 7 – Teil 2

Wenn Sie planen, Websites auf diesem RHEL 7-System bereitzustellen, erfahren Sie, wie Sie den LAMP-Stack oder den LEMP-Stack einrichten und konfigurieren.

Verwandte Artikel: