VPS重装系统后的用户管理增强VPS安全性:告别Root,创建你的专属操作用户VPS重装系统后的用户管理

嘿,大家好!今天想跟大家聊聊一个关于VPS安全的小技巧,但我觉得它非常重要,那就是——别再直接用Root用户操作你的服务器啦!

Root用户权限太高了,一个不小心或者被恶意利用,后果可能不堪设想。所以,更安全的做法是创建一个普通用户,然后只在需要的时候通过 sudo 命令来获取Root权限。这样即使这个普通用户出了问题,也不会直接影响到整个系统。

下面,我就根据我自己的实践经验,手把手教你如何创建一个新的用户,并进行一些必要的配置,让你的VPS更安全。

前提: 你需要通过Root用户登录到你的VPS来执行下面的初始设置。

第一步:确认并安装 sudo 工具

大多数现代Linux发行版都预装了 sudo 了,但以防万一,我们还是先确认一下。如果你的系统上没有,需要先安装它。

通常,安装命令是这样的(根据你的系统选择):

  • Debian/Ubuntu:
    apt update
    apt install sudo

  • CentOS/RHEL/Fedora:
    yum install sudo
    # 或者对于较新的系统
    dnf install sudo

第二步:找到你的系统使用哪个用户组来管理 sudo 权限

不同的Linux发行版可能会使用不同的用户组来赋予用户执行 sudo 命令的权限。最常见的是 sudowheel。我们需要确认一下你的系统用的是哪个。

运行这个命令:

grep -E 'sudo|wheel' /etc/group

这个命令会查找 /etc/group 文件中包含 sudowheel 的行。

输出示例:

  • 如果看到类似 sudo:x:27: 这样的行,说明你的系统使用 sudo 组。
  • 如果看到类似 wheel:x:10: 这样的行,说明你的系统使用 wheel 组。

记下这个组名,下一步会用到。

第三步:创建新用户并加入到 sudo 用户组

现在,我们来创建那个用于日常操作的新用户。这里我以创建一个名为 yaelee 的用户为例,你需要把 yaelee 替换成你想要的名字。同时,根据上一步确认的组名,选择 sudowheel

创建用户的命令是 useradd,加上 -m 参数是为了同时创建用户的主目录(/home/yaelee),-G 参数后面跟着的就是我们要把用户添加进去的 sudowheel 用户组。

  • 如果你的系统使用 sudo 组:
    sudo useradd -m -G sudo yaelee

  • 如果你的系统使用 wheel 组:
    sudo useradd -m -G wheel yaelee

执行完这个命令,用户 yaelee 就创建好了,并且拥有了通过 sudo 执行命令的潜力。

第四步:为新用户配置SSH公钥登录

这是非常关键的一步,我们不希望新用户通过密码登录(因为密码容易被破解),而是通过更安全的SSH密钥对登录。你需要把你本地电脑生成的SSH公钥放到服务器上新用户的家目录下的 .ssh/authorized_keys 文件里。

首先,以新用户的身份创建 .ssh 目录(注意权限问题,所以我们用 sudo -u yaelee 来执行):

sudo -u yaelee mkdir -p /home/yaelee/.ssh

-p 参数确保即使父目录 /home/yaelee 不存在(虽然上一步 -m 已经创建了),这个命令也不会出错。

然后,编辑 authorized_keys 文件,将你的公钥粘贴进去。同样,我们用 sudo -u yaelee 来确保文件是以 yaelee 用户的身份创建和编辑的。

sudo -u yaelee nano /home/yaelee/.ssh/authorized_keys

在打开的编辑器里,粘贴你的公钥内容。公钥通常长这样(以 ssh-ed25519ssh-rsa 开头):

ssh-ed25519 *******

粘贴完成后,保存并关闭文件(nano 编辑器通常是按 Ctrl + X,然后按 Y 确认保存,回车确认文件名)。

重要: 确保 .ssh 目录和 authorized_keys 文件的权限设置正确。通常,.ssh 目录的权限应该是 700 (只有用户自己有读写执行权限),authorized_keys 文件的权限应该是 600 (只有用户自己有读写权限)。虽然 sudo -u 创建时权限通常是对的,但最好还是检查一下:

sudo -u yaelee chmod 700 /home/yaelee/.ssh
sudo -u yaelee chmod 600 /home/yaelee/.ssh/authorized_keys

第五步:为新用户设置密码(可选但推荐)

