一次网站遭受dos攻击解决历程

问题现象:

网站访问长时间等待,然后超时失败。

解决历程:

1,先直接查看网站应用的日志。

日志最直接的报错是“GetConnectionTimeoutException”,如果是第一次见到这个错误,可能会第一时间想到就是数据库连接池中的连接不够用了。

让我们疑惑的是,根据active 292 maxactive 500就可以判断出数据库连接是够用的。那为什么又报获取连接超时呢?

这里有一篇参考文章,解答了我的疑惑。

https://blog.csdn.net/xiaolaoban212/article/details/115357734

简单说就是,因为异常的日志打印没有放在同步块中,使用的变量没有考虑多线程。
所以在打印日志时,变量(active)的值已被修改,所以不是异常发生时的值

知道了线程池被占满,那么必定是应用在处理大量的请求。

2,于是我们查看了一下这台服务器的资源使用情况

我们采用df,du,free,top等命令查看了服务器资源,发现磁盘和内存都正常有余,CPU资源几乎被一个进程消耗殆尽。这个进程就是网站应用。

网站的应用,在疯狂的占用CPU资源,要么就是极高的并发,要么就是死循环。

3,查看java运行情况

同时我们通过jstack命名查看了一下java的运行使用情况。

能够看到大量的线程在等待的状态。可以结合数据库线程池不够,基本确定就是大量的并发线程。

4,查看nginx日志,确定问题dos攻击

然后我们查看了nginx的access.log日志,(不再贴图)

只见访问日志一超高的速度在访问,所以确定就是受到了dos攻击。

5,解决方法

使用 awk命令,统计访问日志,查询出高频访问的恶意IP

将这些IP加入到服务器黑名单。

更高级的做法,可以写一个脚本每间隔一段时间统计一次,更新黑名单。(这个我们没做)

现在的云服务器,一般都会自带态势感知,流量分析等软硬件设备。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值