介绍
当你第一次创建一个新的Rocky Linux 8服务器时,有一些配置步骤,你应该提前采取作为基本设置的一部分,这将增加你的服务器的安全性和可用性,并为后续行动提供坚实的基础。
步骤 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 8 上,属于 wheel组的用户可以使用sudo
命令。
作为 root,运行此命令,将新用户添加到 wheel组(用新用户名替换突出的单词):
1usermod -aG wheel sammy
现在,当您作为常规用户登录时,您可以在命令前键入sudo
,以执行具有超级用户权限的操作。
步骤4:设置基本防火墙
防火墙为您的服务器提供一个基本的安全级别. 这些应用程序负责拒绝到您的服务器上的每个端口的流量,除了那些您明确批准的端口/服务。 Rocky Linux 有一个名为防火墙
的服务来执行这个功能。
<$>[注]
注: 如果您的服务器运行在DigitalOcean上,您可以选择使用DigitalOcean Cloud Firewalls
(https://www.digitalocean.com/docs/networking/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 Thu 2020-02-06 16:39:40 UTC; 3s ago
5 Docs: man:firewalld(1)
6 Main PID: 13180 (firewalld)
7 Tasks: 2 (limit: 5059)
8 Memory: 22.4M
9 CGroup: /system.slice/firewalld.service
10 └─13180 /usr/libexec/platform-python -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 8上设置SSH密钥(https://andsky.com/tech/tutorials/how-to-set-up-ssh-keys-on-rocky-linux-8),以了解如何配置基于密钥的身份验证。
如果 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
时首次使用您的常规用户密码(随后定期使用)。
结论
在这一点上,您对您的服务器有一个坚实的基础,您现在可以在您的服务器上安装所需的任何软件。