使用 Rocky Linux 9 进行初始服务器设置
介绍
当您首次创建新的 Rocky Linux 9 服务器时,您应该尽早执行一些配置步骤作为初始设置的一部分。这将提高服务器的安全性和可用性,并为您奠定坚实的基础。
第 1 步 — 以根用户身份登录
要登录到您的服务器,您需要知道服务器的公共 IP 地址。您还需要密码,或者,如果您安装了用于身份验证的 SSH 密钥,还需要根用户帐户的私钥。如果您还没有登录到您的服务器,您可能需要遵循我们关于如何使用 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 9 上,属于 wheel 组的用户可以使用 sudo
命令。
作为 root,运行此命令将您的新用户添加到 wheel 组(用您的新用户名替换突出显示的词):
- usermod -aG wheel sammy
现在,当以普通用户身份登录时,您可以在命令前键入 sudo
以使用超级用户权限执行操作。
第 4 步 — 设置防火墙
防火墙为您的服务器提供基本级别的安全性。这些应用程序负责拒绝流量到您服务器上的每个端口,但您明确批准的那些端口/服务除外。 Rocky Linux 有一个名为 firewalld
的服务来执行此功能。名为firewall-cmd
的工具用于配置firewalld
防火墙策略。
注意:如果您的服务器在 DigitalOcean 上运行,您可以选择使用 DigitalOcean 云防火墙而不是 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 Tue 2022-09-13 18:26:19 UTC; 1 day 2h ago
Docs: man:firewalld(1)
Main PID: 15060 (firewalld)
Tasks: 4 (limit: 10938)
Memory: 28.1M
CPU: 6.127s
CGroup: /system.slice/firewalld.service
└─15060 /usr/bin/python3 -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 步 — 为普通用户启用外部访问
现在您已经有了日常使用的常规非根用户,您需要确保可以使用它通过 SSH 连接到您的服务器。
注意:在验证您可以登录并以新用户身份使用 sudo
之前,您应该以 root 用户身份保持登录状态。这样,如果您遇到问题,您可以以 root 身份进行故障排除并进行任何必要的更改。如果您正在使用 DigitalOcean Droplet 并且遇到根 SSH 连接问题,您可以使用 DigitalOcean 控制台登录到 Droplet。
为新用户配置 SSH 访问的过程取决于服务器的根帐户是使用密码还是 SSH 密钥进行身份验证。
如果root账户使用密码认证
如果您使用密码登录到您的root 帐户,则为SSH 启用了密码验证。您可以通过打开一个新的终端会话并使用 SSH 和您的新用户名来 SSH 到您的新用户帐户:
- ssh sammy@your_server_ip
输入普通用户的密码后,您将登录。请记住,如果您需要以管理权限运行命令,请在它之前键入 sudo
,如下所示:
- sudo command_to_run
每次会话首次使用 sudo
时(以及之后定期),系统都会提示您输入常规用户密码。
为了增强服务器的安全性,您应该设置 SSH 密钥而不是使用密码身份验证。按照本指南在 Rocky Linux 9 上设置 SSH 密钥,了解如何配置基于密钥的身份验证。
如果root账号使用SSH key认证
如果您使用 SSH 密钥登录到您的 root 帐户,那么 SSH 的密码验证将被禁用。您需要将公钥的副本添加到新用户的 ~/.ssh/authorized_keys
文件中才能成功登录。
由于您的公钥已经在服务器上根帐户的 ~/.ssh/authorized_keys
文件中,您可以将该文件和目录结构复制到您的新用户帐户。
复制具有正确所有权和权限的文件的最直接方法是使用 rsync
命令。这将复制 root 用户的 .ssh
目录,保留权限并修改文件所有者,所有这些都在一个命令中完成。确保更改以下命令的突出显示部分以匹配您的常规用户名:
注意:rsync
命令处理以尾部斜杠结尾的源和目标与没有尾部斜杠的源和目标不同。使用下面的 rsync
时,请确保源目录 (~/.ssh
) 不包含尾部斜杠(检查以确保您没有使用 ~ /.ssh/
)。
如果您不小心在命令中添加了尾部斜杠,rsync
会将根帐户的~/.ssh
目录的内容 复制到sudo
用户的主目录,而不是复制整个 ~/.ssh
目录结构。这些文件将位于错误的位置,SSH 将无法找到和使用它们。
- rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy
现在,回到本地机器上的新终端,与非 root 用户打开一个新的 SSH 会话:
- ssh sammy@your_server_ip
您应该在不使用密码的情况下登录到新用户帐户。请记住,如果您需要以管理权限运行命令,请在命令之前键入 sudo
,如下所示:
- sudo command_to_run
每次会话首次使用 sudo
时(以及之后定期),系统都会提示您输入常规用户密码。
结论
此时,您的服务器已经有了坚实的基础。您现在可以在服务器上安装您需要的任何软件。例如,您可以从安装 Nginx Web 服务器开始。