RockyLinux8的初始服务器设置
介绍
当您第一次创建新的 Rocky Linux 8 服务器时,作为基本设置的一部分,您应该尽早采取一些配置步骤。 这将提高服务器的安全性和可用性,并为您后续操作奠定坚实的基础。
第 1 步 — 以 Root 身份登录
要登录您的服务器,您需要知道您的 服务器的公共 IP 地址 。 您还需要密码,或者,如果您安装了用于身份验证的 SSH 密钥,则需要 root 用户帐户的私钥。 如果您尚未登录您的服务器,您可能需要关注我们关于 如何使用 SSH 连接到您的 Droplet 的文档,其中详细介绍了此过程。
如果您尚未连接到服务器,请以 root 用户身份登录,现在使用以下命令(将命令的突出显示部分替换为您的服务器的公共 IP 地址):
ssh root@your_server_ip
如果出现有关主机真实性的警告,请接受它。 如果您使用密码验证,请提供您的 root 密码以登录。 如果您使用的是受密码保护的 SSH 密钥,则在每次会话中首次使用该密钥时,系统可能会提示您输入密码。 如果这是您第一次使用密码登录服务器,系统可能还会提示您更改 root 密码。
关于根
root 用户是 Linux 环境中的管理用户,具有非常广泛的权限。 由于 root 帐户的特权更高,因此 不鼓励 定期使用它。 这是因为 root 帐户固有的部分功能是能够进行非常具有破坏性的更改,即使是偶然的。
因此,下一步是设置一个替代用户帐户,以减少对日常工作的影响范围。 必要时,此帐户仍可以获得更高的权限。
第 2 步 — 创建新用户
以 root 身份登录后,您可以创建新的用户帐户,我们将从现在开始使用该帐户登录。
此示例创建一个名为 sammy 的新用户,但您应该将其替换为您喜欢的任何用户名:
adduser sammy
接下来,为 sammy
用户设置一个强密码:
passwd sammy
系统将提示您输入两次密码。 完成此操作后,您的用户就可以使用了,但首先我们将赋予该用户额外的权限以使用 sudo
命令。 这将允许我们在必要时以 root 身份运行命令。
第 3 步 — 授予管理权限
现在,我们有了一个具有常规帐户权限的新用户帐户。 但是,我们有时可能需要执行管理任务。
为了避免退出我们的普通用户并以 root 帐户重新登录,我们可以为我们的普通帐户设置所谓的“超级用户”或 root 权限。 这将允许我们的普通用户通过在每个命令前加上单词 sudo
来以管理权限运行命令。
要将这些权限添加到我们的新用户,我们需要将新用户添加到 wheel 组。 默认情况下,在 Rocky Linux 8 上,属于 wheel 组的用户可以使用 sudo
命令。
作为 root,运行此命令将您的新用户添加到 wheel 组(用您的新用户名替换突出显示的单词):
usermod -aG wheel sammy
现在,当以普通用户身份登录时,您可以在命令前键入 sudo
以执行具有超级用户权限的操作。
第 4 步 — 设置基本防火墙
防火墙为您的服务器提供了基本的安全级别。 这些应用程序负责拒绝到您服务器上每个端口的流量,但您明确批准的那些端口/服务除外。 Rocky Linux 有一个名为 firewalld
的服务来执行此功能。 一个名为 firewall-cmd
的工具用于配置 firewalld
防火墙策略。
注意: 如果您的服务器在 DigitalOcean 上运行,您可以选择使用 DigitalOcean Cloud Firewalls 而不是 firewalld
。 我们建议一次只使用一个防火墙,以避免可能难以调试的冲突规则。
首先安装firewalld
:
dnf install firewalld -y
默认的 firewalld
配置允许 ssh
连接,所以我们可以立即开启防火墙:
systemctl start firewalld
检查服务的状态以确保它已启动:
systemctl status firewalld
Output● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-02-06 16:39:40 UTC; 3s ago Docs: man:firewalld(1) Main PID: 13180 (firewalld) Tasks: 2 (limit: 5059) Memory: 22.4M CGroup: /system.slice/firewalld.service └─13180 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid
请注意,它同时是 active
和 enabled
,这意味着如果服务器重新启动,它将默认启动。
现在服务已启动并运行,我们可以使用 firewall-cmd
实用程序来获取和设置防火墙的策略信息。
首先让我们列出哪些服务已经被允许:
firewall-cmd --permanent --list-all
Outputpublic (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
要查看您可以按名称启用的其他服务,请键入:
firewall-cmd --get-services
要添加应允许的服务,请使用 --add-service
标志:
firewall-cmd --permanent --add-service=http
这将添加 http
服务并允许传入 TCP 流量到端口 80
。 重新加载防火墙后,配置将更新:
firewall-cmd --reload
请记住,您必须为以后可能配置的任何其他服务显式打开防火墙(带有服务或端口)。
第 5 步 — 为您的普通用户启用外部访问
现在我们有一个普通的非 root 用户供日常使用,我们需要确保我们可以使用它通过 SSH 连接到我们的服务器。
注意: 在验证您可以登录并与新用户一起使用 sudo
之前,我们建议您保持以 root 身份登录。 这样,如果您遇到问题,您可以作为 root 进行故障排除并进行任何必要的更改。 如果您正在使用 DigitalOcean Droplet 并在 root SSH 连接方面遇到问题,您可以 使用 DigitalOcean 控制台 登录到 Droplet。
为新用户配置 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
) 没有 包含尾部斜杠(检查以确保您没有使用 [X159X ])。
如果不小心在命令后面加了斜杠,rsync
会将root账户的~/.ssh
目录下的contents复制到[ X161X] 用户的主目录,而不是复制整个 ~/.ssh
目录结构。 这些文件将位于错误的位置,SSH 将无法找到和使用它们。
rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy
现在,回到本地机器上的新终端,与非 root 用户打开一个新的 SSH 会话:
ssh sammy@your_server_ip
您应该在不使用密码的情况下登录到新用户帐户。 请记住,如果您需要以管理员权限运行命令,请在它之前键入 sudo
,如下所示:
sudo command_to_run
在每个会话第一次使用 sudo
时(以及之后定期),您将被提示输入您的常规用户密码。
结论
至此,您的服务器已经有了坚实的基础。 您现在可以在服务器上安装您需要的任何软件。