Linux常用netstat命令收集中.....
1. 查看请求80服务的client ip按照连接数排序
netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n
2. 查看apache详细链接情况
netstat -aptol
3.查看所有80端口的连接数
netstat -nat|grep -i "80"|wc -l
4.对连接的IP按连接数量进行排序
netstat -anp | grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n netstat -nat|awk '{print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn 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
5.查看TCP连接状态
(PS:正则解析:显示第5列,-F : 以:分割,显示列,sort 排序,uniq -c统计排序过程中的重复行,sort -rn 按纯数字进行逆序排序)
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn netstat -n | awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn 查看不同状态的连接数数量 netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}' netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}' netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}' netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c
6.查看80端口连接数最多的20个IP
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20 netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A,i}' |sort -rn|head -n20
7.查找较多time_wait连接
解决time_wait连接数大量问题,查询到time_wait连接数过多情况下,调整内核参数:/etc/sysctl.conf
net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 300
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
8.查找较多的SYN连接
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more
9.查看DDOS攻击
netstat -na
10.查看DDOS攻击只显示连接到80段口的活跃的网络连接,80是http端口,这对于web服务器非常有用,并且对结果排序.对于你从许多的连接中找出单个发动洪水攻击IP非常有用
netstat -n -p|grep SYN_REC | wc -l
11.这个命令对于在服务器上找出活跃的SYNC_REC非常有用,数量应该很低,最好少于5.
在dos攻击和邮件炸弹,这个数字可能非常高.然而值通常依赖于系统,所以高的值可能平分给另外的服务器.
netstat -n -p | grep SYN_REC | sort -u
12.列出所有包含的IP地址而不仅仅是计数
netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
13.列出所有不同的IP地址节点发送SYN_REC的连接状态
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
14.使用netstat命令来计算每个IP地址对服务器的连接数量
netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
15.列出使用tcp和udp连接到服务器的数目
netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
16.检查ESTABLISHED连接而不是所有连接,这可以每个ip的连接数,显示并且列出连接到80端口IP地址和连接数.80被用来作为HTTP如何缓解ddos攻击当你发现攻击你服务器的IP你可以使用下面的命令来关闭他们的连接:
netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1
iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT请注意你必须用你使用netstat命令找到的IP数替换$IPADRESS
17.获取用户登录失败的用户
grep "Accepted password for root from" /var/log/messages | awk '{print $13}' | uniq -c | sort -nr | more
18.查看网络连接数:
netstat -an |wc -l
19.查看某个/特定ip的连接数
netstat -an |grep xx |wc -l
20.查看连接数等待time_wait状态连接数
netstat -an |grep TIME_WAIT|wc -l
21.查看建立稳定连接数量
netstat -an |grep ESTABLISHED |wc -l
22.查看每个ip建立的ESTABLISHED/TIME_OUT状态的连接数
netstat -nat|grep ESTABLISHED|awk '{print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn