![可能针对 VNC 服务器的攻击](https://linux22.com/image/8641/%E5%8F%AF%E8%83%BD%E9%92%88%E5%AF%B9%20VNC%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E6%94%BB%E5%87%BB.png)
最近我的 Linux 机器开始出现一些问题。所以我有一台安装了 VNC 服务器的 Linux VPS 机器,我只需使用 VNC 查看器连接到它。
最近,VNC 服务器/查看器开始给我一些错误,例如
vnc too many security failures
或Authentication failed
等......
我使用ssh
并检查了 Linux 机器上的日志,它显示如下日志:
Thu Jun 9 22:35:43 2016
Connections: accepted: 0.0.0.0::59748
SConnection: Client needs protocol version 3.3
Thu Jun 9 22:35:44 2016
SConnection: AuthFailureException: Authentication failure
Connections: closed: 0.0.0.0::59748 (Authentication failure)
Thu Jun 9 22:41:31 2016
Connections: accepted: 0.0.0.0::57806
SConnection: Client needs protocol version 3.3
SConnection: AuthFailureException: Authentication failure
Connections: closed: 0.0.0.0::57806 (Authentication failure)
结果,VNC 服务器将这些连接列入黑名单,令我惊讶的是,它最终导致我无法访问该计算机。 (我不知道为什么我被列入黑名单或为什么我无法再登录)
我只是重新启动 VNC 服务器,这允许我使用 VNC 再次登录。
这可能是一次攻击吗?关于如何防止这种情况的任何想法?
答案1
您的 VNC 服务器没有任何问题。
为什么会发生这样的事
欢迎来到互联网的另一边!不在 NAT 和防火墙后面的一侧。
vnc too many security failures
只是意味着有人多次尝试登录您的 VNC 服务器但失败。 VNC 服务器具有一项安全功能,一旦多个连接未通过身份验证,它们就会在一定时间内阻止连接。重新启动 VNC 服务器(正如您所做的那样)会重置超时。
黑帽一直在扫描 IP 和这些 IP 上的端口。然后连接到开放端口,查看程序横幅,并尝试进行身份验证以进入计算机。运行小型网站的服务器每天可以获得数千个随机连接,未运行任何通过 DNS 可见但具有公共 IP 的服务器仍然可以获得数百个连接。
因此,有人(我所说的某人是指在 IP 范围内随机拍摄的脚本)发现您服务器的公共 IP 有一个开放端口并正在尝试登录。
你应该做什么
VNC 密码非常脆弱。您绝不能直接通过互联网运行 VNC 服务器。黑名单超时(在几次失败后禁止登录的功能)可以防止对密码进行一些暴力破解,但这并不是一个足够好的措施。
相反,您应该127.0.0.1
通过添加-localhost
到命令行来运行 VNC 服务器:
vncserver -localhost ...
然后使用ssh
隧道将计算机上的端口链接到服务器上的端口。例如(我假设您的 VNC 服务器在默认端口上运行)
ssh -L 5900:localhost:5900 me@<my_server>
然后,当该连接处于活动状态时,您可以将 VNC 客户端连接到您自己计算机上的ssh
端口。5900
(这适用于 *nix 机器,如果您使用的是 microsoft 机器,您仍然可以使用putty
for ssh tunneling
)
你绝对不应该做的事
VNC 服务器无法禁用黑名单功能,但您可以更改黑名单的参数。例如:
vncserver -set BlacklistTimeout=0 -set BlacklistThreshold=10000 ...
(在某些发行版上,尤其是我认为的 CentOS,该命令不应vncconfig
是vncserver
)