通常情况下,服务器运行卡顿、响应迟缓的诱因多种多样,既可能是参数配置失误、程序脚本异常,也可能是硬件设备出现各类隐性故障。除此之外,也有可能是外部人员针对服务器发起了DoS拒绝服务攻击或是DDoS分布式拒绝服务攻击。
DoS与DDoS攻击的核心目的,是耗尽服务器设备与网络链路资源,导致正常业务服务瘫痪,让合法用户无法正常访问和使用服务。这类攻击大多瞄准各类核心网站与关键线上业务,常见目标包括金融银行平台、信用卡支付通道,乃至根域名服务器等核心网络设施。
DoS攻击的主要实施方式,是通过强制目标设备重启、海量占用主机运行资源等手段,致使服务器丧失服务能力,或是阻断设备与用户之间的数据通信,最终导致服务器无法对外提供正常的业务服务。
本文将分享实操方法,教大家如何在终端中借助netstat指令,快速判断服务器是否遭到DoS攻击。
根据官方使用手册定义,netstat指令可用于展示设备的网络连接状态、路由表信息、接口流量统计、伪连接记录以及组播成员信息,是排查网络异常的核心指令之一。
一些例子和解释
netstat -na
该命令将显示所有活动的网络连接。
netstat -an | grep :80 | sort
显示所有80端口的网络连接并排序。这里的80端口是http端口,所以可以用来监控web服务。如果看到同一个IP有大量连接的话就可以判定单点流量攻击了。
netstat -n -p|grep SYN_REC | wc -l
这个命令可以查找出当前服务器有多少个活动的 SYNC_REC 连接。正常来说这个值很小,最好小于5。
当有Dos攻击或者邮件炸弹的时候,这个值相当的高。尽管如此,这个值和系统有很大关系,有的服务器值就很高,也是正常现象。
netstat -n -p | grep SYN_REC | sort -u
列出所有连接过的IP地址。
netstat -n -p | grep SYN_REC | awk ‘{print $5}’ | awk -F: ‘{print $1}’
列出所有发送SYN_REC连接节点的IP地址。
netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
使用netstat命令计算每个主机连接到本机的连接数。
netstat -anp |grep ‘tcp|udp’ | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
列出所有连接到本机的UDP或者TCP连接的IP数量。
netstat -ntu | grep ESTAB | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr
检查 ESTABLISHED 连接并且列出每个IP地址的连接数量。
netstat -plan|grep :80|awk {‘print $5’}|cut -d: -f 1|sort|uniq -c|sort -nk 1
列出所有连接到本机80端口的IP地址和其连接数。80端口一般是用来处理HTTP网页请求。
如何减少DOS攻击
一旦你获得攻击服务器的IP地址你就可以使用以下命令拒绝此IP的所有连接。
iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT
注意,你需要将 $IPADRESS 替换成需要拒绝连接的IP地址。
执行完以上命令后,使用以下命令结束所有的httpd连接以清理系统。
killall -KILL httpd
然后执行以下命令重启httpd服务。
service httpd start #RedHat 系统
/etc/init/d/apache2 restart #Debian 系统
原创文章,作者:余初云,如若转载,请注明出处:https://blog.jidcy.com/dlfwq/fwqtg/zgdlfwqtg/2781.html
