网站搜索

RHEL 7 上的初始服务器设置和配置


在本教程中,我们将讨论在裸机服务器或虚拟专用服务器上全新安装Red Hat Enterprise Linux 7后需要执行的第一个配置步骤。

要求

  1. RHEL 7 最小安装

重要:CentOS 7 用户可以按照本文在 CentOS 7 上进行初始服务器设置。

更新RHEL 7系统

第一步,使用具有 root 权限的帐户或直接以 root 身份登录到您的 RHEL 服务器控制台,然后运行以下命令以完全更新您的系统组件,例如已安装的软件包、内核或应用其他安全补丁。

yum check-update
yum update

要删除所有本地下载的包和其他相关的 YUM 缓存,请执行以下命令。

yum clean all

在 RHEL 7 上安装系统实用程序

事实证明,以下这些实用程序对于日常系统管理非常有用:nano(用于替代 vi 编辑器的文本编辑器)、wget、curl(用于下载软件包的实用程序)主要通过网络)net-tools、lsof(用于管理本地网络的实用程序)和 bash-completion(命令行自动完成)。

通过执行以下命令一次性安装它们。


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

在 RHEL 7 中设置网络

RHEL 7 拥有多种可用于配置和管理网络的工具,从手动编辑网络配置文件到使用 ip、ifconfig、nmtui 等命令, nmcli 或路线

初学者可以用来管理和更改网络配置的最简单的实用程序是nmtui图形命令行。

要通过nmtui实用程序更改系统主机名,请执行nmtui-hostname命令,设置您的计算机主机名,然后按OK完成,如图所示在下面的屏幕截图中。


nmtui-hostname

要操作网络接口,请执行nmtui-edit命令,选择要编辑的接口并从右侧菜单中选择“编辑”,如下图所示。

一旦进入 nmtui 实用程序提供的图形界面,您就可以设置网络接口 IP 设置,如下面的屏幕截图所示。完成后,使用[tab]键导航至确定以保存配置并退出。

为了应用网络接口新配置,请执行nmtui-connect命令,选择要管理的接口并点击停用/激活选项来停用和启动IP 设置界面,如下面的屏幕截图所示。


nmtui-connect

为了查看网络接口设置,您可以检查接口文件的内容,也可以发出以下命令。


ifconfig enp0s3
ip a
ping -c2 google.com

其他可用于管理速度、链接状态或获取有关机器网络接口信息的有用实用程序有 ethtoolmii-tool


ethtool enp0s3
mii-tool enp0s3

创建新用户帐户

在下一步中,以 root 身份登录到服务器时,使用以下命令创建一个新用户。稍后将使用该用户登录您的系统并执行管理任务。

adduser tecmint_user

使用上述命令添加用户后,通过发出以下命令为此用户设置强密码。

passwd tecmint_user

如果您想强制该新用户在第一次登录尝试时更改其密码,请执行以下命令。

chage -d0 tecmint_user

这个新用户帐户目前具有常规帐户权限,无法通过 sudo 命令执行管理任务。

为了避免使用 root 帐户执行管理权限,请通过将用户添加到“wheel”系统组来授予该新用户管理权限。

默认情况下,在 RHEL 中,属于“wheel”组的用户可以在编写执行所需的命令之前使用 sudo 实用程序以 root 权限运行命令。

例如,要将用户“howtoing_user”添加到“wheel”组,请执行以下命令。

usermod -aG wheel tecmint_user

然后,以新用户登录系统,并尝试通过“sudo yum update”命令更新系统,以测试该用户是否具有root权限。

su - tecmint_user
sudo yum update

在 RHEL 7 上配置 SSH 公钥身份验证

下一步,为了提高 RHEL 服务器安全性,请为新用户配置 SSH 公钥身份验证。为了生成 SSH 密钥对(公钥和私钥),请在服务器控制台执行以下命令。确保您使用要设置 SSH 密钥的用户登录系统。

su - tecmint_user
ssh-keygen -t RSA

生成密钥后,系统将提示您添加密码以保护密钥。您可以输入强密码,或者如果您想通过 SSH 服务器自动执行任务,则可以选择将密码留空。

生成 SSH 密钥后,通过执行以下命令将公钥对复制到远程服务器。要将公钥安装到远程 SSH 服务器,您需要一个具有登录该服务器凭据的用户帐户。

