有这样一个小场景,前端时间,公司的服务器被同行盯上了并遭受了DOS攻击
直接的影响就是服务器单位时间内TCP访问链接过多,导致服务器CPU占用率接近90,负载过大,网站几乎不能打开
我们简单的分析下过程
当服务器出现这种现象我的第一感觉就是遭到了DOS工具,那么怎么确定是DOS呢
首先看下当前服务器的负载情况
[root@guest ~]# uptime
16:27:39 up 2 days, 7:33, 1 user, load average: 0.32, 0.23, 0.17
[root@guest ~]#
load average后面三个值过高,服务器肯定是有问题
我们看看服务器资源的占用情况
[root@guest ~]# top
top - 16:29:22 up 2 days, 7:34, 1 user, load average: 0.24, 0.23, 0.18
Tasks: 190 total, 3 running, 187 sleeping, 0 stopped, 0 zombie
%Cpu(s): 10.0 us, 1.0 sy, 0.0 ni, 88.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 32601396 total, 6148028 free, 5945992 used, 20507376 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 26148388 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1377 www 20 0 413264 71852 10616 S 27.3 0.2 16:03.70 php-fpm
1565 mysql 20 0 5760808 1.774g 10336 S 20.0 5.7 128:36.58 mysqld
1369 www 20 0 431820 90372 10572 R 14.7 0.3 13:27.90 php-fpm
1382 www 20 0 413668 72060 10672 S 13.0 0.2 14:00.82 php-fpm
1367 www 20 0 417008 75876 10588 S 4.3 0.2 14:22.98 php-fpm
1356 www 20 0 412808 71712 10588 R 2.3 0.2 13:46.19 php-fpm
1354 www 20 0 398852 56060 9332 S 2.0 0.2 16:15.64 php-fpm
1388 www 20 0 396060 54912 10580 S 1.7 0.2 13:27.21 php-fpm
1389 www 20 0 414840 73700 10612 S 1.7 0.2 13:31.04 php-fpm
1395 www 20 0 414980 73908 10592 S 1.0 0.2 14:38.73 php-fpm
990 www 20 0 62736 31864 2456 S 0.3 0.1 2:38.54 nginx
992 www 20 0 62612 31880 2460 S 0.3 0.1 2:27.75 nginx
1 root 20 0 43704 4156 2516 S 0.0 0.0 0:02.99 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.13 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.06 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
这个地方我们可以清楚的看到服务器资源的占用情况 CPU,内存这是两个重要的指标
如果CPU或者内存的占用过高了,你就要检查你的服务器的状态了
当服务器CPU占用过高,接下来我们来看下TCP的链接情况
[root@guest ~]# netstat -ntu | awk '{print $5}' | egrep -o "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | sort | uniq -c | sort -nr
10 119.96.131.0
5 47.221.160.57
3 98.155.146.130
2 95.179.130.62
2 174.47.165.2
2 162.158.89.78
1 66.249.70.15
1 66.249.64.220
1 66.249.64.216
1 66.249.64.209
1 66.249.64.207
1 54.36.149.70
1 54.36.148.95
1 54.36.148.183
1 54.36.148.105
1 5.196.87.9
1 5.196.87.49
1 216.244.66.196
1 207.46.13.109
1 180.76.15.147
1 180.76.15.142
1 180.76.15.137
1 180.76.15.134
1 162.158.90.221
1 162.158.111.54
1 158.148.77.201
1 151.80.39.148
1 149.154.208.237
[root@guest ~]#
第一栏如果值高的有点异常,那就要当心了
如果异常的高,我们可以采集暂时的屏蔽IP举措
iptables -I INPUT -s 172.104.68.143 -j DROP
以上是运维过程中的一些小经验,希望对大家有所帮助…