用一个 sudo
用户访问服务器并在 root 级别执行命令是 Linux 和 Unix 系统管理员中非常普遍的做法。 使用一个 sudo
用户通常通过禁用对服务器的直接 root 访问来阻止未经授权的访问。
在本教程中,我们将介绍禁用直接 root 访问的基本步骤,创建一个 sudo 用户,并设置 sudo CentOS、Debian 和 FreeBSD 上的小组。
先决条件
- 新安装的 Linux 服务器,带有您喜欢的发行版。
- 安装在服务器上的文本编辑器,无论是 nano、vi、vim、emacs。
第 1 步:安装 sudo
Debian
apt-get install sudo -y
CentOS
yum install sudo -y
FreeBSD
cd /usr/ports/security/sudo/ && make install clean
或者
pkg install sudo
第 2 步:添加 sudo 用户
一种 sudo
user 是 Linux 或 Unix 机器上的普通用户帐户。
Debian
adduser mynewusername
CentOS
adduser mynewusername
FreeBSD
adduser mynewusername
第 3 步:将新用户添加到 wheel 组(可选)
轮组是一个用户组,它限制了能够进行的人数 su
根。 添加您的 sudo
用户到 wheel
group 是完全可选的,但它是可取的。
笔记: 在 Debian 中, sudo
组经常被发现而不是 wheel
. 但是,您可以手动添加 wheel
组使用 groupadd
命令。 出于本教程的目的,我们将使用 sudo
Debian 小组。
和…之间的不同 wheel
和 sudo
.
在 CentOS 和 Debian 中,属于 wheel
组可以执行 su
并直接上升到 root
. 同时,一个 sudo
用户将使用 sudo su
第一的。 本质上,除了用于成为 root 的语法之外,没有真正的区别,属于两个组的用户都可以使用 sudo
命令。
Debian
usermod -aG sudo mynewusername
CentOS
usermod -aG wheel mynewusername
FreeBSD
pw group mod wheel -m mynewusername
第 4 步:确保您的 sudoers
文件设置正确
重要的是要确保 sudoers
文件位于 /etc/sudoers
正确设置以允许 sudo users
有效地利用 sudo
命令。 为了实现这一点,我们将查看 /etc/sudoers
并在适用的情况下编辑它们。
Debian
vim /etc/sudoers
或者
visudo
CentOS
vim /etc/sudoers
或者
visudo
FreeBSD
vim /etc/sudoers
或者
visudo
笔记: 这 visudo
命令将打开 /etc/sudoers
使用系统首选的文本编辑器(通常是 vi 或 vim)。
在此行下方开始查看和编辑:
# Allow members of group sudo to execute any command
本节 /etc/sudoers
通常看起来像这样:
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
在某些系统中,您可能找不到 %wheel
代替 %sudo
; 在这种情况下,这将是您开始修改的行。
如果行以 %sudo
在 Debian 或 %wheel
在 CentOS 和 FreeBSD 中没有注释掉(以 # 为前缀),这意味着 sudo 已经设置并启用。 然后,您可以进行下一步。
第 5 步:允许既不属于 wheel
也不是 sudo
组来执行 sudo
命令
可以允许既不在用户组中的用户执行 sudo
命令只需将它们添加到 /etc/sudoers
如下:
anotherusername ALL=(ALL) ALL
步骤 6:重新启动 SSHD 服务器
为了应用您所做的更改 /etc/sudoers
,需要重启SSHD服务器如下:
Debian
/etc/init.d/sshd restart
CentOS 6
/etc/init.d/sshd restart
CentOS 7
systemctl restart sshd.service
FreeBSD
/etc/rc.d/sshd start
第 7 步:测试
重新启动 SSH 服务器后,注销,然后以您的用户身份重新登录 sudo user
,然后尝试执行一些测试命令如下:
sudo uptime
sudo whoami
以下任何命令都将允许 sudo user
成为 root
.
sudo su -
sudo -i
sudo -S
笔记:
- 这
whoami
命令将返回root
当与sudo
. - 执行时会提示您输入用户密码
sudo
命令,除非您明确指示系统不要提示sudo users
对于他们的密码。 请注意,这不是推荐的做法。
可选:允许 sudo
无需输入用户密码
如前所述,这不是推荐的做法,包含在本教程中仅用于演示目的。
为了让您的 sudo user
执行 sudo
命令而不提示输入密码,在访问行后缀 /etc/sudoers
和 NOPASSWD: ALL
如下:
%sudo ALL=(ALL:ALL) ALL NOPASSWD: ALL
笔记: 您需要重新启动 SSHD 服务器才能应用更改。
步骤 8:禁用直接 root 访问
现在您已经确认可以使用您的 sudo user
没有问题,现在是第八步也是最后一步,禁用直接 root 访问。
首先,打开 /etc/ssh/sshd_config
使用您喜欢的文本编辑器并找到包含以下字符串的行。 它可能带有前缀 #
特点。
PermitRootLogin
无论前缀或选项的值怎样 /etc/ssh/sshd_config
,您需要将该行更改为以下内容:
PermitRootLogin no
最后,重新启动您的 SSHD 服务器。
笔记: 不要忘记通过尝试通过 SSH 连接到您的服务器来测试您的更改 root
. 如果您无法这样做,则意味着您已成功完成所有必要的步骤。
我们的教程到此结束。
注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com