linux中root用户是超级管理员,可以针对root用户暴力破解密码,这样很不安全,工作中我们一般禁止root用户直接远程登陆,开设一个或多个普通用户,只允许登陆普通用户,如果有需要用root用户,可以用su命令来切换root或者sudo命令来拥有root权限执行命令。
一、SSH禁止root用户远程登录
1、首先打开ssh配置文件:/etc/ssh/sshd_config
[root@localhost ]# vim /etc/ssh/sshd_config
2、PermitRootLogin默认是yes,它的意思是允许使用root用户登陆。
所以我们将PermitRootLogin改为no,不允许root用户直接登陆。一定要去掉#号。
# Authentication:
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#RSAAuthentication yes
#PubkeyAuthentication yes
3、重启SSH服务,让ssh配置文件生效。
[root@localhost ]# systemctl restart sshd
或
[root@localhost ]# /etc/rc.d/init.d/sshd restart
友情提示:
其实到这里整个内容核心的东西就已经算是结束了,你只需要重新建立连接就发现root用户已经不能登陆了。
但是:为了防止新手不懂,搞崩服务器,最终连接不上服务器了,因此,老手可以忽略下面的部份内容,新手的话建议先不要重新连接ssh。请继续往下面看:
二、root无法远程登陆,但只有特定的用户才可以切换root
一般情况下, 普通用户执行”su -“命令,可以登录为root。为了加强系统的安全性,有必要建立一个管理员的组,只允许这个组的用户执行”su -” 命令登录为roo,而让其他组的用户即使执行”su -” 输入了正确的密码,也无法登录为root用户. 在Unix 和Linux 下,这个组的名称通常为”wheel”。
1、添加一个用户,把这个用户加入wheel组
[root@localhost ]# adduser admin
[root@localhost ]# passwd admin
[root@localhost ]# usermod -G wheel admin
2、修改 /etc/pam.d/su ,去掉以下这行:
auth required pam_wheel.so use_uid #去掉这行注释
3、修改 /etc/login.defs
[root@localhost ]# vim /etc/login.defs
在文件末添加一行:
SU_WHEEL_ONLY yes
三、添加和root权限一样的用户
- adduser admin
- passwd admin (修改密码,密码要遵循密码复杂性)
修改 /etc/sudoers 文件
[root@localhost ]# vim /etc/sudoers
找到下面一行,在root下面添加一行admin用户,具体如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
admin ALL=(ALL) ALL
四、通过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
2、利用iptables防火墙限制
[root@localhost ]# iptables -A INPUT -p tcp -s 192.168.1.2 --destination-port 22 -j ACCEPT
[root@localhost ]# iptables -A INPUT -p tcp --destination-port 22 -j DROP