Linux 禁止root远程登录解决办法

linux中root用户是超级管理员,可以针对root用户暴力破解密码,这样很不安全,工作中我们一般禁止root用户直接远程登陆,开设一个或多个普通用户,只允许登陆普通用户,如果有需要用root用户,可以su切换root 或者sudo来拥有root权限执行命令。

1. root无法远程登录,但所有用户可以切换root

首先编辑配置文件/etc/ssh/sshd_config 修改PermitRootLogin 后面的yesno ,并且去掉前面的注释符#,这行的意思是允许使用root用户登录,所以我们将它改为no,不允许root用户直接登录。
保存退出配置文件后,重启sshd服务:
systemctl restart sshd.service
此时再用root用户登录,如果不能登录则代表配置成功。如果需要使用root权限,可以使用su/sudo进行切换。

2. root无法远程登陆,但只有特定的用户才可以切换root

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

  1. 添加一个用户, 把这个用户加入wheel组

    adduser admin 
    passwd admin 
    usermod -G wheel admin
  2. 修改/etc/pam.d/su

    # 去掉这行注释 
    auth required pam_wheel.so use_uid
  3. 修改/etc/login.defs

    # 在文件末添加一行 
    SU_WHEEL_ONLY yes

3. 添加和root权限一样的用户

# 添加用户 
adduser admin 
# 修改密码,密码要遵循密码复杂性 
passwd admin

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

# Allow root to run any commands anywhere root 
ALL=(ALL) ALL admin 
ALL=(ALL) ALL

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

4.ssh限制IP和用户登录

4.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

4.2 利用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

Linux 禁止root远程登录解决办法
https://www.gmtgo.com/233.html
作者
大帅
发布于
2022年11月8日
许可协议