做运维以来第一次解决服务器因攻击而瘫痪的问题,所有的解决过程都是摸着石头过河一路过来的。这次经历也算给我上了一堂安全课。
14号上午10时,服务器上运行的所有服务都处于瘫痪状态,外网无法访问,远程无法登录服务器,机房确认服务器网卡流量异常,速度达到60M/s。无奈只好亲赴机房,那地真是不愿意去,不是因为辐射的问题,只是里面太冷了,我在里待十几分钟就受不了了。
本地登录,查看cpu,内存等使用情况,发现唯一一个CPU使用异常的是NTP服务(时间同步协议)。通过lsof查到NTP服务所有打开的文件,所有文件均无疑点。只好抓包看下,发出去的都是什么东西。tcpdump -i 指定网口 port 指定端口,看到大量的NTP服务数据包发往不同的外国IP。首先本机并无其他与外国IP相关的业务,比较可疑。试着先停止了NTP服务,瞬间网卡出口流量下降到正常水平。问题找到,原因还不明。试着问了问别人,发现这类的攻击最近比较多,统称为“NTP反射放大攻击”,其原理即:
1、 利用UDP协议的天然脆弱点,即不需要前期建立连接,直接就可以向client发送数据;
2、 Internet上存在大量开放分布式的NTPServer,进行对同步请求的响应。
3、 比DNS反射放大攻击威力更大的区别是NTP特有的一个Monlist功能,(Monlist指令,可以获取与目标NTP Server进行过同步的最后600个客户机IP。这意味着,一个很小的请求包,就能获取到大量的活动IP地址组成的连续UDP包).
我的这台服务器上设置了一个NTP服务,作为本地的时间服务器。没想到被别人拿过去用了,某IP查询我的NTP服务器,然后我的服务器上的返回了N倍的NTP response的数据包,达到了放大的效果。这些数据包又会被引导到其他的IP,对别人形成攻击。我的解决办法很简单,就是直接在防火墙上关了NTP的端口。