对于网络安全的一些研究和思考

一直感觉黑客、网络攻击这种词离我很远,但这次是真的遇到了,被打得惊慌失措,毫无还手之力。

开始

接着上篇优化负载的博客,等我把一些优化事宜做好之后,服务器负载还是很不正常,最高可以飙到50。我觉得事情可能并不是用户产生的并发那么简单。

加上之前ssh的暴力破解,我越来越感觉这是一起恶意的网络攻击。说实话之前对这块的知识几乎是为0的,但还是得想办法去防御。

防御

首先ssh暴力破解的问题,立马修改了ssh的端口,并且在不需要ssh登录时,关闭ssh。

然后查看了网站的日志,有很多国外的ip来访问,甚至有的访问记录非常奇怪,猜想应该是向我们这边发送post请求,尝试破解程序上的漏洞。结合Excel分析了一下网站日志,有的ip访问甚至达到数百次,一看就不正常,于是立马结合redis写了一个限制登录频率的方法放在程序控制器的基类,每分钟限制每个ip最多访问20次。这个上线后,负载立马降下来了,偶尔负载还会爆满,但慢慢负载就掉下去了。心想,至少不会长时间负载都爆满了,也算是一定程度解决了问题。

晚上和同事聚餐,到家九点多,查看了一下服务器负载,可能对方加大了攻击力度,服务器负载又满了,暂时想不到解决方案,遂直接没管了。第二天查看redis数据库,想看一下ip访问的记录,看到了cpuminerpool的字样,感觉不太正常,一搜,果然,出现了挖矿的相关信息。原来是因为昨天仓促上线限制ip访问频率,redis数据库没有设置密码,端口又开放了,对方直接连接了我的redis(设置一个强度高的密码很重要!!!)。登录服务器,没有太大异常,但还是很谨慎,和朋友商量晚上把网站迁移到另一个服务器,把这台服务器的系统重做一下。

但是今天的问题很严重,负载一直飚在30-50.自己的武器库已经没剩下多少了,于是去搜相关资料,首先明确ddos和cc攻击的区别,ddos一般针对的是ip,基本上是毁灭性的打击;cc攻击一般是针对域名。于是有了以下思路:

  1. 利用CDN技术隐藏服务器真实ip(针对ddos)
  2. 将域名DNS解析,境外的ip解析到127.0.0.1

具体等实施后继续更新。


后续

根据以上思路,周末做了些调整。

  1. 利用cdn隐藏服务器真实域名,我用的加速乐提供的免费的cdn服务。具体教程参考cdn隐藏服务器真实域名这篇教程。实施以后,ping幻想游戏的域名,ip的确不是真实域名了。
  2. 将域名dns解析,境外ip解析到本地,这个没法实测,但是可以确定对方攻击的是我们的主域名。将域名解析到本地后,负载马上降下来,如果改为自己真实ip,负载立马上去。对于对方请求频率限制的也不理想,最后不得已我们准备换一个域名,先观察一段时间。

最后在道德层面谴责一下这些黑客。

“对于网络安全的一些研究和思考”的4个回复

  1. 建议1、使用非root账号运行程序
    2、非必要端口不对公网开放
    3、如果端口必须对公网开放,可以通过主机防火墙设置应用端口访问ip白名单
    4、使用密钥方式登录ssh,不用密码(这个方法我觉得应该已经在用了吧?)
    5、passwd、shadow等文件加上i标志(chattr +i /etc/shadow),这样就无法添加账号了,可以一定程度防止攻击者添加后门账号。一般安装软件时如果涉及添加账号的操作的话,也会失败。需要添加账号时chattr -i /etc/shadow即可。

    我十几年前就玩幻想游戏了,最近想找来玩玩,刚好看到了你的文章^_^ 祝愿你的站点能一直平静地开下去。

发表评论

电子邮件地址不会被公开。 必填项已用*标注