netstat 检测及监测网络连接
网站没有很多流量,可查带宽却跑了几十M? 这是什么情况呢?
如果是出现这种情况,不排除是被CC了的可能。那么如何确定是否真的被CC了,被CC又有什么对应政策呢?
netstat -na ,用这个命令查看哪些ip到服务器ip的链接数很多,然后用安全狗之类的把那些ip给屏蔽掉。(直接在服务器上运行那个命令就可以 )
少量cc的话,这样操作还是可以防御的。多了,大了,那就还是要高防了。
下面大概科普下关于netstat命令的使用。
众所周知,Linux上的web服务每天都要面临成千上万的连接,这些连接都是要遵循TCP协议的。既然都是TCP协议连接,那就不得不面临一个网路最大的安全问题,DOS攻击及DDOS攻击,这些攻击是没有办法抹除的,因为这是针对TCP协议本身的一个设计缺陷儿造成的。所以,这就要求运维人员,时刻监测系统安全,是否处于被DOS攻击状态。
那么是怎么监测及检测的呢?这就要用到netstat命令。先简单的说下一下netstat命令的主要作用:可以查看系统当前的连接状态,不管是TCP连接还是udp协议连接,以及每个连接的进程号、是哪个应用程序、连接所用的端口号,这些都可以陈列出来。
在讲监测检测之前,先给大家在普及一个知识,那就是TCP连接的状态,TCP进行3次握手,其过程有很多状态,不同的连接状态,都有想对应的状态码,看下面列表:
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:没有任何连接状态
运维人员在监控系统并发连接状态时,监控系统返回的也是这些状态码!
了解完这些后,还要再了解一个Linux系统的脚本中的一个小知识点,那就是“|”管道符,管道符的作用就不多说了,这里就简单提一下,因为下面的例子要用到。
以下这条命令将会显示出netstat的帮助信息,不懂的以及不太了解这个命令有哪些参数可用的都可以在这个命令的返回信息中看到:
#netstat --help
显示当前所有活动的网络连接:
#netstat -na
显示出所有处于监听状态的应用程序及进程号和端口号:
#netstat -aultnp
如果想对一个单一的进行查询,只需要在命令后面再加上“| grep $”。这里就用到了管道符,以及grep筛选命令,$代表参数,也就是你要查询的那个。
如要显示所有80端口的网络连接:
#netstat -aultnp | grep 80
如果还想对返回的连接列表进行排序,这就要用到sort命令了,命令如下:
#netstat -aultnp | grep :80 | sort
当然,如果还想进行统计的话,就可以再往后面加wc命令。如:
#netstat -aultnp | grep :80 | wc -l
其实,要想监测出系统连接是否安全,要进行多状态的查询,以及要分析,总结,还有就是经验。总的下来,才可以判断出连接是否处于安全状态。
下面就给大家再举一些例子,让大家彻底的明白,及彻底的理解这个命令的用处,使其发挥出最大功能。
#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网页请求。
说明一点:命令及参数是死的,但是人是活的,要想发挥出其最大的功能,还需要自己去摸索,自己去理解及配合其他命令一起使用。同时,netstat -an在Windows上也管用哦!
那么,如果真的发现有大量的假连接了,那么也不要慌,要先找出一些“另类的IP地址”,怎么解释呢,因为在进行Dos攻击时,会为造出大量的假IP去连接服务器,进行3次握手,所以,这就要根据经验去找出假IP,然后通过防火墙规则,添加一个规则拒接这个假IP的网段连接。
例如:
#iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT
注意,你需将$IPADRESS 替换成需要拒绝连接的IP地址。执行完iptables 后呢,要重启一下web服务。鼎峰凡凡,2881064156
netstat 检测及监测网络连接的更多相关文章
- 使用netstat检测及监测网络连接
在讲监测检测之前,先给大家在普及一个知识,那就是TCP连接的状态,TCP进行3次握手,其过程有很多状态,不同的连接状态,都有想对应的状态码,看下面列表: LISTEN:侦听来自远方的TCP端口的连接请 ...
- netstat监控大量ESTABLISHED连接与Time_Wait连接问题
问题描述: 在不考虑系统负载.CPU.内存等情况下,netstat监控大量ESTABLISHED连接与Time_Wait连接. # netstat -n | awk '/^tcp/ {++y[$NF] ...
- android 检测网络是否连接,或者GPS是否可用
很多android程序在打开时,检测网络是否连接,或者GPS是否可用: 1.网络是否连接(包括Wifi和移动网络) // 是否有可用网络 private boolean isNetworkConnec ...
- netstat监控大量ESTABLISHED连接与Time_Wait连接问题(转载)
问题描述: 在不考虑系统负载.CPU.内存等情况下,netstat监控大量ESTABLISHED连接与Time_Wait连接. # netstat -n | awk '/^tcp/ {++y[$NF] ...
- 服务器性能调优(netstat监控大量ESTABLISHED连接与Time_Wait连接问题)
netstat监控大量ESTABLISHED连接与Time_Wait连接问题 问题描述: 在不考虑系统负载.CPU.内存等情况下,netstat监控大量ESTABLISHED连接与Time_Wait连 ...
- C#如何检测网络端口连接的状态
原文:C#如何检测网络端口连接的状态 C#如何检测/监控远程连接网络端口的情况(例如:3389端口是否处于监听状态,是否建立了连接等). using System; using System.Coll ...
- zabbix proxy 服务器 netstat 出现大量Time_Wait连接问题
问题描述: 监控系统云网关监控几万个TCP port的存活情况, 最近发现有几个端口出现告警闪断情况,怀疑因为运行TCP检查的 zabbix proxy 服务器 tcp参数配置不合理. netstat ...
- PhoneGap检测设备网络连接情况
一.网络连接状态列表 Phonegap 网络连接通过 navigator.network.connection.type 来获取,一般有一下几种状态 1. Connection.UNKNOWN ...
- [Xcode 实际操作]八、网络与多线程-(1)使用Reachability类库检测网络的连接状态
目录:[Swift]Xcode实际操作 本文将演示如何使用Reachability网络状态检测库,检测设备的网络连接状态. 需要下载一个开源的类库:[ashleymills/Reachability. ...
随机推荐
- hibernate_SessionFactory_getCurrentSession_JTA简介
JTA:java transaction api java里所规定的一种管理事务的API 在另一篇播客我写到了,SessionFactory需要关注两个方法, 即: openSession ...
- ACCESS 手工注入
ACCESS的注入,基本是死的.思路很简单,基本都可以工具解决.上代码: 1.判断有无注入点' and 1=1 and 1=22.猜表一般的表的名称无非是admin adminuser user pa ...
- (转载)GRASP职责分配原则
GRASP (职责分配原则) 要学习设计模式,有些基础知识是我们必须要先知道的,设计模式是关于类和对象的一种高效.灵活的使用方式,也就是说,必须先有类和对象,才能有设计模式的用武之地,否则一切都是空谈 ...
- 反射 XMLUtil
package com.dys.util; import java.beans.Introspector; import java.beans.PropertyDescriptor; import j ...
- Android Studio 连接 逍遥模拟器
1.启动 逍遥模拟器: 2.打开 Android Studio 项目: 3.命令行 adb connect 127.0.0.1:21503 C:\Users\Administrator>adb ...
- 如何应用ASP.NET MVC中的分部视图
概述: 在ASP.NET Web Form的开发经验中,对于User Control使用比较频繁,可以减少重复的代码,利于页面模块化,这个概念也被引入了ASP.NET MVC.即“分部视图”. 1.创 ...
- 在使用HttpClient做客户端调用一个API时 模拟并发调用时发生“死锁"?
平时还是比较喜欢看书的..但有时候遇到问题还是经常感到脑袋一蒙..智商果然是硬伤.. 同事发现了个问题,代码如下: class Program { static void Main(string[] ...
- iptables-linux(ls)-inode-block
Part1:iptables 环境:centos6.7 目前我只配置了INPUT.OUTPUT和FORWORD都是ACCEPT的规则 由于想要先实现防火墙规则,所以前面的内容讲的是方法,后面是详解ip ...
- 【转】Java策略消除if else
策略(Strategy)模式:又名Policy,它的用意是定义一组算法,把它们一个个封装起来,并且使他们可以相互替换.策略模式可以独立于使用他们的客户端而变化.GOF策略模式静态结构类图如下: 通过上 ...
- The configuration section 'system.serviceModel' cannot be read because it is missing a section decla
将Asp.Net 2.0的Web Site搭建在IIS7(7.5)上时,运行出现500.19错误, 错误提示为 The configuration section 'system.serviceMod ...