如何实现Linux用户的远程登录限制 /etc/security/access.conf配置

嘿,这是事实。
我之前曾修补过它,踩过陷阱,然后修复了它。
让我告诉你我的经历。

所以,我在公司运行 Linux 的服务器上进行安全工作,我想限制远程访问。
我确实用过你说的方法。

我们先来说一下PAM模块。
我记得很清楚,那是去年的事,在公司的数据中心。
他们使用 CentOS 7 ,所以我检查了 pam_access.so 是否在 PAM 配置中。
找到文件/etc/pam.d/sshd,用vi打开它并添加一行:
bash 需要帐户 pam_access.so
添加并保存后,快速 sudo systemctl restart sshd 重新启动 SSH 服务。
这一步一定要记住,不然加了也没用。

然后是 /etc/security/access.conf 文件。
我在这里有点小心。
规则的顺序确实需要特别注意。
例如,在我的配置中,我添加了:
+:全部:全部
意思是:让大家先。
以下是一些更具体的内容:
-:根:全部
这是为了防止远程 root 访问。
另:
+:@管理员:1 9 2 .1 6 8 .1 .0/2 4 -:@admin:全部
这样admin组中的人员只能从1 9 2 .1 6 8 .1 .0/2 4 网段登录,而不能从其他位置登录。
我基本上已经尝试过你提到的所有例子。

调试的时候,我在嘀咕。
为什么添加规则后似乎没有任何反应?后来我意识到你必须留下一个可以访问的终端。
那次我打开了两个终端,一个是从公司内网登录的,另一个是从外部测试的。
先在内网工作,确保还能登录。
然后慢慢添加规则,每次添加后尝试从外网登录。
这一步确实不能跳过。

出现问题时,请检查日志。
记得有一次,添加规则后,发现无法登录,赶紧去看看日志。
对于 CentOS,它是 /var/log/secure。
使用 sudo tail -f /var/log/secure 来查看它。
您可以直接看到由于access.conf而拒绝的登录尝试。
这非常重要,可以帮助您快速定位问题。

还有一个陷阱,就是字段分隔符。
它必须是两个点加一个空格,没有别的。
还有一个IP网段,一定要写正确,比如1 9 2 .1 6 8 .1 .0/2 4 ,而不是1 9 2 .1 6 8 .1 ./2 4 我以前就犯过这个愚蠢的错误。
如果不明白,就看man access.conf中的说明。

总的来说,这个方法还是蛮有用的。
您可以精确控制谁以及在哪里可以远程访问。
只要注意,尤其是规则和语法的顺序。
不要像我一样一开始就着急。

你提到的步骤基本上是我以前做过的过程。
没有什么大的原因,只是一步一步多测试。
希望这有帮助。

Linux中禁止root用户SSH登录及修改SSH端口的方法

老实说,禁用 root 和直接 SSH 登录是我在为客户端配置系统时遇到的一个困难。
有一次我忘记把它切换回来,遥控器就关闭了。
电话那头的顾客吓得跳了起来。
因此,运行前必须备份配置文件。
当你在命令行输入 vi /etc/ssh/sshd_config 时;你的手指一定要稳定。

有趣的是,更改端口不会更改线路。
我的一个朋友就是这么做的。
更改7 000端口后,他发现公司的安全团队规则也在同时更新。
导致生产环境无法连接。
所以更改端口后,要在防火墙上开一个洞;或暂时允许所有 SSH 流量;然后,当测试没有问题时,将其收回。

修改Port2 2 行时,我通常会添加一个数字注释,例如“Port2 2 Port7 000”。
这样,以后查看配置文件时,就能一目了然地看出哪一行是历史默认值,哪一行是当前生效的。
系统重启后,sshd服务会自动重启新端口,这比手动使用systemctl restart sshd要快得多。

测试新端口时,尝试 ssh root@1 9 2 .1 6 8 .1 .1 00 -p 7 000 如果无法连接,防火墙配置文件语法或者可能是因为 sshd 进程尚未重新启动。
我曾经遇到过 ssh 配置文件中的拼写错误,系统根本无法读取它。
结果,服务明显重启了;但客户端一直说“连接被拒绝”。

删除默认端口很重要。
一些较旧的 SSH 客户端可能缓存了默认端口。
如果您直接连接到 ssh root@1 9 2 .1 6 8 .1 .1 00 他们将继续尝试端口 2 2 注释掉 Port2 2 后; systemctl 重新启动 sshd;这样,连接到 root@1 9 2 .1 6 8 .1 .1 00:7 000 将确保仅使用新端口。
这个技巧在与炮塔一起使用时特别有用,可以提供额外的保护层。