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

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

实际上,这可能是您在物理终端前需要做的最后一件事情。出于安全原因,使用Telnet并不是一个好主意,因为所有流量都是以未加密的明文通过网络传输的。

此外,在本文中,我们还将介绍如何配置网络服务以在启动时自动启动,并学习如何静态或动态地设置网络和主机名解析。

RHCSA: Secure SSH and Enable Network Services – Part 8

安装和保护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没有返回任何内容,您可以安全地将端口2500用于sshd,并应按以下方式更改配置文件中的端口设置:

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 地址。

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

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

其中名称是由ip link show返回的网卡名称:

Check Network Link Status

例如:

Network Files

除了loopback接口外,您可以期望为您的网卡设置类似的配置。请注意,如果设置了某些变量,它们将覆盖/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
Check System Hostname

要更改主机名,请使用

# hostnamectl set-hostname [new hostname]

例如:

# hostnamectl set-hostname cinderella

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

# systemctl restart systemd-hostnamed
Set System Hostname

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

# nmcli general hostname

要更改主机名,请运行:

# nmcli general hostname [new hostname]

例如:

# nmcli general hostname rhel7
Set Hostname Using nmcli Command

在启动时启动网络服务

总结一下,让我们看看如何确保网络服务在启动时自动启动。简单来说,这是通过在服务配置文件的[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
Enable Service at System Boot

结论

在本文中,我们总结了如何通过SSH安装和保护连接到RHEL服务器,如何更改其名称,最后如何确保网络服务在启动时启动。如果您注意到某个服务未能正确启动,您可以使用systemctl status -l [service]journalctl -xn进行故障排除。

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

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