禁止 root 远程登录解决办法

实现 root 无法远程登陆,但所有用户可以切换至 root

  1. 首先打开配置文件
vim /etc/ssh/sshd_config

image
这行的意思是允许使用 root 用户登陆,所以我们将它改为 no ,不允许 root 用户直接登陆。
保存退出配置文件后,重启 sshd 服务

systemctl restart sshd.service

重新建立连接就发现 root 用户已经不能登陆了,我们只能通过普通用户登陆再进行切换。

实现 root 无法远程登陆,且只有特定的用户才可以切换 root

一般情况下,普通用户执行 "su -" 命令, 可以登录为 root 。为了加强系统的安全性, 有必要建立一个管理员的组,只允许这个组的用户执行 "su -" 命令登录为 root ,而让其他组的用户即使执行 "su -" 输入了正确的密码,也无法登录为 root 用户. 在 Unix 和 Linux 下,这个组的名称通常为 "wheel" 。

  1. 添加一个用户,把这个用户加入 wheel 组
adduser admin
passwd  admin
usermod -G wheel admin

image
2. 修改 /etc/pam.d/su
去掉这行注释

auth required pam_wheel.so use_uid
  1. 修改 /etc/login.defs
vim /etc/login.defs

在文件末添加一行

SU_WHEEL_ONLY yes

添加和 root 权限一样的用户

adduser admin
passwd admin

修改 /etc/sudoers 文件,找到下面一行,在 root 下面添加一行,如下所示

vim /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
admin ALL=(ALL) ALL

这个文件只读是一种保护机制,如果你使用 vi 编辑器的话,只要保存时使用 wq! 就可以保存了。或者使用 visudo 命令来进入 sudoers 文件的编辑,就可以正常保存。

ssh 限制 IP 和 用户登录

  1. 配置 sshd 限制
    在 /etc/hosts.allow 中添加允许 ssh 登陆的 ip 或者网段
sshd:192.168.1.2:allow        # 表示一个ip
sshd:192.168.1.0/24:allow     # 表示一段ip

在 /etc/hosts.deny 添加不允许 ssh 登陆的 IP

sshd:ALL    # ALL表示除了上面允许的,其他的 ip 都拒绝登陆 ssh
  1. 利用 iptables 防火墙限制
iptables -A INPUT -p tcp -s 192.168.1.2 --destination-port 22 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -j DROP
posted @ 2023-07-23 21:08  HopeLive  阅读(520)  评论(0)    收藏  举报