使用netstat检测及监测网络连接

简介:

使用netstat检测及监测网络连接

大家好,我是邪恶君子!今天,邪恶就给大家分享一下,使用小小的一个netstat命令,就能让你检测出系统是否处于安全状态!!!

这篇文档,复杂°:简单;难易°:易。坚决让小白都看得懂,学得会,掌握牢,上手快!好,废话不多说,看招:

大家都知道,Linux上的web服务每天都要面临成千上万的连接,这些连接都是要遵循TCP协议的,这都是众所周知的(至于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的帮助信息,不懂的以及不太了解这个命令有哪些参数可用的都可以在这个命令的返回信息中看到:

 
 
  1. #netstat --help

显示当前所有活动的网络连接:

 
 
  1. #netstat -na

显示出所有处于监听状态的应用程序及进程号和端口号:

 
 
  1. #netstat -aultnp

如果想对一个单一的进行查询,只需要在命令后面再加上“| grep $”。这里就用到了管道符,以及grep筛选命令,$代表参数,也就是你要查询的那个。

如要显示所有80端口的网络连接:

 
 
  1. #netstat -aultnp | grep 80

如果还想对返回的连接列表进行排序,这就要用到sort命令了,命令如下:

 
 
  1. #netstat -aultnp | grep :80 | sort

当然,如果还想进行统计的话,就可以再往后面加wc命令。如:

 
 
  1. #netstat -aultnp | grep :80 | wc -l

其实,要想监测出系统连接是否安全,要进行多状态的查询,以及要分析,总结,还有就是经验。总的下来,才可以判断出连接是否处于安全状态。

下面就给大家再举一些例子,让大家彻底的明白,及彻底的理解这个命令的用处,使其发挥出最大功能。

 
 
  1. #netstat -n -p|grep SYN_REC | wc -l

这个命令可以查找出当前服务器有多少个活动的 SYNC_REC 连接。正常来说这个值很小,最好小于5。 当有Dos攻击或者邮件炸弹的时候,这个值相当的高。尽管如此,这个值和系统有很大关系,有的服务器值就很高,也是正常现象。

 
 
  1. #netstat -n -p | grep SYN_REC | sort -u

列出所有连接过的IP地址。

 
 
  1. #netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'

列出所有发送SYN_REC连接节点的IP地址。

 
 
  1. #netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

使用netstat命令计算每个主机连接到本机的连接数。

 
 
  1. #netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

列出所有连接到本机的UDP或者TCP连接的IP数量。

 
 
  1. #netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

检查 ESTABLISHED 连接并且列出每个IP地址的连接数量。

 
 
  1. #netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1

列出所有连接到本机80端口的IP地址和其连接数。80端口一般是用来处理HTTP网页请求。

怎么样,是否能弄懂上面的这些命令及作用?在这儿呢,邪恶负责的说一句话:如果你能把上面的这些都彻底的理解消化了,能举一反三了,那么,恭喜您,您在Linux系统网络检测这一小块已经是一个高手了,不在是菜鸟或者小白了,为自己鼓鼓掌吧!!!

说明一点:命令及参数是死的,但是人是活的,要想发挥出其最大的功能,还需要自己去摸索,自己去理解及配合其他命令一起使用。同时,netstat -an在Windows上也管用哦!

那么,如果真的发现有大量的假连接了,那么也不要慌,要先找出一些“另类的IP地址”,怎么解释呢,因为在进行Dos攻击时,会为造出大量的假IP去连接服务器,进行3次握手,所以,这就要根据经验去找出假IP,然后通过防火墙规则,添加一个规则拒接这个假IP的网段连接。

例如:

 
 
  1. #iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT

注意,你需将$IPADRESS 替换成需要拒绝连接的IP地址。执行完iptables 后呢,要重启一下web服务。

好了,今天的学习呢,到这儿就结束了,至于能掌握多少,这就要因人而异了,但我相信:天道酬勤!!!

最后,如果哪里有不对的地方,希望大家多多交流!!!

原文发布时间:2014-09-12

本文来自云栖合作伙伴“linux中国”

目录
相关文章
|
1月前
|
监控 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 显示网络 连接、路由表和网络接口信息 netstat命令 使用指南
【Shell 命令集合 网络通讯 】Linux 显示网络 连接、路由表和网络接口信息 netstat命令 使用指南
62 1
|
4月前
|
监控 网络协议 Linux
linux(三十五)网络状态和端口监控 netstat
linux(三十五)网络状态和端口监控 netstat
35 1
|
11月前
|
网络协议 Unix Linux
如何在Linux中显示网络连接、路由表、接口统计等信息?Netstat了解一下!
如何在Linux中显示网络连接、路由表、接口统计等信息?Netstat了解一下!
243 0
|
缓存 自然语言处理 监控
Linux中的crontab 定时任务设置、Linux中top 实时监控系统进程状态Linux中的pstree 查看进程树、netstat 显示网络状态和端口占用信息
Linux中的crontab 定时任务设置、Linux中top 实时监控系统进程状态Linux中的pstree 查看进程树、netstat 显示网络状态和端口占用信息
Linux中的crontab 定时任务设置、Linux中top 实时监控系统进程状态Linux中的pstree 查看进程树、netstat 显示网络状态和端口占用信息
|
网络协议 Unix Linux
Linux网络管理之netstat命令– 显示网络状态
netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
122 0
Linux网络管理之netstat命令– 显示网络状态
|
自然语言处理 算法 Linux
Linux中的pstree 查看进程树、netstat 显示网络状态和端口占用信息、kill 终止进程、进程管理类、ps 查看当前系统进程状态、内存置换算法LRU、查看与sshd相关进程
这时候没有了sshd守护进程了,那么远程登录就都登录不上了,只有再把sshd守护进程开启才可以再次远程登录,如果没有开启sshd守护进程,把所有的root进程的远程登录关掉,那么只能用主机操作了。比如将sshd全部杀死,这样的话远程登录的全部停了,而且也不能再次远程登录了,只能在主机上打开sshd守护进程才可以,这个就不演示了。killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这 在系统因负载过大而变得很慢时很有用)linux常用命令下。linux常用命令中。linux常用命令上。.netstat –nlp | grep 端口号 (功能描述:查看网络端口号占用情况)ne
340 1
Linux中的pstree 查看进程树、netstat 显示网络状态和端口占用信息、kill 终止进程、进程管理类、ps 查看当前系统进程状态、内存置换算法LRU、查看与sshd相关进程
|
移动开发 网络协议 Linux
网络环境查看命令:ifconfig、ifup、ifdown、route、netstat、ss
一、ifconfig ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。 1. 安装 若系统默认没有ifconfig命令,则使用下面命令进行安装。
|
Prometheus JavaScript Cloud Native
netstat 查看 服务器网络连接
Netstat 和类似的一些网络监测工具被归入 net-tools 软件包 里,用来显示关于活动连接的信息。因为运行在开放的端口的服务往往容易被利用,定期进行网络监测能够帮助你及早探测到可疑的活动。
184 0
|
监控 网络协议 Unix
linux之netstat检查网络
netstat 用于显示网络状态。利用 netstat 命令可以得知系统的网络情况。
98 0
|
Java Linux Maven
LINUX03_磁盘情况查询、ps -ef、centos7查看服务、netstat查看网络、grep、重定向、管道、yum、用户权限(四)
LINUX03_磁盘情况查询、ps -ef、centos7查看服务、netstat查看网络、grep、重定向、管道、yum、用户权限(四)
192 0
LINUX03_磁盘情况查询、ps -ef、centos7查看服务、netstat查看网络、grep、重定向、管道、yum、用户权限(四)