最近我的 Linode VPS 服务器受到了一些攻击(1、2)。好在攻击的强度不大,也许是手下留情吧,没有造成很大的问题。攻击持续了大约三天时间之后停止。虽然查过很多资料,也咨询过一些网友,可还是无法确定具体是什么攻击。所以趁着记忆还新鲜将攻击的特征记录下来,以后有时间再来研究。
1. 基本信息¶
我的 VPS 运行的是 LAMP 服务器,仅运行几个小型的 WordPress 博客和一个 UseBB 论坛。流量很小,特别是,在出站流量(outgoing traffic)较大的情况下(平均 40kb/s 左右),入站流量(incoming traffic)也是非常小的(低于 10kb/s)。
目前仅使用 iptables 进行访问控制,iptable 规则在这里。
2. 攻击特征¶
根据我的观察,当然经验还是不够丰富,可以将这些攻击分为 2 类。
a. 针对 80 (http) 端口的攻击
攻击的时候,发动攻击的 IP (下称客户机)向主机 80 端口发送连接请求 SYN,主机会回应 ACK,但是似乎客户机不对 ACK 做出反应。连续的 2 次这种过程之间间隔不到 0.3ms。此时通过 tcpdump -n
命令抓包的话就能看到这样的过程:
23:28:33.931441 IP 174.122.6.252.62841 > 106.187.50.90.http: Flags [S], seq 0, win 8192, length 0 23:28:33.931459 IP 106.187.50.90.http > 174.122.6.252.62841: Flags [R.], seq 0, ack 1, win 0, length 0 23:28:33.931729 IP 174.122.6.252.62841 > 106.187.50.90.http: Flags [S], seq 0, win 8192, length 0 23:28:33.931740 IP 106.187.50.90.http > 174.122.6.252.62841: Flags [R.], seq 0, ack 1, win 0, length 0
主机上运行 netstat -anpt
命令可以看到从客户机的多个状态为 SYN_RECV
的 TCP 连接。连接个数从 1~9 都有可能(不多,所以说攻击强度不是很大),并且会持续到攻击结束。例如:
tcp 0 0 106.187.50.90:80 174.122.6.252:62841 SYN_RECV - tcp 0 0 106.187.50.90:80 174.122.6.252:56394 SYN_RECV -
从 Apache 的访问日志中无法查询到该 IP 的任何访问记录。
这种形式的攻击会造成一定的入站和出站流量。在 6 个 TCP 连接的情况下,大约各有 180kb/s。如果通过 iptables 直接 DROP 掉该 IP 的所有连接请求,就不会再看到 TCP 连接,也不会做出回应。出站流量为 0,但是入站流量不变。
另外,不知道是不是因为我在 iptables 中限制了单个 IP 发送连接请求的速率,这种攻击没有对服务器上的网站访问造成影响。
b. 针对 443 (https) 端口的攻击
因为我本来就没有开放 443 端口,所以这种攻击发生的时候,
- 无法从
netstat -anpt
命令下看到相关的连接; - 只有入站流量,没有出站流量;
- 客户端以非常快的速度从各个端口向服务器的 443 端口发送连接请求;
- 对服务器上的网站产生了影响:响应速度变慢了,甚至出现无法打开网页的情况。
第一次攻击就是这一种,我费了好大劲儿,在 Linode 客服的帮助下才从 tcpdump -n
的输出中找到攻击者的 IP。因为服务器直接 DROP 掉了该 IP 的访问请求,所以服务器不会发送 ACK 回应。tcpdump -n
的输出类似于,
23:21:18.552302 IP 221.120.194.182.acr-nema > 106.187.50.90.https: Flags [S], seq 0, win 8192, length 0 23:21:18.556223 IP 221.120.194.182.mit-dov > 106.187.50.90.https: Flags [S], seq 0, win 8192, length 0 23:21:18.556239 IP 221.120.194.182.mit-dov > 106.187.50.90.https: Flags [S], seq 0, win 8192, length 0 23:21:18.556247 IP 221.120.194.182.mit-dov > 106.187.50.90.https: Flags [S], seq 0, win 8192, length 0
如果从 iptables 中封锁该 IP 的访问,则虽然入站流量保持不变,但是不会再对服务器上的网站的访问造成影响。
下面这张流量图包含上述 2 种攻击发生(有时同时存在,有时只存在一种)时的情况:
3. 结论¶
有网友觉得可能是 Slowloris 攻击,但是经过测试,该类型的攻击不满足上述特征。
根据之前的经验,这倒很有可能都是 SYN_Flood 攻击。只是暂时不知道怎么测试。©
本文发表于水景一页。永久链接:<http://cnzhx.net/blog/detailed-description-on-the-attacks/>。转载请保留此信息及相应链接。
vps听朋友说那个不太好,要不换一个试试。还有博主你的发表评论框架不太对
呵呵,谢谢,这个还有10个月呢。
评论框架在 IE6 下显示不对。
哎呀,现在这些人怎么这么无聊,不把技术运用到该用的地方去
就是啊,刚发现又开始攻击了,晕
iptables 中限制了单个 IP 发送连接请求的速率,是该怎么设置啊,能不能赐教一下,我也正在学习linux
文中提到了我的VPS安全策略,你可以参考一下。
引用通告: 日本服务器易受攻击,巧合还是事实? | 水景一页
引用通告: 百度联盟分账权限被关闭 | 水景一页
我貌似没有被攻击过。
估计被攻击是避免不了的,而强度大小就区别大了。