Rocky Linux 9服务器初始配置指南:从零开始安全部署
引言
当您首次创建新的Rocky Linux 9服务器时,作为初始设置的一部分,您应该尽早完成一些配置步骤。这将提高服务器的安全性和可用性,并为您打下坚实的基础。
第一步:以Root身份登录
要登录到您的服务器,您需要知道服务器的公共IP地址。您还需要密码,或者如果您安装了用于身份验证的SSH密钥,则需要根用户账户的私钥。如果您还没有登录到服务器,您可能希望按照我们关于如何使用SSH连接到vServer的文档进行操作,该文档详细介绍了此过程。
如果您还没有与服务器连接,请使用以下命令以root用户身份登录(将命令中的高亮部分用您的服务器的公共IP地址替换):
ssh root@您的服务器IP
如果出现有关主机真实性的警告,请接受它。如果您使用密码验证,请提供您的root密码登录。如果您使用受到密码保护的SSH密钥,可能会提示您在每个会话中首次使用该密钥时输入密码。如果这是您首次使用密码登录到服务器,您可能还会被要求更改root密码。
关于Root账户
在Linux环境中,超级用户(即root用户)是具有管理员权限的用户,其权限非常广泛。由于超级用户账户具有更高的权限,不建议您经常使用它。这是因为超级用户账户具备进行非常具有破坏性的改变的能力,即使是意外发生的。
因此,下一步是为日常工作建立一个权限范围较小的备用用户账户。当需要时,该账户仍然可以获得增加的特权。
第二步:创建一个新用户
一旦您以root身份登录,您可以创建一个新的用户账户,以后将使用该账户进行登录。
这个例子创建了一个名为“sammy”的新用户,但您可以用您喜欢的任何用户名替换它。
# adduser sammy
接下来,为“sammy”用户设置一个强密码。
# passwd sammy
您将被提示两次输入密码。完成后,您的用户将准备好使用,但首先您将为该用户提供额外的权限以使用sudo
命令。这将允许您在必要时以root用户身份运行命令。
第三步:授予管理员权限
现在,您拥有一个具有普通账户权限的新用户账户。然而,有时您可能需要执行管理任务。
为了避免需要注销常规用户并切换到根账户,您可以为常规账户设置“超级用户”或根权限。这样一来,您的常规用户就可以在每个命令前加上sudo
来以管理员权限运行命令。
要为您的新用户添加这些特权,您需要将新用户添加到wheel
组。在Rocky Linux 9上,默认情况下属于wheel
组的用户允许使用sudo
命令。
以root用户身份运行以下命令,将您的新用户名替换成“高亮部分”并将其添加至wheel
组中。
# usermod -aG wheel sammy
现在,当以普通用户身份登录时,您可以在命令前输入“sudo”来以超级用户权限执行操作。
第四步:设置防火墙
防火墙为您的服务器提供了基本的安全保障。这些应用程序负责拒绝访问您的服务器上的每个端口,除非您明确批准的端口/服务。Rocky Linux拥有一个名为firewalld
的服务来执行此功能。一个名为firewall-cmd
的工具用于配置firewalld
防火墙策略。
注意:如果您的服务器在Silicon Cloud上运行,您可以选择使用Silicon Cloud云防火墙而不是firewalld
。您一次只能使用一个防火墙,以避免可能难以调试的冲突规则。
首先安装firewalld
。
# dnf install firewalld -y
默认的firewalld
配置允许SSH连接,因此您可以立即打开防火墙。
# systemctl start firewalld
检查服务的状态以确保其已启动。
# systemctl status firewalld
输出
● 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
请注意,此选项是“激活”且“启用”的,这意味着如果服务器重新启动,它将默认启动。
既然服务已经开始运行了,您可以使用firewall-cmd
实用工具来获取和设置防火墙的策略信息。
首先,让我们列举一下已经允许的服务:
# firewall-cmd --permanent --list-all
public (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 进行故障排除并进行任何必要的更改。如果您正在使用 Silicon Cloud vServer 并且在 root SSH 连接上遇到问题,您可以使用 Silicon Cloud 控制台登录到 vServer。根据您的服务器根帐户是使用密码还是 SSH 密钥进行身份验证,为您的新用户配置 SSH 访问的过程会有所不同。
如果根账户使用密码验证方式
如果您使用密码登录到 root 帐户,则 SSH 已启用密码身份验证。您可以通过打开新的终端会话,并使用新的用户名通过 SSH 连接到新的用户帐户。
- ssh sammy@your_server_ip
输入您的常规用户密码后,您将登录系统。请记住,如果需要以管理员权限运行命令,请在命令前加上 sudo
,如下所示:
- sudo command_to_run
在每次会话开始时(以及之后一段时间),当您首次使用 sudo
时,系统会提示您输入常规用户密码。
为了增强服务器的安全性,您应该设置 SSH 密钥来取代密码认证。请按照 Rocky Linux 9 上设置 SSH 密钥的指南来学习如何配置基于密钥的认证。
如果根账户使用 SSH 密钥身份验证
如果您使用 SSH 密钥登录到 root 帐户,那么 SSH 的密码验证就被禁用了。您需要将公钥的副本添加到新用户的 ~/.ssh/authorized_keys
文件中才能成功登录。
由于您的公钥已经在服务器上的 root 账户的 ~/.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 网页服务器。