网站搜索

RHCSA 系列:保护 SSH、设置主机名和启用网络服务 - 第 8 部分


作为系统管理员,您经常需要登录到远程系统才能使用终端仿真器执行各种管理任务。您很少会坐在真实的(物理)终端前,因此您需要设置一种方法来远程登录到要求您管理的计算机。

事实上,这可能是您在物理终端前要做的最后一件事。出于安全原因,使用 Telnet 来实现此目的并不是一个好主意,因为所有流量都以未加密的纯文本形式通过线路。

此外,在本文中,我们还将回顾如何将网络服务配置为在启动时自动启动,并了解如何静态或动态设置网络和主机名解析。

安装 SSH 通信并确保其安全

为了能够使用 SSH 远程登录到 RHEL 7 机器,您必须安装 opensshopenssh -clientsopenssh-servers 软件包。以下命令不仅会安装远程登录程序,还会安装安全文件传输工具以及远程文件复制实用程序:


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

请注意,安装服务器对应项是一个好主意,因为您可能希望在某个时刻使用同一台计算机作为客户端和服务器。

安装后,如果您想保护对 SSH 服务器的远程访问,则需要考虑一些基本事项。 /etc/ssh/sshd_config 文件中应存在以下设置。

1. 将 sshd 守护进程侦听的端口从 22(默认值)更改为高端口(2000 或更高),但首先请确保所选端口未被使用。

例如,假设您选择端口 2500。使用 netstat 检查所选端口是否正在使用:


netstat -npltu | grep 2500

如果 netstat 没有返回任何内容,您可以安全地使用 sshd 端口 2500,并且您应该按如下所示更改配置文件中的端口设置:


Port 2500

2. 仅允许协议 2


Protocol 2

3. 将身份验证超时配置为 2 分钟,不允许 root 登录,并将允许通过 ssh 登录的用户列表限制在最低限度:


LoginGraceTime 2m
PermitRootLogin no
AllowUsers gacanepa

4. 如果可能,请使用基于密钥的身份验证而不是密码身份验证:


PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes

这假设您已经在客户端计算机上使用您的用户名创建了密钥对,并将其复制到您的服务器,如此处所述。

  1. 启用 SSH 无密码登录

配置网络和名称解析

1. 每个系统管理员都应该熟悉以下系统范围的配置文件:

  1. /etc/hosts 用于解析小型网络中的名称 <---> IP。

/etc/hosts 文件中的每一行都具有以下结构:


IP address - Hostname - FQDN

例如,


192.168.0.10	laptop	laptop.gabrielcanepa.com.ar

2. /etc/resolv.conf 指定 DNS 服务器的 IP 地址和搜索域,用于在以下情况下将给定查询名称补全为完全限定域名:未提供域名后缀。

一般情况下,你不需要编辑这个文件,因为它是由系统管理的。但是,如果您想要更改 DNS 服务器,请注意您需要在每行中遵循以下结构:


nameserver - IP address

例如,


nameserver 8.8.8.8

3. 3. /etc/host.conf 指定在网络中解析主机名的方法和顺序。换句话说,告诉名称解析器要使用哪些服务以及按什么顺序。

尽管此文件有多个选项,但最常见和基本的设置包括如下行:


order bind,hosts

这表明解析器应首先查找 resolv.conf 中指定的名称服务器,然后查找 /etc/hosts 文件进行名称解析。

4. /etc/sysconfig/network 包含所有网络接口的路由和全局主机信息。可以使用以下值:


NETWORKING=yes|no
HOSTNAME=value

其中值应为完全限定域名 (FQDN)。


GATEWAY=XXX.XXX.XXX.XXX

其中 XXX.XXX.XXX.XXX 是网络网关的 IP 地址。


GATEWAYDEV=value

在具有多个网卡的机器中,value是网关设备,例如enp0s3

5. /etc/sysconfig/network-scripts 内的文件(网络适配器配置文件)。

在前面提到的目录中,您会发现几个名为的纯文本文件。


ifcfg-name

其中 name 是 ip link show 返回的 NIC 名称:

例如:

除了环回接口之外,您的 NIC 也可以采用类似的配置。请注意,某些变量(如果设置)将覆盖此特定接口的 /etc/sysconfig/network 中存在的变量。本文中的每一行都带有注释以供澄清,但在实际文件中,您应该避免注释:


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

设置主机名

Red Hat Enterprise Linux 7中,hostnamectl命令用于查询和设置系统的主机名。

要显示当前主机名,请键入:


hostnamectl status

要更改主机名,请使用


hostnamectl set-hostname [new hostname]

例如,


hostnamectl set-hostname cinderella

为了使更改生效,您需要重新启动 hostnamed 守护进程(这样您就不必注销并再次登录来应用更改):


systemctl restart systemd-hostnamed

此外,RHEL 7还包括可用于相同目的的nmcli实用程序。要显示主机名,请运行:


nmcli general hostname

并更改它:


nmcli general hostname [new hostname]

例如,


nmcli general hostname rhel7

启动时启动网络服务

最后,让我们看看如何确保网络服务在启动时自动启动。简而言之,这是通过创建指向服务配置文件的 [Install] 部分中指定的某些文件的符号链接来完成的。

对于firewalld (/usr/lib/systemd/system/firewalld.service):


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

要启用该服务:


systemctl enable firewalld

另一方面,禁用firewalld 可以删除符号链接:


systemctl disable firewalld

结论

在本文中,我们总结了如何通过 SSH 安装和保护与 RHEL 服务器的连接,如何更改其名称,以及最后如何确保网络服务启动启动。如果您发现某个服务无法正常启动,可以使用systemctl status -l [service]journalctl -xn来排除故障。

请随时使用下面的评论表告诉我们您对本文的看法。也欢迎提问。我们期待您的回音!