SYN flood攻击
发现网络故障就像人类的疾病一样,在表面很难看出问题的症结所在,疾病的产生往往是一连串的异常所至;
故障初现
杭州分公司报告异常说有一个网段速度特别慢,我远程连接过去发现确实如此,ping 外网一会挺顺畅,过一小会儿延迟就会特别大,而且会丢包,这个网段当中电脑不多,而且没有策略限制,所有的电脑都是直通上网,这样的问题我在西安分公司遇到过一次,一般都是这些电脑中病毒所致,只要将电脑搬到其它网段重装系统,然后搞一个还原软件即可杜绝此类事情的发生。因为有了这些的经验,所以我也判断杭州这次也是这样的情况,我在济南指挥让部门同事把这个网段内的电脑全部关机,然后找一台新的电脑接到这个网段进行测试,所以网络还是特别的卡,事情可能没我想像的这么简单……
紧接着,zabbix的报警开始了,杭州到济南、西安的连接不断断掉,济南研发区的同事也报异常说云桌面特别卡,而且会有掉线的情况的发生,西安也有类似的事情发生了,自己的手机、钉钉、微信、飞秋几乎要被同事打爆,怎么办?
管理AC(上网行为管理)的同事发现他设备上的流量波动非常大,行为管理设备已经是比较边缘了,这时候我也有点慌了,因为没有头绪,不知道问题出在哪里?手机还在不停的发出声音,身边都是同事的抱怨,我习惯性的连接到杭州的内网防火墙和外网防火墙上, 内网防火墙除了流量波动有些大之外,也没有其它异常,但是外网防火墙异常特别明显,内存和CPU的占用高达百分之九十五,问题应该就是出在这个地方。
可是怎么处理呢?
好吧,我承认我慌了……
痛苦挣扎
防火墙的系统一直是比较稳定的,还从来没发现这样的事情,刚开始我认为是防火墙自身系统的问题,于是向400工程师咨询,我将故障诊断发给了厂商的工程师,对方发现日志的写入速度非常快,厂商的工程师希望我将日志的写入功能暂时关掉,好吧,我关掉了,占用还是这么高!根本没用,然后工程师又希望我对防火墙升级一个版本,这样可以排除防火墙系统本身的问题,好吧,听厂商工程师的话,打算让当地同事给我准备远程环境,我来升级版本,对于这次升级,我心里是没底的,而且我也从来没有升过级,前方一片未知,只得硬着头皮向上走。
当然,在此过程当中我并没有完全相信厂商的工程师,我尝试了重启,希望通过重启来解决问题,但是重启之后,发现问题依然存在,我意识到问题很可能不是防火墙系统版本的问题,一般这种问题只要重启设备,就算不能解决,至少也也能缓解,而且这台防火墙经历了多次断电经历,依然坚挺如故,说明这台防火墙的系统还是挺稳固的,但400厂商的工程师还是建议我升级版本,以排除是版本的问题。
我打算暂时不听厂商工程师的,我先自己判断一下,最后再给防火墙一次机会,我再次尝试重启防火墙,还是如此,没有任何用处,我让同事在机房到这台防火墙,让他拔掉两根线,这两根线分别对着两个网段,果然拔了之后,外网防火墙的资源就恢复正常了,问题的源头肯定是这两根网线当中的一根,然后插上其中一根,正常,再插上另一根,防火墙的资源占用就上去了,问题的范围缩小了,缩小到这根网线对应的网段当中。
那然后呢?再怎么处理?
当然肯定是先恢复业务,我将这根网线对应的接口down掉,好在这个接口对应的网段不是很重要,这样保证关键的业务先恢复,我是这么想的。但当这么做了之后,又发现从济南到杭州的GRE-IPSEC VPN又断掉了,从杭州和济南两地又重置了VPN连接才恢复的,我猜想应该是进程卡住了。我虽然这么说的简单,其实就这么一个简单的过程,我也在工位上苦苦挣扎了半个多小时。
顺藤摸瓜
我让同事找了一个笔记本,我通过热点远程进入这台笔记本,然后让同事把防火墙上那根有问题的线插入到这个笔记本当中,我在这个笔记本上打开抓包程序,开始抓包,刚开始抓就发现不正常,因为包的速度非常快,而且有大量特性非常相似的报文,来不及观看,因为速度太快了,等了2分钟,将所有的报文保存一下,然后从杭州将这个包发送到我济南的电脑上,发送的时候我就觉得不太正常,我发现这个文件大小竟然高达150MB,按理说150M不是特别大,但我是知道,这个网段内因为近期改造的原因,当前只存在有两台服务器,两台服务器在网络不通的情况下(因为我把线从防火墙上拔了)两分钟接收150M的报文,肯定是不正常的。
我在通过抓包抓包软件打开这个报文,最终发现了问题,这个文件里面几乎全都是SYN置位的报文,全都是一台主机发出的,我恍然大悟,原来是这样。出问题的那台主机我们暂时称之为A主机,主机不断向防火墙发送SYN=1的报文,这是三次握手的第一次报文,速度非常快,而且目标IP全是虚拟的,速度非常快,根本不等到第二次握手包回来,这明显是公然违反TCP三次握手的规则,写到这里面读者可能有迷惑了,A主机不断向外发SYN报文和防火墙有什么关系呢?是因为A主机的网关在防火墙上,而防火墙还为这台主机配置的NAT,防火墙会给每一个SYN建立一个会话,由于A主机是恶意以超高频率向外发送SYN置位的报文,所以,会话非常多,多到防火墙自身的资源几乎被耗尽的程度,可能读者会问了?会话不是会有超时嘛?是会有超时,但是A主机的发送SYN报文的频率太高了,会话累积的速度太快,活生生把防火墙的资源耗尽。
被耗尽资源的防火墙是杭州的外网防火墙,由于云桌面的调度平台是在杭州,流量会通过VPN到达杭州的外网防火墙,但是外网防火墙的资源几乎被耗尽,所以这些流量就会被堵住,然后超时,最终失效。
原因
至于为什么A主机搞破坏,我们猜想是因为在防火墙把A主机的22号端口映射出去了,然后被外网的黑客给扫描到,正好A主机的密码也是弱密码,被暴力破解,被人植入了SYN flood的攻击,当然这一切都是假定在我们公司的所有同事都是无辜的。
复盘回顾
其实事件事用一句话差不多就能概括了,就是我们将A主机的22号端口映射到公网上,使用的是弱密码,被黑客扫描到进而进行暴力破解,然后在A主机上植入SYN flood攻击程序,SYN 报文被发送到网关也就是防火墙上,防火墙又给A主机配置了NAT,会不断会其创建会话,结果把防火墙给活活累死,很多的业务流量也无法正常进入到外网防火墙。
那我们后续的改进有哪些呢?最简单的如下
- 当然服务器的安全加固应该搞一搞,方案什么的都是现成的,当然,如果这个事情不形成制度,那效果不大,但暂时解决解决还是没问题的。
- 我们也没有定期扫描渗透之类的制度,这个可以搞一搞 ,只不过我肯定是没有时间了。
- 那该死的ssh服务,最好不是映射到公网上,无论是不是22号端口。
从黑客到主机,起码要过三个类似“墙”的东西,在三个类似墙的东西上都能够做一些文章,使得黑客无法攻入进来,第一是真正的防火墙,由于我们公司没有购买防火墙的安全功能,这是不能指望了;服务器管理者的安全意识,开发同事们对LINUX的了解和操作实在是弱的很,iptalbes也没有设置,直接给关闭了,ssh还特么使用弱密码;我们IT部门人员的安全意识,恩……,这个……,平时的事情都已经累够呛了,哪有时间考虑这个;
这件事情的真正价值?
考虑一件事情的价值,是一个什么样的角度出发呢?当然是个人了,这件事对我个人有什么价值?
- 提醒,我认为提醒,当防火墙被黑客攻击的时候如何快速做出反应?这是后续我不得不考虑的问题,此件事物防火墙明显是被误伤的,这个黑客也不怎么高明,就是捣乱而已。
- 如果有黑客真的对防火墙的外网IP做出DDOS攻击时,我要怎么应对呢?
- 有同事故意在局域网里面捣乱我又要怎么处理呢?
- 防火墙真的安全吗?是否当前有人在暴力破解?
- 又如何判断当前的VPN是否连接正常?
- 如果防火墙真的被人攻陷,自己有多大的把握恢复正常?要使用多长时间?
- 给我成长的路上舔砖加瓦