出于安全原因,我目前在非标准端口上运行带有 SSH 的服务器。在 CentOS 5 上是 522,但 CentOS 6 不允许 SSH 在 1024 以下的任何端口上运行(显然 22 除外)。对于 CentOS 6,我一直使用更高的端口(>10000),但现在我必须在 522 上运行它(因为我的托管提供商引入了各种令人讨厌的托管/防火墙问题)。我正在运行内核 > 2.6.24 和 SELinux。
我认为这是可行的,也许可以使用 CAP_NET_BIND_SERVICE 和 setcap,但我找不到好的参考。任何帮助都非常感谢。
答案1
CentOS How To 中有一篇关于如何在系统上保护 SSH 的帖子。第五部分讨论了使用非标准端口:
http://wiki.centos.org/HowTos/Network/SecuringSSH
- 使用非标准端口
默认情况下,ssh 监听端口 22 上的传入连接。如果黑客想要确定您的机器上是否正在运行 ssh,他很可能会扫描端口 22 来确定这一点。一种有效的方法是在非标准端口上运行 ssh。任何未使用的端口都可以,但最好使用 1024 以上的端口。许多人选择 2222 作为备用端口(因为容易记住),就像 8080 通常被称为备用 HTTP 端口一样。正因为如此,它可能不是最好的选择,因为任何扫描端口 22 的黑客可能也会扫描端口 2222,以防万一。最好选择一些未用于任何已知服务的随机高端口。要进行更改,请在 /etc/ssh/sshd_config 文件中添加如下一行:
# Run ssh on a non-standard port:
Port 2345 #Change me
然后,当使用 SSH 连接时,如果您从另一台 Linux 服务器执行此操作,只需指定 -p 开关。或者,如果您使用 PuTTY 之类的东西,请在那里更改端口。