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伪终端。

相关推荐
CQU_JIAKE几秒前
10.28【A】
linux·运维·网络
爱和冰阔落3 分钟前
【Linux网络】Socket 编程前要搞懂什么?从 IP、端口到字节序与 sockaddr,一次理清网络通信基础
linux·运维·网络·tcp/ip
晚风叙码19 分钟前
Linux 进程概念(上):从冯诺依曼到进程调度
linux·运维·计算机外设
Z21-X28 分钟前
云原生运维笔记:硬核拆解OpenStack计算与存储——从主机聚合到Cinder挂载全流程
运维·笔记·学习·云原生·openstack
邪修king33 分钟前
Re:Linux系统篇(三十八):进程间通信ChapterSystem V 信号量深度解析|同步互斥、内核源码、C 指针多态、实战代码
java·linux·c语言
开开心心就好34 分钟前
电脑语音实时转文字工具,会议记录很省事
运维·服务器·前端·c#·ocr·perl·1024程序员节
坤坤子吖34 分钟前
Linux网络编程基础:从 MAC 到 IP,理解网络数据是怎么传输的
linux·网络·笔记·学习
波力海苔夹心脆67543 分钟前
C# 固高 GTS 运动控制卡入门:伺服上下电、Jog 点动与二维插补(WinForms 实战)
服务器·开发语言·c#·运动控制·伺服电机·winforms·固高
一只鹿鹿鹿1 小时前
医院绩效管理体系方案
大数据·运维·安全·web安全·制造
java_logo1 小时前
Docker 部署 Portainer CE 中文版:轻松搭建容器管理平台
运维·docker·容器·portainer·容器管理·轩辕镜像·portainer ce