root ¶
在 Ubuntu 系统中,加固 Root 账户的核心安全策略是:禁用 Root 账户密码登录(使其无法被爆破),并禁止 Root 通过 SSH 远程登录(防止暴力破解)。同时,日常操作应使用普通用户 + sudo 提权。
以下是标准生产环境加固流程,包含详细命令与逐词解析。
第一步:设置一个强壮的普通用户(必须有此步骤) ¶
绝对不要在只有 Root 的情况下禁用 Root,否则你会被锁在系统外。请先确保有一个属于 sudo 组的普通用户。
# 创建新用户(如果已有则跳过)
sudo adduser myadmin
# 将用户加入 sudo 管理员组(Ubuntu 默认组为 sudo)
sudo usermod -aG sudo myadmin
命令解析:
usermod:User Modify(用户修改)-aG:Append(追加) + Group(组)。-a防止覆盖用户原有附属组,-G指定附加组。
第二步:加固 Root 账户(锁定登录) ¶
方法 A:锁定 Root 密码(最推荐) ¶
锁定后,Root 无法通过任何终端(本地或 SSH)输入密码登录,但 Root 用户依然存在,sudo 和系统服务可以正常调用它。
sudo passwd -l root
命令解析:
passwd:Password(密码)命令。-l:Lock(锁定)。它在/etc/shadow文件的 Root 密码哈希前添加!符号,使密码失效。
方法 B:将 Root Shell 改为 nologin(可选) ¶
彻底阻止 Root 交互式登录(但 Root 依然可以通过 su - 切换,除非同时锁定密码)。
sudo usermod -s /usr/sbin/nologin root
命令解析:
-s:Shell。将用户的登录 Shell 改为/usr/sbin/nologin。nologin:No Login。当 Root 尝试登录时,会显示/etc/nologin.txt内容并拒绝登录(注意:这仅阻止交互式登录,不影响cron或系统进程)。
生产标准做法:通常 只执行
passwd -l root就足够。
第三步:禁止 Root 通过 SSH 登录(最关键) ¶
编辑 SSH 服务配置文件:
sudo vim /etc/ssh/sshd_config
在文件中找到或添加以下行(如果已有被注释的行 #PermitRootLogin,删除 # 并修改值):
PermitRootLogin no
参数解析:
- PermitRootLogin:Permit Root Login(允许 Root 登录)。
no:禁止(其他可选值:prohibit-password仅禁止密码但允许密钥,yes允许)。
保存并退出后,必须重启 SSH 服务生效:
sudo systemctl restart sshd
命令解析:
systemctl:System Control(系统控制)。restart:重启。sshd:SSH Daemon(SSH 守护进程,即服务端)。
第四步:高级加固(可选但强烈建议) ¶
1. 修改 SSH 默认端口(避开扫描器) ¶
# 在 /etc/ssh/sshd_config 中找到 Port 22,改为:
Port 5022
解析: Port 即 端口,改为非标准端口(如 5000-6000 之间的随机数)。
2. 禁用 Root 的 .rhosts 文件(防止 Rhosts 认证) ¶
sudo touch /etc/hosts.deny
sudo touch /etc/hosts.allow
# 或者直接删除或清空 .rhosts 文件
sudo find / -name ".rhosts" -delete
第五步:验证加固是否生效(必须自检) ¶
| 测试项目 | 命令/操作 | 预期结果 |
|---|---|---|
| 检查 Root 是否锁定 | sudo passwd -S root |
输出包含 L(Locked) |
| 检查 SSH 配置 | `sudo sshd -T | grep permitrootlogin` |
| 本地切换测试 | su - root |
提示 Authentication failure(认证失败) |
| 远程测试(新窗口) | ssh root@你的IP |
提示 Permission denied(权限被拒绝) |
passwd -S 解析: -S 代表 Status(状态),显示账户密码状态。
第六步:如果误操作导致无法登录怎么办?(应急方案) ¶
如果你锁了 Root 且普通用户无法 sudo,请通过 VPS 控制台(VNC/救援模式) 或 物理机外接键盘 进入恢复模式:
-
重启系统,在 Grub 引导时选择 “Advanced options” -> “Recovery mode” -> “Drop to root shell”。
-
此时你拥有临时 Root Shell,执行:
# 解锁 Root passwd -u root # 或修改 SSH 配置 vi /etc/ssh/sshd_config
总结标准操作清单(复制即用) ¶
# 1. 创建管理员用户(替换 yourname)
sudo adduser yourname
sudo usermod -aG sudo yourname
# 2. 锁定 Root
sudo passwd -l root
# 3. 禁止 SSH Root 登录
sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart sshd
# 4. 验证
sudo passwd -S root
sudo sshd -T | grep permitrootlogin
完成以上操作后,你的 Ubuntu Root 账户已满足 CIS 基准合规要求。 日常运维请使用普通用户 + sudo -i 临时切换到 Root 环境进行操作。