介绍

当您第一次创建新的 Rocky Linux 8 服务器时,作为基本设置的一部分,您应该尽早采取一些配置步骤。这将提高服务器的安全性和可用性,并为您后续操作奠定坚实的基础。

步骤 1 — 以 Root 身份登录

要登录您的服务器,您需要知道您的服务器的公共 IP 地址。您还需要密码,或者,如果您安装了用于身份验证的 SSH 密钥,则需要 root 用户帐户的私钥。如果您还没有登录到您的服务器,您可能需要按照我们的文档[如何使用 SSH 连接到您的 Droplet](https://www.digitalocean.com/docs/droplets/how-to/connect-with -ssh/),详细介绍了这个过程。

如果您尚未连接到您的服务器,请以 root 用户身份登录,现在使用以下命令(将命令的突出显示部分替换为您的服务器的公共 IP 地址):

ssh root@your_server_ip

如果出现有关主机真实性的警告,请接受它。如果您使用密码验证,请提供您的 root 密码以登录。如果您使用受密码保护的 SSH 密钥,则可能会在您每次会话第一次使用该密钥时提示您输入密码。如果这是您第一次使用密码登录服务器,系统可能还会提示您更改 root 密码。

关于根

root 用户是 Linux 环境中的管理用户,具有非常广泛的权限。由于 root 帐户的特权更高,您_不鼓励_定期使用它。这是因为 root 帐户固有的部分功能是能够进行非常具有破坏性的更改,即使是偶然的。

因此,下一步是设置一个替代用户帐户,以减少对日常工作的影响范围。必要时,此帐户仍可以获得更高的权限。

步骤 2 — 创建新用户

root 身份登录后,您可以创建新的用户帐户,我们将从现在开始使用该帐户登录。

此示例创建一个名为 sammy 的新用户,但您应该将其替换为您喜欢的任何用户名:

添加用户 sammy

接下来,为“sammy”用户设置一个强密码:

密码萨米

系统将提示您输入两次密码。完成此操作后,您的用户就可以使用了,但首先我们将赋予该用户额外的权限以使用 sudo 命令。这将允许我们在必要时以 root 身份运行命令。

步骤 3 — 授予管理权限

现在,我们有了一个具有常规帐户权限的新用户帐户。但是,我们有时可能需要执行管理任务。

为了避免退出我们的普通用户并以 root 帐户重新登录,我们可以为我们的普通帐户设置所谓的“超级用户”或 root 权限。这将允许我们的普通用户通过在每个命令前加上“sudo”一词来以管理权限运行命令。

要将这些权限添加到我们的新用户,我们需要将新用户添加到 wheel 组。默认情况下,在 Rocky Linux 8 上,属于 wheel 组的用户可以使用 sudo 命令。

作为 root,运行此命令将您的新用户添加到 wheel 组(用您的新用户名替换突出显示的单词):

usermod -aG 轮子 sammy

现在,当以您的普通用户身份登录时,您可以在命令前输入 sudo 以执行具有超级用户权限的操作。

步骤 4 — 设置基本防火墙

防火墙为您的服务器提供了基本的安全级别。这些应用程序负责拒绝到您服务器上每个端口的流量,但您明确批准的那些端口/服务除外。 Rocky Linux 有一个名为“firewalld”的服务来执行此功能。一个名为firewall-cmd的工具用于配置firewalld防火墙策略。

注意: 如果您的服务器在 DigitalOcean 上运行,您可以选择使用 DigitalOcean Cloud Firewalls 而不是 firewalld。我们建议一次只使用一个防火墙,以避免可能难以调试的冲突规则。

首先安装firewalld:

dnf 安装防火墙 -y

默认的 firewalld 配置允许 ssh 连接,所以我们可以立即打开防火墙:

systemctl 启动防火墙

检查服务的状态以确保它已启动:

systemctl 状态防火墙

输出● firewalld.service - firewalld - 动态防火墙守护进程
已加载:已加载(/usr/lib/systemd/system/firewalld.service;已启用;供应商预设:已启用)
活动:自 2020 年 2 月 6 日星期四 16:39:40 UTC 起活动(运行); 3 秒前
文档:man:firewalld(1)
主PID:13180(防火墙)
任务:2(限制:5059)
内存:22.4M
CGroup:/system.slice/firewalld.service
└─13180 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid

请注意,它既是 active 又是 enabled,这意味着如果服务器重新启动,它将默认启动。

现在服务已经启动并运行,我们可以使用firewall-cmd实用程序来获取和设置防火墙的策略信息。

首先让我们列出哪些服务已经被允许:

防火墙-cmd --permanent --list-all

输出公共(活动)
目标:默认
icmp 块反转:否
接口:eth0 eth1
来源:
服务:驾驶舱 dhcpv6-client ssh
端口:
协议:
伪装:没有
转发端口:
源端口:
icmp 块:
丰富的规则:

要查看您可以按名称启用的其他服务,请键入:

防火墙-cmd --get-services

要添加应允许的服务,请使用 --add-service 标志:

防火墙-cmd --permanent --add-serviceu003dhttp

这将添加“http”服务并允许传入的 TCP 流量到端口“80”。重新加载防火墙后,配置将更新:

防火墙-cmd --reload

请记住,您必须为以后可能配置的任何其他服务显式打开防火墙(带有服务或端口)。

步骤 5 — 为您的普通用户启用外部访问

现在我们有一个日常使用的常规非 root 用户,我们需要确保我们可以使用它来通过 SSH 连接到我们的服务器。

注意: 在验证您可以登录并与新用户一起使用 sudo 之前,我们建议保持以 root 身份登录。这样,如果您遇到问题,您可以以 root 身份进行故障排除并进行任何必要的更改。如果您正在使用 DigitalOcean Droplet 并遇到 root SSH 连接问题,您可以 [使用 DigitalOcean 控制台登录 Droplet](https://www.digitalocean.com/docs/droplets/resources/console /)。

为新用户配置 SSH 访问的过程取决于服务器的 root 帐户是使用密码还是 SSH 密钥进行身份验证。

如果 Root 帐户使用密码验证

如果您使用密码_登录到您的 root 帐户,则为 SSH 启用密码验证。您可以通过打开一个新的终端会话并使用您的新用户名使用 SSH 来 SSH 到您的新用户帐户:

ssh sammy@your_server_ip

输入普通用户的密码后,您将登录。请记住,如果您需要以管理员权限运行命令,请在此之前键入 sudo,如下所示:

sudo command_to_run

在每个会话第一次使用 sudo 时(以及之后定期),您将被提示输入您的常规用户密码。

为了增强服务器的安全性,我们强烈建议设置 SSH 密钥而不是使用密码验证。按照我们的指南在 Rocky Linux 8 上设置 SSH 密钥了解如何配置基于密钥的身份验证。

如果 Root 帐户使用 SSH 密钥认证

如果您_使用 SSH 密钥_登录到您的 root 帐户,则 SSH 的密码身份验证将_禁用_。您需要将您的公钥副本添加到新用户的 ~/.ssh/authorized_keys 文件中才能成功登录。

由于您的公钥已经在服务器上的 root 帐户的 ~/.ssh/authorized_keys 文件中,我们可以将该文件和目录结构复制到我们的新用户帐户中。

复制具有正确所有权和权限的文件的最简单方法是使用 rsync 命令。这将复制 root 用户的 .ssh 目录,保留权限并修改文件所有者,所有这些都在一个命令中完成。确保更改以下命令的突出显示部分以匹配您的常规用户名:

注意: rsync 命令对以斜杠结尾的源和目标的处理方式与不以斜杠结尾的不同。在下面使用 rsync 时,请确保源目录 (~/.ssh) 包含尾部斜杠(检查以确保您没有使用 ~/.ssh/)。

如果您不小心在命令的末尾添加了斜杠,rsync 会将 root 帐户的~/.ssh 目录的 contents 复制到 sudo 用户的主目录,而不是复制整个 ~/.ssh 目录。 ssh`目录结构。这些文件将位于错误的位置,SSH 将无法找到和使用它们。

rsync --archive --chownu003dsammy:sammy ~/.ssh /home/sammy

现在,回到本地机器上的新终端,与非 root 用户打开一个新的 SSH 会话:

ssh sammy@your_server_ip

您应该在不使用密码的情况下登录到新用户帐户。请记住,如果您需要以管理权限运行命令,请在它之前输入 sudo,如下所示:

sudo command_to_run

在每个会话第一次使用 sudo 时(以及之后定期),您将被提示输入您的常规用户密码。

结论

至此,您的服务器已经有了坚实的基础。您现在可以在服务器上安装您需要的任何软件。

Logo

更多推荐