正确的 CentOS 7 SSH 配置

正确的 CentOS 7 SSH 配置

我在更改新的 CentOS 7(最小)机器(IP 11.22.33.44)上的端口时遇到了一些问题。为了登录新机器,我使用代理 VPS(假设 IP 88.99.100.101)。

我编辑了该/etc/sysconfig/selinux文件以禁用 SElinux 并重新启动。

[root@host ~]# getenforce  
Disabled

禁用 selinux 并重新启动机器后,我编辑/etc/ssh/sshd_config并将条目从 22 更改Port为 7890(仅作为示例)+ systemctl restart sshd。

然后我将firewalld 的默认 ssh xml 配置文件从 /usr/lib/firewalld/services/ssh.xml复制到 ,/etc/firewalld/services/ssh.xml并将端口从 22 更改为 7890 + firewall-cmd reload

我还在firewalld中使更改永久生效:

firewall-cmd --zone=public --add-port=7890/tcp --permanent

当我尝试从不同的 VPS 通过 SSH 登录到新的 CentOS 7 机器时,问题就出现了。在更改端口号后,从初始 VPS 登录仍然有效,但没有新机器可以连接到 CentOS 7 机器。

我收到的错误是:

ssh: connect to host 11.22.33.44 port 7890: Connection timed out

这是我的输出ss -ntulp

tcp   LISTEN     0      128      *:7890          *:*      users:(("sshd",5566,3))

问题是,如果我将 SSH 端口改回默认的 22 值,那么每台机器都可以毫无问题地连接到它(在我编辑两个文件ssh.xmlsshd_config改为默认的 22 端口之后)。

我肯定遗漏了什么或做错了什么。有人能给我指出正确的方向吗?

谢谢。

答案1

听起来,虽然您说您已禁用 SELinux,但实际上可能并没有。仅靠编辑/etc/sysconfig/selinux不足以禁用它,您需要重新启动才能使其生效(或发出setenforce 0)。

无论如何,如果这是真的,那么 SELinux 就会阻止非标准 SSH 端口 (7890) 接受连接。要启用它,您必须重新标记端口,如下所示:

semanage port -a -t ssh_port_t -p tcp 7890

此后,您的 SSH 连接可能会按预期工作。

想想有些人问“你为什么要这样做?”他们说的是——使用非标准 SSH 端口充其量只能通过隐蔽性来保证安全。确保在服务正常运行后进一步强化服务。

答案2

似乎我在 CSF + LFD 中发现了一些东西,因为我们所有无法连接的机器都在使用它们。正如 @BaZZiliO 在评论中所建议的那样,在 SSH 客户端的允许规则中添加额外的 IP 和端口不会有帮助(已经尝试过了 - 仍然无法连接)。重新启动 lfd + csf 让我可以立即连接:

 service lfd restart  
 csf -r

我之所以没有想到禁用或重新启动 SSH 客户端上的防火墙,是因为它最初运行正常,所以我认为这是一个配置问题。

至于问题中写的CentOS 7配置,它们是正确的并且功能正常,因此它们适合于配置测试目的(不建议在没有进一步安全配置的生产环境中使用)。

谢谢大家的帮助,我希望有人能从这次讨论中受益。

问候。

相关内容