当前位置:主页 > 帮助中心 > 技术文档 > 2018-12-27

如何判断服务器是否被攻击以及处理办法

当网站速度打开突然变慢时,有可能是服务器被攻击了,典型的表现为CPU占用过高、内存占用过大、SYN大、负载高、Apache进程数大、某个IP的连接数大或者服务器的流量大。

当你怀疑服务器有攻击的时候,按照如下的思路处理:

1.用下面命令查看服务器的SYN连接数

netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

超过10就有攻击嫌疑,超过50就肯定被攻击了。经验告诉我们,服务器被攻击时,SYN总是比较大。所以这个是判断服务器有没有被攻击的一个好方法。

 

  • 用下面命令查看服务器的各个IP的连接数

netstat -plan |grep :80 | awk ‘{print $4}’ | cut -d: -f1 | sort | uniq -c | sort –n

确定服务器被攻击后,我们需要判断到底是哪个IP被攻击了。通过这个命令查看服务器上各个IP的连接数,连接数大的就是可能被攻击的IP(一般独立IP连接数超过200就有攻击嫌疑,共享IP连接数超过500就有攻击嫌疑)。另外,如果判断服务器被攻击了,最好迅速查看下Apache Status页面看看能否发现哪个用户被攻击了。这里我们主要还是按照判断哪个IP被攻击的思路来展开。

 

A.如果是共享IP被攻击了,按照下面思路处理:

<1>.查看WHMApache Status页面中有没有哪个域名被请求得多。这种方法最简单,如果显示几乎全是某个域名的请求,就可以判断该账户被攻击了,可以暂时暂停该用户的账户。方法为:Main>>Account Functions>> Suspend/Unsuspend an Account >>选中用户后点击“Suspend”

 

<2>.如果Apache Status中没有明显发现哪个账户被攻击,可以通过如下命令查看服务器上域名的请求情况:tcpdump -i eth1 dst port 80 -A -s0 |grep ‘Host: ‘

请求多的域名可能就是被攻击的域名,觉得有嫌疑的,可以暂时暂停该账户。暂停被攻击的账户后,第一时间发Ticket让SoftLayer将共享IP添加到思科防火墙保护起来。过3-4小时等防火墙生效了,可以解封账户观察下攻击是否还存在。

 

<3>.暂停该账户之后,查看服务器的流量:iptraf -d eth1。如果流量比较大,比如超过10M,作如下操作:登陆客户的cPanel,在主目录的.htaccess文件中写下:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^.*$

RewriteRule ^.*$ – [F]

这几行Rewrite规则可以将到达用户账户的流量转走。

 

<4>.如果依旧解决不了,查看用户域名的NS。通过本地DNS查看,方法为:开始>> 运行>>cmd>>nslookup>>set type=ns按下Enter键后输入域名再按Enter键即可查看域名的NS。如果显示是HE的NS,登陆WHM,在Main>>DNS Functions >> Edit DNS Zone选中相应的域名并点击,然后将域名的A记录改成127.0.0.1或者其他无效的IP也可以,改完后让英文技术客服发邮件通知用户他的账户受到流量攻击,我们暂时改了他的解析。如果客户域名的NS不是HE的NS,发邮件通知用户他的账户遭受流量攻击影响了整个服务器,让他修改解析,指向别的地方。

 

