环境:CentOS 7 、 root用户
最近要实现使用ssh登录相关安全问题,已有的资料有些实际使用中的问题没有描述到。想在这里写一写,我在实现过程中遇见的一些问题及解决方法。
一、 CentOS限制ssh单用户登录数
限制单用户多次登录比较简单,可以通过pam来控制。
要注意的是该种方法只能控制非root用户,无法限制root用户多次ssh登录。
1. 在/etc/pam.d/sshd中添加pam_limits.so。
添加内容:session required pam_limits.so
2.修改/etc/security/limits.conf,限制用户登录次数。
加一行内容:* - maxlogins 2
3.reboot后生效。
第三次登录用户aima效果
二、限制ssh可开启最大终端数
不区分root还是普通用户,限制ssh可开启总的终端数。
这个我参考的是
作者的内容写的很详细,我就说一说我遇到的问题吧。
1. 配置文件/etc/xinetd.conf有默认配置,需要先用#注释掉。
否则会出现一些很奇怪的问题。保留以下内容就可以。
其中user必须为root,否则会出现无法ssh连接的情况。
2. 我理解xinetd检测的是 /usr/sbin/sshd被使用的次数,次数(instances)大于设置值(上图7)。
使用MobaXterm 进行ssh连接时比较特殊,会额外开启一个sftp,即连接一次,次数会加2。
这时查询sshd可以看见,每开一个终端窗口,会有两个sshd进程。
(如截图,这里有时会显示的过多)
ps -eLf|grep sshd
3. service xinetd restart 重启服务
超过连接数后,会有如下打印
三、控制每个IP的最大ssh连接数
参考上二,配置文件/etc/xinetd.conf中增加per_source 。
每个IP的最大连接数:per_source = 10 ,即表示每个ip可以有10个ssh连接。
四、参考策略
只使用pam无法限制root,有以下两种策略参考:
1. 安装xinetd限制最大连接数,同时使用pam控制 非ROOT单用户连接数
2. 禁止使用root ssh登录,同时使用pam控制 非ROOT单用户连接数。