RHCSA-Reihe: SSH sichern, Hostnamen festlegen und Netzwerkdienste aktivieren – Teil 8

Als Systemadministrator müssen Sie sich oft auf entfernte Systeme einloggen, um eine Vielzahl von Verwaltungsaufgaben mit einem Terminal-Emulator durchzuführen. Sie werden selten vor einem echten (physischen) Terminal sitzen, daher müssen Sie eine Möglichkeit einrichten, sich aus der Ferne bei den Maschinen anzumelden, die Sie verwalten sollen.

Tatsächlich könnte dies das Letzte sein, was Sie vor einem physischen Terminal tun müssen. Aus Sicherheitsgründen ist die Verwendung von Telnet für diesen Zweck keine gute Idee, da alle Daten unverschlüsselt und im Klartext über die Leitung gehen.

Zusätzlich werden wir in diesem Artikel auch besprechen, wie man Netzwerkdienste so konfiguriert, dass sie automatisch beim Booten starten, und wie man Netzwerk- und Hostnamenauflösung statisch oder dynamisch einrichtet.

RHCSA: Secure SSH and Enable Network Services – Part 8

Installation und Absicherung der SSH-Kommunikation

Um sich aus der Ferne auf einem RHEL 7-System mit SSH einloggen zu können, müssen Sie die Pakete openssh, openssh-clients und openssh-servers installieren. Der folgende Befehl installiert nicht nur das Programm für den Remote-Login, sondern auch das Tool für die sichere Dateiübertragung sowie das Dienstprogramm für das Remote-Kopieren von Dateien:

# yum update && yum install openssh openssh-clients openssh-servers

Beachten Sie, dass es eine gute Idee ist, auch die Server-Gegenstücke zu installieren, da Sie dieselbe Maschine irgendwann als Client und Server verwenden möchten.

Nach der Installation gibt es ein paar grundlegende Dinge, die Sie beachten müssen, wenn Sie den Fernzugriff auf Ihren SSH-Server absichern möchten. Die folgenden Einstellungen sollten in der Datei /etc/ssh/sshd_config vorhanden sein.

1. Ändern Sie den Port, auf dem der sshd-Daemon von 22 (Standardwert) auf einen hohen Port (2000 oder höher) hören wird, aber stellen Sie zuerst sicher, dass der gewählte Port nicht verwendet wird.

Zum Beispiel, nehmen wir an, Sie wählen den Port 2500. Verwenden Sie netstat, um zu überprüfen, ob der gewählte Port verwendet wird oder nicht:

# netstat -npltu | grep 2500

Wenn netstat nichts zurückgibt, können Sie sicher den Port 2500 für sshd verwenden, und Sie sollten die Port-Einstellung in der Konfigurationsdatei wie folgt ändern:

Port 2500

2. Erlauben Sie nur Protokoll 2:

Protocol 2

3. Konfigurieren Sie das Authentifizierungs-Timeout auf 2 Minuten, erlauben Sie keine Root-Anmeldungen und beschränken Sie die Liste der Benutzer, die sich über ssh anmelden dürfen, auf ein Minimum:

LoginGraceTime 2m
PermitRootLogin no
AllowUsers gacanepa

4. Verwenden Sie, wenn möglich, die authentifizierungsbasierte Schlüsselauthentifizierung anstelle von Passwortauthentifizierung:

PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes

Dies setzt voraus, dass Sie bereits ein Schlüsselpaar mit Ihrem Benutzernamen auf Ihrem Client-Rechner erstellt und es wie hier erklärt auf Ihren Server kopiert haben.

  1. Aktivieren Sie das SSH-Passwortloses Anmelden

Konfigurieren von Netzwerk und Namensauflösung

1. Jeder Systemadministrator sollte mit den folgenden systemweiten Konfigurationsdateien gut vertraut sein:

  1. /etc/hosts wird verwendet, um Namen <—> IPs in kleinen Netzwerken aufzulösen.

Jede Zeile in der Datei /etc/hosts hat die folgende Struktur:

IP address - Hostname - FQDN

Zum Beispiel,

192.168.0.10	laptop	laptop.gabrielcanepa.com.ar

2. /etc/resolv.conf legt die IP-Adressen der DNS-Server und die Suchdomäne fest, die verwendet wird, um einen bestimmten Abfragenamen in einen vollständig qualifizierten Domänennamen umzuwandeln, wenn kein Domänensuffix angegeben ist.

Unter normalen Umständen müssen Sie diese Datei nicht bearbeiten, da sie vom System verwaltet wird. Sollten Sie jedoch DNS-Server ändern wollen, beachten Sie bitte die folgende Struktur in jeder Zeile:

nameserver - IP address

Zum Beispiel,

nameserver 8.8.8.8

3. 3. /etc/host.conf gibt die Methoden und die Reihenfolge an, nach der Hostnamen in einem Netzwerk aufgelöst werden. Mit anderen Worten, sagt dem Namensauflöser, welche Dienste verwendet werden sollen und in welcher Reihenfolge.

Obwohl diese Datei mehrere Optionen hat, enthält die häufigste und grundlegende Konfiguration eine Zeile wie folgt:

