祸兮福之所倚,福兮祸之所伏,这句古语用在人工智能时代,别有一番滋味!
众所周知,之前为了演示效果,我在腾讯云服务器部署了几乎全套的VPN服务器:openVPN(保姆级教程:一条命令部署OpenVPN管理系统V4版,支持Win/Mac/安卓/iOS全平台接入)、IPsec VPN(成本省下99.7%!用40元的腾讯云服务器自建IPsecVPN,成功对接企业级飞塔防火墙)、L2TP VPN(每月40元实现异地组网!用家用路由器+L2TP协议,在腾讯云上搭建企业级VPN枢纽)、WireGuard(我们的WireGuard管理系统支持手机电脑了!全平台终端配置,支持扫码连接,一键搞定)。
本以为是技术的秀场,没想到今天中午,在我去改善生活的路上,收到了腾讯云的主机安全告警,提醒我密码被攻破了!
那一刻,我深刻体会到了什么叫人在囧途。因为我在半路,一时间也没有补救措施,就想着赶紧把服务器先关机。没想到,因为我平时只通过浏览器登录控制台,现在从应用商店找不到腾讯云相关的APP,小程序也进不了应用程序,结果还是用手机浏览器狼狈的关了机。
下午回到家我开始复盘!发现有意思的是,破解成功之前,这个IP地址有2154次密码尝试,这都没有拦截阻断,未阻断的原因还是来源IP命中威胁情报白名单。这听起来就像是,我家门口有个贼一直在试钥匙,而保安却在一旁看着没动手,还递上一瓶水,理由是:这人是法国OVH数据中心的,听说是来搞学术研究的,放行吧。
两个问题:
1、一般密码尝试不是几次就锁定了吗?
2、这个威胁情报白名单是怎么回事?
先说第二个问题,为什么会有威胁情报白名单?
我检索了一下这个IP地址,说来也特殊,5.39.112.209这个IP地址属于法国OVH数据中心。
谷歌上搜到的,说很多全球性的安全实验室(比如专门研究网络安全的大学项目)会租用这些服务器来扫描全球互联网。但是,由于它们“通常”只做研究、不植入病毒,因此会被云厂商标记为“已知安全研究员”,从而放入IP白名单以减少误报。白名单就是这么来的!
好,另一个问题,为什么尝试了2154次没有锁定?
1、操作系统默认不设防。原生的Ubuntu系统默认只有输错三次密码断开请求的机制,并没有输错多少次就锁定该IP地址或账号的机制。只要黑客愿意,他可以一直试下去,直到把我们的服务器CPU跑满或者猜中密码。这一点需要手工打补丁。
2、腾讯云主机安全的限制。未付费的腾讯云主机安全服务本质上只是一个监控插件,它能发现2000多次尝试,只能说明它的检测功能是正常的。如果要拦截,对比起,最起码得开通主机安全轻量版。
费用也不贵,一个月10块,包年120块,没有折扣。
接连两次被攻击(完蛋,摊上事了!我的服务器被攻陷了!),我都怀疑是不是腾讯云在敲打我。
3、拦截逻辑是否被跳过有待确认。正常情况下,开通了主机安全轻量版,暴力破解达到一定次数它会自动把对方IP关进黑名单。但这次攻击触发了IP白名单,系统是否依旧会认为这个IP地址是合法的扫描者?并因此主动放弃拦截?这点暂时无从考证。
回过头来看,为什么密码会被攻破?
有一说一,这还是我第一次被攻破密码,而且密码复杂度符合密码强度要求,我一般设置密码都是大小写、数字、特殊字符的组合,至少包含10位长度,正常来说不应该2000多次就被攻破。
如果说原因,那可能就是被AI泄露了!
大家也都知道,我用CodeBuddy很长时间了(揭秘简历“爆款”项目:门外汉用CodeBuddy一键生成高并发商城,面试官还看得出来吗?),而且好几个系统也是通过CodeBuddy开发的(注册四年,开发十天:一个“菜鸟”的程序梦,全靠腾讯云CodeBuddy圆了)。其中,在修改相关系统BUG时,为了减少我输入密码确认的次数,我就跟AI说过这台主机的密码。当然,AI也曾经多次提醒我密码可能会被泄露,提醒我即使修改密码,但都被我忽视了。由此可见,跟AI交流时,敏感信息确实要脱敏处理,毕竟现在AI的记忆功能还是很强大的。
这次,腾讯又给我提了一个醒:现在的AI记忆比金鱼强,跟AI聊天,千万别脱光衣服坦诚相待,否则就是引狼入室。
这不仅让我想起前段时间我做备案的时候,全流程都是在腾讯云完成的,审核信息刚提交上去,第二天就有代理商用个人手机联系我,而且自称是腾讯云官方,可以加速审核进度。被我追问之后才承认自己是代理商,说找他开通云资源有优惠,但是被我回绝了。
这件事情我反馈给了腾讯云官方,最后腾讯云给我的答复是,我曾经在我的公众号发文中,有张的手机号没有打码,就是从那里泄露的。说完反正我是不信,我有3个公众号,一共2000多次推文,光当前这个公众号的素材库里面就有11824张,能从这么多里面精准找到那张带手机号的截图,这业务员肯定干啥都能成功!
当然,那个代理商自称是通过备案审核找到的我的联系方式,说明肯定是内部信息有意或无意泄露,但是官方蓄意隐瞒,这就不太好了。
作为一个自认为有信息安全意识的人,我日常使用的密码不少于40个,90%以上都满足字母+数字+特殊字符的复杂度要求,而且很少有两个用途用同一个密码,这次被爆破,给我提了两个醒:
1、不要什么都告诉AI,尤其是连了网的AI,你的数据会被拿去训练AI,当然密码及其他敏感信息就会泄露。
2、密码复杂度符合要求的前提下,依旧要做好安全管控。既然腾讯云的插件因为白名单没阻断,我们可以在Ubuntu本地装个fail2ban,它不看什么情报,只要发现某个IP输错5次密码,直接通过iptables把它踢出局。
首先,我们安装Fail2Ban工具。
apt install fail2ban -y
apt list fail2ban
因为系统升级时,默认的本地配置文件/etc/fail2ban/jail.conf会被覆盖,所以我们需要复制出一个单独的本地配置文件。
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
然后,编辑配置文件,在[sshd]部分配置SSH防护规则,设置在10分钟内输错5次密码,则封禁该IP地址24小时(86400秒)。按照这个频率,今天的爆破能扛431天。
nano /etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
findtime = 600
maxretry = 5
bantime = 86400
当然,如果你想永久封禁这个IP地址,将bantime设为-1即可。
接下来,我们启动Fail2Ban服务并设置开机自启。
systemctl start fail2ban
systemctl enable fail2ban
systemctl status fail2ban
配置完成之后,我们会发现世界安静了很多。找台主机测试一下,试试输错密码什么效果。
可以看到,输错5次之后,直接连接超时。再探测一下22端口。
确实,端口已经不可达了。查看SSH防护状态。
fail2ban-client status sshd
可以看到,IP地址已经被加入到封禁列表了。
如果是误操作,也可以在后台手动解除某个IP的封禁。
fail2ban-client set sshd unbanip 192.168.200.121
又或者,我们可以手动封禁某个IP地址。
fail2ban-client set sshd banip 192.168.200.121
查看Fail2Ban日志:
tail -f /var/log/fail2ban.log
当然,对于你自己的常用IP地址,可以配置ignoreip,把常用的固定IP加进去,防止把自己锁在外面。
虽然Fail2Ban很强大,但防人之心不可无。将默认SSH端口从22改为其他高位端口,可以显著降低这类自动化扫描的频率。但依旧存在密码泄露风险,如果能彻底禁用密码登录,改用SSH密钥对,你的云主机防线才会更加稳固。
各位看官,你们在云服务器上遇到过比这更离谱的攻击吗?是云厂商的白名单逻辑有问题,还是我们太依赖AI导致了泄密?
欢迎在评论区留言,分享你的惊险一刻!
声明:来自铁军哥,仅代表创作者观点。链接:https://eyangzhen.com/7077.html