RHCSA 系列:保护 SSH、设置主机名和启用网络服务 - 第 8 部分
作为系统管理员,您经常需要使用终端仿真器登录到远程系统以执行各种管理任务。您很少会坐在真正的(物理)终端前,因此您需要设置一种方式来远程登录到您将被要求管理的机器。
事实上,这可能是您在物理终端前要做的最后一件事。出于安全原因,使用Telnet进行此操作并不是一个好主意,因为所有流量都是以未加密的纯文本形式通过线路的。
此外,在本文中,我们还将回顾如何配置网络服务以在启动时自动启动,并学习如何静态或动态设置网络和主机名解析。
安装并保护 SSH 通信
为了能够使用SSH远程登录到RHEL 7框,您必须安装openssh、openssh-clients和openssh-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.每个系统管理员都应该熟悉以下系统范围的配置文件:
- /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
在具有多个 NIC 的机器中,值是网关设备,例如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进行故障排除。
请使用下面的评论表告诉我们您对本文的看法。也欢迎提问。我们期待您的回复!