netstat 解读

Posted on Posted in command

netstat 基本用法

  • -a 列出所有当前的连接。列出 tcp, udp 和 unix 协议下所有套接字的所有连接
  • -t -at 列出 TCP 协议的连接
  • -u -au 列出 UDP 协议的连接
  • -n -ant 禁用域名解析功能
  • -l -tnl 列出正在监听的套接字。如果你查看所有监听端口,去掉 -t 选项。如果你只想查看 UDP 端口,使用 -u 选项,代替 -t 选项。注意:不要使用 -a 选项,否则 netstat 会列出所有连接,而不仅仅是监听端口。
  • -p -nlpt 查看进程信息
  • -ep -ltpe 同时查看进程名和用户名。注意 - 假如你将 -n 和 -e 选项一起使用,User 列的属性就是用户的 ID 号,而不是用户名。
  • -s 列出所有网络包的统计情况。如果想只打印出 TCP 或 UDP 协议的统计数据,只要加上对应的选项(-t 和 -u)即可
  • -r -rn 选项打印内核路由信息
  • -i -ie 网络接口信息
  • -c -ct 输出 TCP 协议信息。
  • -g 输出 IPv4 和 IPv6 的多播组信息

eg

netstat -atnp | grep ESTA  # active 状态的套接字连接用 "ESTABLISHED" 字段表示,所以我们可以使用 grep 命令获得 active 状态的连接
watch -d -n0 "netstat -atnp | grep ESTA" # 配合 watch 命令监视 active 状态的连接
sudo netstat -aple | grep ntp # 如果你想看看 http,smtp 或 ntp 服务是否在运行,使用 grep

netstat命令验证DDOS入侵

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网页请求。

减少ddos

iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT # 使用以下命令拒绝此IP的所有连接,$IPADRESS 替换成需要拒绝连接的IP地址
killall -KILL httpd # 结束所有的httpd连接以清理系统
service httpd start           #RedHat 系统 
/etc/init/d/apache2 restart   #Debian 系统

链接状态码

一个烂大街很棒的例子,查看网络连接数

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
  • LISTEN:侦听来自远方的TCP端口的连接请求
  • SYN-SENT:再发送连接请求后等待匹配的连接请求
  • SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
  • ESTABLISHED:代表一个打开的连接
  • FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
  • FIN-WAIT-2:从远程TCP等待连接中断请求
  • CLOSE-WAIT:等待从本地用户发来的连接中断请求
  • CLOSING:等待远程TCP对连接中断的确认
  • LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
  • TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
  • CLOSED:没有任何连接状态
  • SYN_RECV:一个连接请求已经到达,等待确认
  • SYN_SENT:应用已经开始,打开一个连接
  • FIN_WAIT1:应用说它已经完成
  • FIN_WAIT2:另一边已同意释放
  • ITMED_WAIT:等待所有分组死掉
  • TIME_WAIT: 表示处理完毕,等待超时结束的请求数。
  • LAST_ACK:等待所有分组死掉
» 转载请注明来源:若我若鱼 » netstat 解读

Leave a Reply

Your email address will not be published. Required fields are marked *

twelve + twenty =