虽然我们后面会禁用密码登录SSH,但为用户设置一个密码仍然是一个好的习惯,以备不时之需(比如本地登录)。

passwd yaelee

系统会提示你输入并确认新用户的密码。

第六步:更改新用户的默认Shell为Bash

默认情况下,新用户的Shell可能是 /bin/sh,它可能是 /bin/bash 的一个简化版本或者指向其他Shell。大多数人更习惯使用功能更强大的 /bin/bash

要修改用户的默认Shell,需要编辑 /etc/passwd 文件。这个文件包含了系统中所有用户的信息。

nano /etc/passwd

找到你新创建的用户 yaelee 的那一行。它看起来会像这样(注意最后一部分):

yaelee:x:1000:1000::/home/yaelee:/bin/sh

将这一行的最后一部分,也就是 /bin/sh,修改为 /bin/bash

yaelee:x:1000:1000::/home/yaelee:/bin/bash

保存并关闭文件。下次 yaelee 用户登录时,就会使用 /bin/bash 作为默认Shell了。

第七步:禁用SSH密码登录,只允许密钥登录

为了进一步提高安全性,我们应该禁止通过密码进行SSH登录,只允许使用密钥对登录。

编辑SSH服务器的配置文件 /etc/ssh/sshd_config

nano /etc/ssh/sshd_config

找到 PasswordAuthentication 这一行。它前面可能有一个 # 符号表示被注释掉了。

#PasswordAuthentication yes

取消前面的 #,并将 yes 改为 no

PasswordAuthentication no

你可能还需要检查并确保 PubkeyAuthentication yes 这一行没有被注释掉(通常是默认开启的)。

保存并关闭文件。然后,重启SSH服务使配置生效:

systemctl restart sshd

或者对于一些旧系统:

service sshd restart

重要警告: 在执行这一步之前,请务必确认你已经成功通过SSH密钥登录过新创建的用户!否则一旦禁用密码登录,你可能会无法再次登录服务器(除非你有其他登录方式,比如VNC或控制台)。强烈建议先保持Root用户的SSH连接打开,用新用户开一个新终端窗口测试登录成功后再继续。

第八步:配置 sudo 免密码执行(可选)

这一步是让你的日常操作更方便,通过 sudo 执行命令时不再需要输入密码。请注意,这会稍微降低安全性,因为任何能够以该用户身份执行命令的人都可以无需密码地获得Root权限。 如果你对安全性要求极高,可以跳过这一步。

编辑 sudo 的配置文件,推荐使用 visudo 命令,它会在保存前检查语法,避免配置错误导致 sudo 无法使用:

visudo

找到允许 sudo 用户组执行 sudo 的那一行。根据你第二步确认的组名,它可能是:

%sudo   ALL=(ALL:ALL) ALL

或者

%wheel   ALL=(ALL:ALL) ALL

将这一行修改为在 ALL 前面加上 NOPASSWD:

%sudo   ALL=(ALL:ALL) NOPASSWD:ALL

或者

%wheel   ALL=(ALL:ALL) NOPASSWD:ALL

保存并关闭文件(visudo 在nano模式下也是 Ctrl + X, Y, 回车)。

现在,使用 yaelee 用户登录后,执行 sudo 命令就不需要输入密码了。

测试一下!

配置完成后,强烈建议你不要急着关闭Root用户的SSH连接。先打开一个新的终端窗口,尝试使用你新创建的用户和SSH密钥进行登录:

ssh yaelee@你的VPS的IP地址

如果能够成功登录,恭喜你!然后尝试执行一个需要Root权限的命令,比如更新软件包列表:

sudo apt update # 或者 sudo yum update / sudo dnf update

如果你配置了 NOPASSWD,这个命令应该直接执行,不需要输入密码。如果没有配置 NOPASSWD,系统会提示你输入 yaelee 用户的密码。

确认新用户和 sudo 都能正常工作后,你就可以放心地退出Root用户了。

总结

通过上面这几个步骤,我们就成功地为VPS创建了一个用于日常操作的非Root用户,并通过SSH密钥增强了登录安全性,同时保留了通过 sudo 在需要时获取Root权限的能力。这大大降低了Root账户直接暴露在外的风险,让你的VPS更加安全。

希望这篇文章对你有帮助!

版权声明:本站原创文章,由 はるこHaruko 发表。
转载说明:除特殊说明外本站文章皆由 CC BY-NC-ND 4.0协议 发布,转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