介绍
当您首次创建新的Rocky Linux 8服务器时,作为基本设置的一部分,您应该采取一些配置步骤。这将提高服务器的安全性和可用性,并为后续操作打下坚实的基础。
步骤1 — 登录为Root用户
要登录服务器,您需要知道您的服务器的公共IP地址。您还需要密码,或者如果您安装了用于身份验证的SSH密钥,则需要root用户帐户的私钥。如果您尚未登录服务器,您可能希望查看我们的文档,了解如何使用SSH连接到您的Droplet,该文档详细介绍了该过程。
如果您尚未连接到服务器,请立即使用以下命令以root用户身份登录(请将命令中的突出显示部分替换为您服务器的公共IP地址):
如果出现主机真实性警告,请接受。如果您使用密码验证,请提供您的root密码以登录。如果您使用的是受密码保护的SSH密钥,您可能会在每个会话的第一次使用该密钥时被提示输入密码。如果这是您首次使用密码登录服务器,您可能还会被提示更改root密码。
关于Root
root用户是Linux环境中的管理员用户,拥有非常广泛的权限。由于root账户的权限提升,您被建议不要经常使用它。这是因为root账户所具有的部分权力包括即使是意外地进行非常破坏性的更改。
因此,下一步是设置一个替代用户账户,其影响范围减小,用于日常工作。此账户仍然能够在必要时获得增加的权限。
步骤2 — 创建新用户
一旦您以root用户登录,您可以创建我们将从现在开始使用的新用户账户。
这个示例创建一个名为sammy的新用户,但你应该用任何你喜欢的用户名替换它:
接下来,为sammy
用户设置一个强密码:
系统会提示你两次输入密码。完成后,你的用户就可以使用了,但首先我们将给这个用户额外的权限,以便使用sudo
命令。这将允许我们在必要时以root身份运行命令。
第三步 —— 授予管理员权限
现在,我们有了一个具有普通帐户权限的新用户帐户。然而,我们有时可能需要执行管理员任务。
为了避免不得不退出我们的常规用户账户并以root账户重新登录,我们可以为我们的常规账户设置所谓的“超级用户”或root权限。这将允许我们的常规用户在每个命令前加上sudo
一词以具有管理员权限。
要为我们的新用户添加这些权限,我们需要将新用户添加到wheel组中。默认情况下,在 Rocky Linux 8 上,属于wheel组的用户被允许使用sudo
命令。
作为root用户,运行以下命令将您的新用户添加到wheel组(用您的新用户名替换突出显示的单词):
现在,以您的常规用户身份登录时,您可以在命令前输入sudo
来以超级用户权限执行操作。
步骤 4 — 设置基本防火墙
防火墙为您的服务器提供了基本的安全级别。这些应用程序负责拒绝服务器上每个端口的流量,除了您明确批准的那些端口/服务。Rocky Linux 有一个名为firewalld
的服务来执行此功能。一个名为firewall-cmd
的工具用于配置firewalld
防火墙策略。
注意:如果您的服务器正在运行DigitalOcean,您可以选择使用DigitalOcean云防火墙而不是firewalld
。我们建议一次只使用一个防火墙,以避免可能难以调试的冲突规则。
首先安装firewalld
:
默认的firewalld
配置允许ssh
连接,因此我们可以立即启动防火墙:
检查服务的状态以确保它已启动:
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
实用程序获取和设置防火墙的策略信息。
首先让我们列出已经允许的服务:
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:
要查看您可以按名称启用的附加服务,请输入:
要添加应该允许的服务,请使用--add-service
标志:
这将添加http
服务并允许传入的TCP流量到端口80
。配置将在您重新加载防火墙后更新:
请记住,您必须显式打开防火墙(使用服务或端口),以允许您可能稍后配置的任何附加服务。
步骤 5 — 为您的常规用户启用外部访问
现在我们有了一个常规的非root用户供日常使用,我们需要确保我们可以使用它来SSH登录到我们的服务器。
注意:在验证您能够使用新用户登录并使用sudo
之前,我们建议保持登录状态为root。这样,如果出现问题,您可以作为root进行故障排除并进行任何必要的更改。如果您使用的是DigitalOcean Droplet并且在root SSH连接中遇到问题,您可以使用DigitalOcean控制台登录到Droplet。
为您的新用户配置SSH访问的过程取决于您服务器的root账户是使用密码还是SSH密钥进行身份验证。
如果根账户使用密码身份验证
如果您使用密码登录到您的root账户,那么SSH已启用密码身份验证。您可以通过打开新的终端会话并使用SSH与您的新用户名登录到新用户账户:
输入您的常规用户密码后,您将登录成功。请记住,如果您需要以管理员权限运行命令,请在命令前键入sudo
,如下所示:
每个会话第一次使用sudo
时(以及之后的一段时间),都会提示您输入常规用户密码。
为增强服务器安全性,我们强烈建议设置 SSH 密钥,而不是使用密码身份验证。请按照我们的指南在 Rocky Linux 8 上设置 SSH 密钥学习如何配置基于密钥的身份验证。
如果根帐户使用 SSH 密钥身份验证
如果您已经使用 SSH 密钥登录到您的根帐户,则 SSH 的密码身份验证已禁用。您需要将您的公钥副本添加到新用户的~/.ssh/authorized_keys
文件中,以成功登录。
由于您的公钥已经在服务器上的根帐户的~/.ssh/authorized_keys
文件中,我们可以复制该文件和目录结构到我们的新用户帐户。
使用rsync
命令以正确的所有权和权限复制文件是最简单的方法。这将复制root用户的.ssh
目录,保留权限,并修改文件所有者,一条命令即可完成。请确保修改下面命令中的突出显示部分以匹配您的常规用户名:
注意: rsync
命令对以斜杠结尾的源和目标处理方式与没有斜杠结尾的不同。在使用下面的 rsync
时,请确保源目录(~/.ssh
)没有包含尾部斜杠(检查确保您没有使用 ~/.ssh/
)。
如果您意外地在命令中添加了尾部斜杠,rsync
将会将 根 账户的 ~/.ssh
目录的内容复制到 sudo
用户的主目录中,而不是复制整个 ~/.ssh
目录结构。文件会位于错误的位置,SSH 将无法找到并使用它们。
现在,在本地计算机的新终端中,使用您的非 根 用户打开一个新的 SSH 会话:
您应该已经登录到新用户帐户,而无需使用密码。记住,如果您需要以管理员权限运行命令,请在其之前输入 sudo
,就像这样:
当每个会话的第一次(以及之后定期)使用 sudo
时,您将会被提示输入您的常规用户密码。
结论
到目前为止,您的服务器已经有了一个坚实的基础。您现在可以在服务器上安装任何您需要的软件。
Source:
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-rocky-linux-8