环境:CentOS 7 、 root用户

最近要实现使用ssh登录相关安全问题,已有的资料有些实际使用中的问题没有描述到。想在这里写一写,我在实现过程中遇见的一些问题及解决方法。

一、 CentOS限制ssh单用户登录数

限制单用户多次登录比较简单,可以通过pam来控制。

要注意的是该种方法只能控制非root用户,无法限制root用户多次ssh登录。

1. 在/etc/pam.d/sshd中添加pam_limits.so。

添加内容:session    required     pam_limits.so

centos链接额iscsi如何CHAP认证 centos 连接数限制_连接数

2.修改/etc/security/limits.conf,限制用户登录次数。

加一行内容:*                -       maxlogins      2

centos链接额iscsi如何CHAP认证 centos 连接数限制_网络安全_02

3.reboot后生效。

第三次登录用户aima效果

centos链接额iscsi如何CHAP认证 centos 连接数限制_网络安全_03

二、限制ssh可开启最大终端数

不区分root还是普通用户,限制ssh可开启总的终端数。

这个我参考的是 

作者的内容写的很详细,我就说一说我遇到的问题吧。

1. 配置文件/etc/xinetd.conf有默认配置,需要先用#注释掉。

    否则会出现一些很奇怪的问题。保留以下内容就可以。

其中user必须为root,否则会出现无法ssh连接的情况。

centos链接额iscsi如何CHAP认证 centos 连接数限制_linux_04

2. 我理解xinetd检测的是 /usr/sbin/sshd被使用的次数,次数(instances)大于设置值(上图7)。

使用MobaXterm 进行ssh连接时比较特殊,会额外开启一个sftp,即连接一次,次数会加2。

centos链接额iscsi如何CHAP认证 centos 连接数限制_连接数_05

这时查询sshd可以看见,每开一个终端窗口,会有两个sshd进程。

(如截图,这里有时会显示的过多)

ps -eLf|grep sshd

centos链接额iscsi如何CHAP认证 centos 连接数限制_ssh_06

3. service xinetd restart 重启服务

超过连接数后,会有如下打印

centos链接额iscsi如何CHAP认证 centos 连接数限制_连接数_07

 三、控制每个IP的最大ssh连接数

参考上二,配置文件/etc/xinetd.conf中增加per_source 。

每个IP的最大连接数:per_source = 10 ,即表示每个ip可以有10个ssh连接。

centos链接额iscsi如何CHAP认证 centos 连接数限制_linux_08

 四、参考策略

只使用pam无法限制root,有以下两种策略参考:
1. 安装xinetd限制最大连接数,同时使用pam控制 非ROOT单用户连接数
2. 禁止使用root ssh登录,同时使用pam控制 非ROOT单用户连接数。