介绍
在首次创建新的Rocky Linux 9服务器时,作为初始设置的一部分,有一些配置步骤是您应该尽早完成的。这将提高服务器的安全性和可用性,并为您构建提供坚实的基础。
步骤1 — 以Root身份登录
要登录服务器,您需要知道您的服务器的公共IP地址。您还需要密码或(如果您安装了用于身份验证的SSH密钥)root用户帐户的私钥。如果您尚未登录服务器,建议您参阅我们关于如何使用SSH连接到您的Droplet的文档,其中详细介绍了此过程。
如果您尚未连接到服务器,请使用以下命令以root用户身份登录(用您服务器的公共IP地址替换命令中的突出显示部分):
- ssh root@your_server_ip
接受关于主机真实性的警告,如果出现的话。如果您使用密码进行身份验证,请提供您的root密码以登录。如果您使用带有口令保护的SSH密钥,您可能会在每个会话的第一次使用密钥时被提示输入口令。如果这是您首次使用密码登录服务器,您可能还会被提示更改root密码。
关于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 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 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
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 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
现在,在本地机器上的新终端中,使用非根用户打开一个新的 SSH 会话:
- ssh sammy@your_server_ip
你应该成功登录到新用户账户,而无需输入密码。记住,如果你需要以管理员权限运行命令,请在命令之前输入 sudo
,例如:
- sudo command_to_run
在每个会话的第一次使用 sudo
时,你需要输入你的常规用户密码(以及之后的一段时间)。
总结
在这一点上,您的服务器已经有了坚实的基础。您现在可以在服务器上安装您需要的任何软件。例如,您可以开始安装Nginx Web服务器。
Source:
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-rocky-linux-9