Mic*_*zek 27
最可能的原因是让人们更难随意尝试暴力破解他们可以找到的任何 SSH 登录。我的面向互联网的机器使用默认的 SSH 端口,我的日志曾经充满了这样的东西(摘自一个实际的日志文件):
sshd[16359]: Invalid user test from 92.241.180.96
sshd[16428]: Invalid user oracle from 92.241.180.96
sshd[16496]: Invalid user backup from 92.241.180.96
sshd[16556]: Invalid user ftpuser from 92.241.180.96
sshd[16612]: Invalid user nagios from 92.241.180.96
sshd[16649]: Invalid user student from 92.241.180.96
sshd[16689]: Invalid user tomcat from 92.241.180.96
sshd[16713]: Invalid user test1 from 92.241.180.96
sshd[16742]: Invalid user test from 92.241.180.96
sshd[16746]: Invalid user cyrus from 92.241.180.96
sshd[16774]: Invalid user temp from 92.241.180.96
sshd[16790]: Invalid user postgres from 92.241.180.96
sshd[16806]: Invalid user samba from 92.241.180.96
Run Code Online (Sandbox Code Playgroud)
这些天我使用DenyHosts来阻止多次验证失败的 IP,但切换端口可能同样容易;几乎所有此类蛮力攻击都不会费心扫描以查看您的 sshd 是否正在侦听另一个端口,他们只会假设您没有运行一个端口并继续前进
max*_*zig 16
如果您的 sshd 设置不足以面对仅尝试端口 22 的愚蠢脚本小子,那么无论如何您都会遇到问题。
更理性的反应是:
有些人可能也会对 sshd 写入系统日志的噪音感到恼火,例如:
Jan 02 21:24:24 example.org sshd[28396]: Invalid user guest from 212.129.23.128
Jan 02 21:24:24 example.org sshd[28396]: input_userauth_request: invalid user guest [preauth]
Jan 02 21:24:24 example.org sshd[28396]: error: Received disconnect from 212.129.23.128: 3: com.jcraft.jsch.JSchException: Auth fail [preauth]
Jan 02 21:24:24 example.org sshd[28398]: Invalid user ubnt from 212.129.23.128
Jan 02 21:24:24 example.org sshd[28398]: input_userauth_request: invalid user ubnt [preauth]
Jan 02 21:24:24 example.org sshd[28398]: error: Received disconnect from 212.129.23.128: 3: com.jcraft.jsch.JSchException: Auth fail [preauth
Run Code Online (Sandbox Code Playgroud)
然后可能很想隐藏 sshd 端口或使用自动阻塞解决方案(如 DenyHosts、Fail2ban 或 BlockHosts)以再次提高信噪比。
但确实存在更好的替代方案。例如,你可以配置你的 syslog 守护进程,这样 sshd 日志噪音只被写入 - 比如说 -/var/log/sshd-attempts.log并且信号(即剩余的 sshd 日志消息)/var/log/messages像以前一样被写入等等。
自动拦截工具的部署应仔细考虑,因为安全增加了更多的复杂性相关系统的手段也越来越危险的剥削。事实上,多年来,每个DenyHosts、Fail2ban和BlockHosts都有多个DoS 漏洞报告。
更改 SSH 端口主要是为了安全。它给你一种已经做了某事的模糊感觉。您已将 SSH 端口隐藏在门垫下。
如果您在互联网上运行 SSH 服务器,您会在日志中看到大量失败的登录尝试,这些尝试来自于在服务器旧版本中寻找愚蠢的弱密码、弱密钥和已知漏洞的机器人。失败的尝试就是:失败的尝试。就评估你的脆弱程度而言,它们完全无关。您需要担心的是成功的入侵尝试,但您不会在日志中看到这些内容。
更改默认端口将减少此类机器人的攻击次数,但这只会挫败最不成熟的攻击者,他们会被任何体面的安全措施(定期应用安全更新、相当强的密码或禁用密码身份验证)阻止。唯一的好处是减少了日志量。如果这是一个问题,请考虑使用Denyhosts或Fail2ban之类的东西来限制连接速率,它也会对您的带宽有好处。
更改默认端口有一个主要缺点:它使您不太可能从防火墙后面登录。与随机的其他端口相比,防火墙更有可能让服务通过其默认端口。如果您没有运行 HTTPS 服务器,请考虑让 SSH 也侦听端口 443(或将传入的 TCP 请求从端口 443 重定向到端口 22),因为某些防火墙允许在端口 443 上无法解码的流量,因为它看起来就像 HTTPS 一样。