使用 Rocky Linux 9 进行初始服务器设置

介绍

当你第一次创建一个新的Rocky Linux 9服务器时,有一些配置步骤,你应该提前作为初始安装的一部分,这将增加你的服务器的安全性和可用性,并为你提供一个坚实的基础。

步骤 1 - 登录作为根

要登录您的服务器,您需要知道您的服务器的公共IP地址**.您还需要密码或,如果您安装了SSH密钥进行身份验证,则需要对您的用户帐户的私钥 root. 如果您尚未登录到您的服务器,您可能需要遵循我们关于如何通过SSH连接到您的Droplet的文档(https://www.digitalocean.com/docs/droplets/how-to/connect-with-ssh/),该文档详细介绍了这个过程。

如果您尚未连接到您的服务器,请使用以下命令登录为 root用户(将命令的突出部分替换为您的服务器的公共 IP 地址):

1[environment local]
2ssh root@your_server_ip

如果您正在使用密码身份验证,请提供您的 root密码登录. 如果您正在使用一个受密码保护的 SSH 密钥,您可能会被要求在每次使用密钥时首次输入密码。

关于根

root用户是Linux环境中的管理用户,并且具有非常广泛的权限.由于 root帐户的权限增加,您不被鼓励定期使用它。

因此,下一步是创建一个替代用户帐户,对日常工作影响范围减少,如果需要,这个帐户仍然可以获得增加的特权。

步骤二:创建新用户

一旦您登录为 root,您可以创建一个新的用户帐户,您将从现在开始使用它来登录。

此示例创建一个名为 sammy的新用户,但您应该用您喜欢的任何用户名替换它:

1adduser sammy

接下来,为sammy用户设置一个强大的密码:

1passwd sammy

您将被要求输入密码两次。这样做后,您的用户将准备好使用,但首先您将给该用户额外的权限来使用sudo命令。

第三步:授予行政特权

现在,您有一个新的用户帐户,具有常规帐户权限,但有时可能需要执行管理任务。

为了避免需要退出您的常规用户并作为 root帐户再次登录,您可以为您的常规帐户设置所谓的超级用户root权限,这将允许您的常规用户通过在每个命令前放置sudo这个词来运行具有管理权限的命令。

要将这些权限添加到新用户中,您需要将新用户添加到 wheel组中,默认情况下,在 Rocky Linux 9 上,属于 wheel组的用户可以使用sudo命令。

作为 root,运行此命令,将新用户添加到 wheel组(用新用户名替换突出的单词):

1usermod -aG wheel sammy

现在,当您作为常规用户登录时,您可以在命令前键入sudo,以执行具有超级用户权限的操作。

步骤4:设置防火墙

防火墙为您的服务器提供一个基本的安全级别. 这些应用程序负责拒绝到您的服务器上的每个端口的流量,除了那些您明确批准的端口/服务。 Rocky Linux 有一个名为防火墙的服务来执行这个功能。

<$>[注] 注: 如果您的服务器运行在DigitalOcean上,您可以选择使用DigitalOcean Cloud Firewalls而不是firewalld

首先安装firewalld:

1dnf install firewalld -y

默认的firewalld配置允许ssh连接,因此您可以立即打开防火墙:

1systemctl start firewalld

检查服务的状态,以确保它开始:

1systemctl status firewalld
 1[secondary_label Output]
 2 firewalld.service - firewalld - dynamic firewall daemon
 3     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
 4     Active: active (running) since Tue 2022-09-13 18:26:19 UTC; 1 day 2h ago
 5       Docs: man:firewalld(1)
 6   Main PID: 15060 (firewalld)
 7      Tasks: 4 (limit: 10938)
 8     Memory: 28.1M
 9        CPU: 6.127s
10     CGroup: /system.slice/firewalld.service
11             └─15060 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid

请注意,它既是活跃又是启用,这意味着如果重新启动服务器,它将默认启动。

现在该服务已启动并运行,您可以使用防火墙-cmd实用程序来获取和设置防火墙的策略信息。

首先,让我们列出哪些服务已经被允许:

1firewall-cmd --permanent --list-all
 1[secondary_label Output]
 2public (active)
 3  target: default
 4  icmp-block-inversion: no
 5  interfaces: eth0 eth1
 6  sources:
 7  services: cockpit dhcpv6-client ssh
 8  ports:
 9  protocols:
10  masquerade: no
11  forward-ports:
12  source-ports:
13  icmp-blocks:
14  rich rules:

若要查看您可以通过名称启用的其他服务,请键入:

1firewall-cmd --get-services

若要添加应该允许的服务,请使用--add-service旗帜:

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

这将添加http服务,并允许输入的TCP流量到端口80

1firewall-cmd --reload

请记住,您将不得不明确打开防火墙(包括服务或端口)对您可能稍后配置的任何额外服务。

步骤 5 – 允许外部访问您的常规用户

现在你有一个常规的非 root 用户,每天使用,你需要确保你可以使用它来 SSH 到你的服务器。

<$>[注] 注: 直到确认您可以登录并与新用户使用sudo,您应该保持登录为 root. 这样,如果您遇到问题,您可以解决问题并进行任何必要的更改作为 root. 如果您正在使用DigitalOcean Droplet并在您的 root SSH连接中遇到问题,您可以使用DigitalOcean Console登录到Droplet。

配置新用户 SSH 访问的过程取决于您的服务器的 root 帐户是否使用密码或 SSH 密钥进行身份验证。

如果 root 帐户使用密码身份验证

如果您已登录您的 root帐户 使用密码,那么 SSH 将启用密码身份验证。

1[environment local]
2ssh sammy@your_server_ip

输入您的常规用户密码后,您将被登录. 请记住,如果您需要运行具有管理权限的命令,请在此之前输入sudo:

1sudo command_to_run

您将被要求在每次使用sudo时首次使用您的常规用户密码(随后定期使用)。

为了提高服务器的安全性,您应该设置 SSH 密钥,而不是使用密码身份验证**. 遵循此指南在 Rocky Linux 9 上设置 SSH 密钥上,了解如何配置基于密钥的身份验证。

如果 root 帐户使用 SSH 密钥身份验证

如果您已登录您的 root 帐户 _ using SSH keys_,那么对 SSH 的密码身份验证是 disabled. 您需要将您的公共密钥的副本添加到新用户的 ~/.ssh/authorized_keys 文件中才能成功登录。

由于您的公共密钥已经在服务器上的 root帐户的 ~/.ssh/authorized_keys 文件中,您可以将该文件和目录结构复制到您的新用户帐户中。

以正确的所有权和权限复制文件最简单的方法是使用rsync命令. 这将复制 root用户的.ssh目录,保留权限,并在一个命令中修改文件所有者。

<$>[注] 注: rsync 命令将以跟踪 slash 结束的源和目的地与没有跟踪 slash 的源和目的地不同。

如果您意外地在命令中添加了追踪缩略,则rsync会将 root帐户的~/.ssh目录的 contents 复制到用户的sudo主目录,而不是复制整个~/.ssh目录结构。

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

现在,在本地机器上的新终端中,与您的非root用户开启新的SSH会话:

1[environment local]
2ssh sammy@your_server_ip

您应该在未使用密码的情况下登录到新用户帐户. 请记住,如果您需要运行具有管理权限的命令,请在此之前键入sudo:

1sudo command_to_run

您将被要求在每次使用sudo时首次使用您的常规用户密码(随后定期使用)。

结论

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

Published At
Categories with 技术
comments powered by Disqus