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:

要查看您可以按名称启用的附加服务,请输入:

  1. firewall-cmd –get-services

 

要添加一个应该允许的服务,请使用--add-service标志。

  1. firewall-cmd –permanent –add-service=http

 

这将添加 HTTP 服务,允许传入的 TCP 流量进入 80 端口。在重新加载防火墙后,配置将更新。

  1. firewall-cmd –reload

 

请记住,如果您在之后配置了任何其他服务,您将需要显式地打开防火墙(使用服务或端口)。

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

既然您已经有了一个用于日常使用的普通非 root 用户,您需要确保可以使用它来 SSH 登录到您的服务器。

注意:在验证您可以使用新用户登录并使用 sudo 之前,您应该以 root 身份保持登录。这样,如果出现问题,您可以作为 root 进行故障排除并进行任何必要的更改。如果您正在使用 Silicon Cloud vServer 并且在 root SSH 连接上遇到问题,您可以使用 Silicon Cloud 控制台登录到 vServer。根据您的服务器根帐户是使用密码还是 SSH 密钥进行身份验证,为您的新用户配置 SSH 访问的过程会有所不同。

如果根账户使用密码验证方式

如果您使用密码登录到 root 帐户,则 SSH 已启用密码身份验证。您可以通过打开新的终端会话,并使用新的用户名通过 SSH 连接到新的用户帐户。

  1. ssh sammy@your_server_ip

 

输入您的常规用户密码后,您将登录系统。请记住,如果需要以管理员权限运行命令,请在命令前加上 sudo,如下所示:

  1. 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 将无法找到和使用它们。

  1. rsync –archive –chown=sammy:sammy ~/.ssh /home/sammy

 

现在,在您本地计算机的新终端上,使用非 root 用户打开一个新的 SSH 会话。

  1. ssh sammy@your_server_ip

 

您应该使用新用户账户登录,无需使用密码。请记住,如果需要以管理员权限运行命令,请在命令前加上 sudo,如下所示:

  1. sudo command_to_run

 

在每次会话开始时(以及之后的一段时间里),当使用 sudo 命令时,您需要输入您的常规用户密码。

结论

至此,您已经为您的服务器打下了坚实的基础。现在您可以安装您所需的任何软件在您的服务器上。例如,您可以开始安装 Nginx 网页服务器。

bannerAds