<5>. 接下来我们还可以尝试看看能不能找到攻击服务器的IP,DDOS攻击的情况下,想找到的几率比较小,但是可以试一试,通过netstat -anpl|grep :80|awk {‘print $5’}|cut -d”:” -f1|sort|uniq -c|sort -n可以查看请求服务器的IP。如果某个IP的连接数很多,就有攻击服务器的嫌疑,可以通过csf -d IP封掉该IP,然后通过csf -r重启防火墙、通过service lfd restart重启lfd方能生效。一般某个IP对服务器的连接数超过150会被自动封掉,这是因为我们每台服务器的CT_LIMIT设置的都是150。攻击时可以根据情况将其改小点如60(方法为:Main>>Plugins>>ConfigServerSecurity&Firewall>>Firewall Configuration>>Ctrl+F搜索“CT_LIMIT”并将其改成60,之后重启csf+lfd

 

一般情况下,很难看出来哪些IP在攻击服务器。这个时候我们可以借助iftop -i eth1查看连接服务器的IP,如果发现某个段的IP如58开头的IP连接服务器比较频繁,可以将该段IP封掉,方法为Main>>Plugins>> ConfigServerSecurity&Firewall>>Quick Deny右边框中输入58.0.0.0/8(写法不清楚建议学习下IP的知识)并点击该按钮,之后重启csf+lfd。这种封的方法由于封的范围比较大,可能会导致部分IP在这个段的用户访问不了他的网站,我们可以将其IP允许,方法为:Main>>Plugins>> ConfigServerSecurity&Firewall>>Quick Allow右边框中输入如58.165.23.10并点击该按钮,之后重启csf+lfd。这样,虽然58段IP被封了,但是58.165.23.10这个IP已经被允许访问服务器了。等服务器恢复正常之后,一定要记得到Main >> Plugins>> ConfigServerSecurity&Firewall>>Firewall Deny IPs中将58.0.0.0/8那行移除掉,另外,再去Main>>Plugins>> ConfigServerSecurity&Firewall>>Firewall Allow IPs中将58.165.23.10的那行去掉,即恢复之前的设置,所有防火墙的操作均要记得重启csf+lfd

 

<6>.严重的SYN攻击且判断不出来哪个用户被攻击了。如果服务器遭受到SYN攻击,其它参数均正常,且我们没办法确定到底哪个用户引起的,这时候可以通过Main>>Plugins>>ConfigServerSecurity&Firewall>>Firewall Configuration>>Ctrl+F搜索CT_STATES并在其右边的框中输入SYN_RECV,同时将CT_LIMIT的数值大小改成5,这样既可实现某个IP对服务器的SYN连接数达到5时即被防火墙自动封掉。这样方法副作用比较大,一般不作,除非确定服务器遭受了严重的SYN攻击且判断不出来哪个用户引起的才使用。

 

<7>.判断不出来哪个用户被攻击了。共享IP被攻击时,经常不容易判断出哪个用户被攻击了。一般我们通过tcpdump -i eth1 dst port 80 -A -s0 |grep ‘Host: ‘可以锁定哪些用户的请求比较多,但是请求多并不意味着就是被攻击了,我们可以跟客户沟通下然后将其换成独立IP来观察,这样就很容易判断是否被攻击了。如果确定不是这个用户引起的攻击,可以再换回去。如果确定是的话,就可以暂停了客户的账户。情况紧急时可以先处理再通知用户,一般情况下先通知用户再做处理。

 

B.如果是独立IP被攻击了,按照下面思路处理:

<1>.进入Main >> Plugins>> ConfigServerSecurity&Firewall>> Deny Server IPs封了相应的独立IP。同时迅速给SoftLayer发邮件让其将该IP加入思科防火墙,内容如下:

Hello,

Dedicated IP XXX on this server was attacked.Please help us add this IP to cisco guard.Thanks.

平时如果怀疑某个IP可能被攻击,就可以发给SoftLayer让其将这个IP加到cisco防火墙。等过了三四个小时Cisco防火墙生效之后,可以解封该独立IP观察下是否仍有攻击。

 

<2>.查看服务器的流量:iptraf -d eth1。封了独立IP之后,可以查看下服务器的流量,如果发现服务器的流量超过了50M,可以判定属于大流量攻击,这时候可以稍作观察,如果始终保持这个流量且服务器提示宕机,可以发Ticket让SoftLayer将该独立IP的路由给去掉,内容如下:

Hello,

The dedicated IP XXX on this server was suffered from a traffic attack.Please help us remove the route of this IP.Thanks.

发过Ticket之后,让英文技术客服打电话给SoftLayer让他们优先处理这个Ticket即可。

接着让英文技术客服发邮件通知客户他的独立IP遭受大流量攻击,SoftLayer已经移除了他的IP的路由,大约十个小时左右恢复,恢复后我们会第一时间通知他。等到十个小时后,服务器正常的情况下,给SoftLayer发ticket,内容如下:

Hello,

Please help us recover the route of IP XXX.Thanks.

以上是常用服务器被攻击时的处理流程,如果实在不行可以租用我们维恩网络美国高防服务器,我们的高防服务器最高达到8000Gbps的集群防御,单机最高1TB级防御能力,我们的硬件防火墙可以防御任意规则的CC、SYN等变种攻击,保证你的网站正常访问不受攻击的影响。

服务热线

400-678-1356

关注维恩网络