ssh-copy-id [email 

现在您应该尝试使用私钥作为身份验证方法通过 SSH 登录远程服务器。您应该能够自动登录,无需 SSH 服务器询问密码。

ssh [email 

如果您想要手动将密钥安装到远程 SSH 服务器,要查看公共 SSH 密钥的内容,请发出以下命令。

cat ~/.ssh/id_rsa

RHEL 7 上的安全 SSH

为了保护 SSH 守护程序的安全并禁止通过密码或密钥对 root 帐户进行远程 SSH 访问,请打开 SSH 服务器主配置文件并进行以下更改。

sudo vi /etc/ssh/sshd_config

搜索行 #PermitRootLogin yes,通过删除行开头的 # 符号(井号标签)来取消注释该行,并将该行修改为如下所示摘抄。

PermitRootLogin no

然后,重新启动 SSH 服务器以应用新设置,并尝试使用 root 帐户登录该服务器来测试配置。现在应该限制通过 SSH 对 root 帐户的访问。

sudo systemctl restart sshd

在某些情况下,您可能希望在一段时间不活动后自动断开与服务器的所有远程 SSH 连接。

为了在系统范围内启用此功能,请执行以下命令,该命令将 TMOUT bash 变量添加到主 bashrc 文件中,并强制断开或丢弃每个 SSH 连接 - 5 分钟不活动后退出。

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

运行tail命令检查变量是否已正确添加到/etc/bashrc文件末尾。从现在起,所有后续 SSH 连接将在 5 分钟不活动后自动关闭。

tail /etc/bashrc

在下面的屏幕截图中,从 drupal 计算机到 RHEL 服务器的远程 SSH 会话已在 5 分钟后自动注销。

在 RHEL 7 上配置防火墙

下一步配置防火墙,以进一步确保网络级别的系统安全。 RHEL 7 附带 Firewalld 应用程序来管理服务器上的 iptables 规则。

首先,通过发出以下命令确保防火墙正在您的系统中运行。如果 Firewalld 守护进程已停止,您应该使用以下命令启动它。

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

一旦防火墙启用并在系统中运行,您可以使用 firewall-cmd 命令行实用程序来设置防火墙策略信息并允许流量传输到某些特定网络端口,例如 SSH 守护程序、建立的连接到内部 Web 服务器或其他相关网络服务。

因为现在我们只是在服务器中运行 SSH 守护进程,所以我们可以通过发出以下命令来调整防火墙策略以允许 SSH 服务端口的流量。

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

要动态添加防火墙规则,而不在下次启动服务器时应用该规则,请使用以下命令语法。

sudo firewall-cmd --add-service=sshd

如果您的服务器中安装了其他网络服务,例如 HTTP 服务器、邮件服务器或其他网络服务,您可以添加规则以允许特定连接,如下所示。

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

要列出所有防火墙规则,请运行以下命令。

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

删除 RHEL 7 中不需要的服务

为了获取默认情况下在 RHEL 服务器中运行的所有网络服务(TCP 和 UDP)的列表,请发出 ss 命令,如以下示例所示。

sudo ss -tulpn

ss 命令将显示系统中默认启动并运行的一些有趣的服务,例如 Postfix 主服务和负责 NTP 协议的服务器。

如果您不打算将此服务器配置为邮件服务器,则应通过发出以下命令来停止、禁用和删除 Postfix 守护程序。

sudo systemctl stop postfix.service 
sudo yum remove postfix

最近,有报道称发生了一些针对 NTP 协议的令人讨厌的 DDOS 攻击。如果您不打算将 RHEL 服务器配置为作为 NTP 服务器运行以便内部客户端与该服务器同步时间,则应通过发出以下命令来完全禁用并删除 Chrony 守护程序。

sudo systemctl stop chronyd.service 
sudo yum remove chrony

再次运行ss命令来确定您的系统中是否正在运行其他网络服务并禁用和删除它们。

sudo ss -tulpn

为了为您的服务器提供准确的时间并与上游时间对等服务器同步时间,您可以通过执行以下命令安装 ntpdate 实用程序并与公共 NTP 服务器同步时间。

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

要自动执行每天执行的 ntpdate 时间同步命令而无需任何用户干预,请安排一个新的 crontab 作业在午夜运行,并包含以下内容。

sudo crontab -e

crontab 文件摘录:

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

就这样!现在,您的 RHEL 服务器已准备好安装自定义网络服务或应用程序所需的其他软件,例如安装和配置 Web 服务器、数据库服务器、文件共享服务或其他特定应用程序。

要进一步保护和强化 RHEL 7 服务器,请查看以下文章。

  1. 强化和保护 RHEL 7 的超级指南 – 第 1 部分
  2. 强化和保护 RHEL 7 的超级指南 – 第 2 部分

如果您计划在此 RHEL 7 系统上部署网站,请了解如何设置和配置 LAMP 堆栈或 LEMP 堆栈。