关于服务器网络流量异常,卡死,遭受入侵,对外发包...
以下只是一些小工具,用于检测流量及哪些进程有问题,需要丰富的经验配合。
yum install ifstat nload iptraf sysstat
大多数是因为PHP-ddos木马原因导致发包
watch ifconfig
-------------查看数据包新增情况
ifstat
----查看网卡流量
eth0 eth1
KB/s in KB/s out KB/s in KB/s out
407.34 154.99 134.96 324.29
274.08 191.48 210.72 248.32
240.20 192.91 257.22 179.06
136.48 236.72 203.89 179.84
nload
-------以流量图显示
iptraf
------------很直观的工具
sar -n DEV 1 4
查看4次数据
[root@ct-nat ~]# sar -n DEV 1 4
Linux 2.6.18-164.el5PAE (ct-nat) 06/05/2014
02:20:38 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
02:20:39 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:20:39 PM eth0 855.10 290.82 832319.39 140028.57 0.00 0.00 0.00
netstat -tu -c
查看发包的端口
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 124.1.1.68:49995 218.66.170.184:10991 ESTABLISHED
tcp 0 0 ::ffff:118.26.96.1:ssh ::ffff:118.26.96.248:41077 ESTABLISHED
tcp 0 0 ::ffff:118.26.96.1:ssh ::ffff:118.26.96.248:42562 ESTABLISHED
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 124.1.1.68:49995 218.66.170.184:10991 ESTABLISHED
tcp 0 0 ::ffff:118.26.96.1:ssh ::ffff:118.26.96.248:41077 ESTABLISHED
tcp 0 0 ::ffff:118.26.96.1:ssh ::ffff:118.26.96.248:42562 ESTABLISHED
用
lsof -i :39733
查看端口的进程,Kill就可以了
一篇博客的解决办法:
从服务器上使用命令sar -n DEV 1 4 ,确实出现大量发包的问题,(下边是正常的,异常的情况eth0txpck/s 10000左右了)
先进行限速或者拔掉网线:
开始之前,先要清除 eth0所有队列规则
tc qdisc del dev eth0 root 2> /dev/null > /dev/null
1) 定义最顶层(根)队列规则,并指定 default 类别编号
tc qdisc add dev eth0 root handle 1: htb default 20
tc class add dev eth0 parent 1: classid 1:20 htb rate 2000kbit
(1KB/s = 8KBit/s)
TC命令格式:
tc qdisc
[ add | change | replace | link ]
dev DEV
[ parent qdisc-id | root ] [ handle qdisc-id ]
qdisc
[ qdisc specific parameters ]
tc class
[ add | change | replace ]
dev DEV parent qdisc-id
[ classid class-id ]
qdisc
[ qdisc specific parameters ]
tc filter
[ add | change | replace ]
dev DEV
[ parent qdisc-id | root ]
protocol protocol prio priority filtertype
[ filtertype specific parameters ]
flowid flow-id
显示
tc [-s | -d ] qdisc show [ dev DEV ]
tc [-s | -d ] class show dev DEV tc filter show dev DEV
查看TC的状态
tc -s -d qdisc show dev eth0
tc -s -d class show dev eth0
删除tc规则
tc qdisc del dev eth0 root
查看状态:
top
CPU和MEM都正常,看不出异常的进程。
yum install -y tcpdump
tcpdump -nn
找到大量的IP地址
本机(192.168.35.145)和主机114.114.110.110之间的数据
tcpdump -n -i eth0 host 192.168.35.145 and 114.114.110.110
还有截取全部进入服务器的数据可以使用以下的格式
tcpdump -n -i eth0 dst 192.168.35.145
或者服务器有多个IP 可以使用参数
tcpdump -n -i eth0 dst 192.168.35.145 or 192.168.35.155
我们抓取全部进入服务器的TCP数据包使用以下的格式,大家可以参考下
tcpdump -n -i eth0 dst 192.168.35.145 or 192.168.35.155 and tcp
从本机出去的数据包
tcpdump -n -i eth0 src 192.168.35.145 or 192.168.35.155
tcpdump -n -i eth0 src 192.168.35.145 or 192.168.35.155 and port ! 22 and tcp
或者可以条件可以是or 和 and 配合使用即可筛选出更好的结果。
可以将异常IP加入到/etc/hosts.deny中,或者防火墙设置下
NetHogs
查看网络使用情况
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm
yum clean all
yum makecache
yum install nethogs -y
nethogs
下图显示各进程当前网络使用情况:
按“m”键可以切换到统计视图,显示各进程总的网络使用情况
使用帮助:
[root@localhost ~]# nethogs --help
usage: nethogs [-V] [-b] [-d seconds] [-t] [-p] [device [device [device ...]]]
-V : 显示版本信息,注意是大写字母V.
-d : 延迟更新刷新速率,以秒为单位。默认值为 1.
-t : 跟踪模式.
-b : bug 狩猎模式 — — 意味着跟踪模式.
-p : 混合模式(不推荐).
设备 : 要监视的设备名称. 默认为 eth0
当 nethogs 运行时, 按:
q: 退出
m: 总数和当前使用情况模式之间切换
找到大量发包的进程,之后kill掉,再排查下这个进程是什么程序,文件路径在哪里,删除掉异常的文件。
个人学习笔记,不当之处还请指正。
----------不定期更新------------