order bind,hosts

Was anzeigt, dass der Auflöser zuerst in den in resolv.conf angegebenen Nameservern und dann in der Datei /etc/hosts nach Namensauflösung suchen soll.

4. /etc/sysconfig/network enthält Routing- und globale Hostinformationen für alle Netzwerk-Schnittstellen. Die folgenden Werte können verwendet werden:

NETWORKING=yes|no
HOSTNAME=value

Wobei der Wert der vollständig qualifizierte Domänenname (FQDN) sein sollte.

GATEWAY=XXX.XXX.XXX.XXX

Wobei XXX.XXX.XXX.XXX die IP-Adresse des Gateways des Netzwerks ist.

GATEWAYDEV=value

In einer Maschine mit mehreren NICs ist Wert das Gateway-Gerät, wie z. B. enp0s3.

5. Dateien im Verzeichnis /etc/sysconfig/network-scripts (Konfigurationsdateien für Netzwerkadapter).

Im zuvor genannten Verzeichnis finden Sie mehrere einfache Textdateien mit Namen.

ifcfg-name

Wobei der Name der NIC der Name ist, der von ip link show zurückgegeben wird:

Check Network Link Status

Zum Beispiel:

Network Files

Abgesehen von der Loopback-Schnittstelle können Sie eine ähnliche Konfiguration für Ihre NICs erwarten. Beachten Sie, dass einige Variablen, wenn sie festgelegt sind, die in /etc/sysconfig/network für diese spezielle Schnittstelle vorhandenen überschreiben werden. Jede Zeile ist in diesem Artikel zur Klärung kommentiert, aber in der tatsächlichen Datei sollten Sie Kommentare vermeiden:

HWADDR=08:00:27:4E:59:37 # The MAC address of the NIC
TYPE=Ethernet # Type of connection
BOOTPROTO=static # This indicates that this NIC has been assigned a static IP. If this variable was set to dhcp, the NIC will be assigned an IP address by a DHCP server and thus the next two lines should not be present in that case.
IPADDR=192.168.0.18
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
NM_CONTROLLED=no # Should be added to the Ethernet interface to prevent NetworkManager from changing the file.
NAME=enp0s3
UUID=14033805-98ef-4049-bc7b-d4bea76ed2eb
ONBOOT=yes # The operating system should bring up this NIC during boot

Einstellen von Hostnamen

In Red Hat Enterprise Linux 7 wird der Befehl hostnamectl sowohl zum Abfragen als auch zum Setzen des Hostnamens des Systems verwendet.

Um den aktuellen Hostnamen anzuzeigen, geben Sie Folgendes ein:

# hostnamectl status
Check System Hostname

Um den Hostnamen zu ändern, verwenden Sie

# hostnamectl set-hostname [new hostname]

Zum Beispiel,

# hostnamectl set-hostname cinderella

Damit die Änderungen wirksam werden, müssen Sie den hostnamed-Daemon neu starten (so müssen Sie sich nicht ab- und wieder anmelden, um die Änderung anzuwenden):

# systemctl restart systemd-hostnamed
Set System Hostname

Zusätzlich enthält RHEL 7 auch das Dienstprogramm nmcli, das für denselben Zweck verwendet werden kann. Um den Hostnamen anzuzeigen, führen Sie Folgendes aus:

# nmcli general hostname

und um ihn zu ändern:

# nmcli general hostname [new hostname]

Zum Beispiel,

# nmcli general hostname rhel7
Set Hostname Using nmcli Command

Starten der Netzwerkdienste beim Booten

Zusammenfassend sehen wir, wie wir sicherstellen können, dass Netzwerkdienste beim Booten automatisch gestartet werden. Dies geschieht einfach, indem wir symbolische Links zu bestimmten Dateien erstellen, die im [Install]-Abschnitt der Dienstkonfigurationsdateien angegeben sind.

Im Fall von firewalld (/usr/lib/systemd/system/firewalld.service):

[Install]
WantedBy=basic.target
Alias=dbus-org.fedoraproject.FirewallD1.service

Um den Dienst zu aktivieren:

# systemctl enable firewalld

Andererseits bedeutet das Deaktivieren von firewalld, die symbolischen Links zu entfernen:

# systemctl disable firewalld
Enable Service at System Boot

Abschluss

In diesem Artikel haben wir zusammengefasst, wie man Verbindungen über SSH zu einem RHEL-Server installiert und sichert, wie man dessen Namen ändert und schließlich sicherstellt, dass Netzwerkdienste beim Booten gestartet werden. Wenn Ihnen auffällt, dass ein bestimmter Dienst nicht ordnungsgemäß gestartet ist, können Sie systemctl status -l [service] und journalctl -xn zur Fehlerbehebung verwenden.

Teilen Sie uns gerne Ihre Meinung zu diesem Artikel über das Kommentarformular unten mit. Fragen sind ebenfalls willkommen. Wir freuen uns auf Ihr Feedback!

Source:
https://www.tecmint.com/rhcsa-series-secure-ssh-set-hostname-enable-network-services-in-rhel-7/