Linux下禁止root远程登录访问

开始讲故事

Long long ago, Linux远程访问方式有telnet、ssh两种协议;有人可能还会说vnc和rdp协议方式,后面这两种主要是可视化桌面场景下的,并非主流。

时过境迁,telnet因安全性低逐渐被禁用淘汰,最后就剩下独苗一棵ssh。使用ssh管控设备总该安全了吧!No~你不能直接使用root远程登录设备。

基于上面故事情节,我们只对sshd服务禁用root远程访问展开聊聊。禁用root远程登录的方法很多,总体而言两类:1、sshd自身提供能力;2、基于PAM模块能力。

sshd自身提供能力(最简单)

确保PermitRootLogin no被配置

~]# grep -i Root /etc/ssh/sshd_config

PermitRootLogin yes

基于PAM(Pluggable Authentication Modules)模块能力

基于PAM可以使用Modules实现相关功能,例如:pam_securetty.so或pam_listfile.so。相对简单的是pam_securetty,pam_listfile不太常用(后面我们再出一篇展开讲讲)。

centos7

1、在centos7中pam_securetty默认在/etc/pam.d/login (对telnet或控制台登录有效)中配置

~]# grep -i pam_securetty /etc/pam.d/login

auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so

2、由/etc/securetty起到白名单作用,该文件不存在,则上述配置失效。

~]# ll /etc/securetty

-rw-------. 1 root root 221 Apr 1 2020 /etc/securetty

国产Linux(Anolis8)

1、默认pam包中包含pam_securetty,但,不再默认定义到/etc/pam.d/login ;/etc/securetty文件也不存在。

配置禁止root远程访问sshd

1、确保/etc/pam.d/sshd首行配置了pam_securetty.so

~]# grep -i pam_securetty /etc/pam.d/sshd

auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so

2、确保/etc/securetty文件存在且为空。

总结

如果PermitRootLogin no和securetty都配置了,肯定也没毛病。如果要临时放开root远程访问就要一一拆除。securetty文件本身是登录设备白名单,不同版本操作系统下对ssh管控设备名不太一样:

~]# who

root pts/0 2024-12-04 13:48 (192.168.xx.xxx)

如上回显中pts/0就是一种终端设备:/etc/securetty值类型:①tty:终端 ②pts:伪终端 ③console:当前的控制台 ④vc:visual console虚拟控制台 ⑤vt:虚拟终端 ⑥hvc ⑦hvsi ⑧xvc等。

但是,经我测试,在Anolis8中,如果要临时允许root远程ssh,则需要配置ssh到/etc/securetty,而不是pts伪终端。

相关推荐
2301_7679026417 分钟前
Zabbix
运维·zabbix
KingRumn3 小时前
Linux信号之标准信号与实时信号
linux·算法
QT 小鲜肉6 小时前
【Linux命令大全】001.文件管理之git命令(实操篇)
linux·服务器·笔记·git·elasticsearch
半夏知半秋6 小时前
docker常用指令整理
运维·笔记·后端·学习·docker·容器
sishen41996 小时前
嵌入式Linux没有学习方向怎么办,嵌入式Linux怎么学
linux
逆风水手6 小时前
Ansible自动化运维入门指南
linux·运维·自动化·ansible
tianyuanwo6 小时前
SSH会话管理实战:识别与清理非法连接的完整指南
运维·ssh
小豆子范德萨6 小时前
两台window配置SSH免密登录
运维·ssh
小北方城市网7 小时前
第 6 课:Vue 3 工程化与项目部署实战 —— 从本地开发到线上发布
大数据·运维·前端·ai
旖旎夜光8 小时前
Linux(3)(下)
linux·学习