解析Linux网络分析的三大利器 [转贴]


随着Internet的迅猛发展,网络已无处不在,但是,他可能随时受到来自各方的攻击。了解哪些人正在访问资源、哪些人正在享受服务、哪些人正在发送大量垃圾等,对网络管理员来说是很必要的。利用Linux中较常见的网络分析工具Tcpdump、Nmap和Netstat,能够使网络管理工作更加轻松。
Tcpdump主要是截获通过本机网络接口的数据,用以分析。Nmap是强大的端口扫描工具,可扫描任何主机或网络。Netstat可用来检查本机当前提供的服务及状态。这三者各有所长,结合起来,就能够比较透彻地了解网络状况。


Tcpdump


Tcpdump能够截获当前任何通过本机网卡的数据包。他拥有灵活的过滤机制,能够确保得到想要的数据。由于Tcpdump只能收集通过本机的数据,因此他的应用受到了一些限制,大多应用在网关或服务器自我检测上。例如,在作为网关的主机上,想知道本地网络中IP地址为192.168.0.5的主机现在和外界通信的情况,就能够使用如下命令:

tcpdump -i eth0 src host 192.168.0.5



在默认情况下,Tcpdump会将数据输出到屏幕。假如数据量太大,可能根本看不清具体的内容,这时我们能够把他重定向到文档再进行分析。假如眼神不错,就能够清楚地了解这位仁兄刚才的一举一动:

访问了新浪网主页
20:05:32.473388 192.168.0.5.1872 >
www.sina.com.http:
S 1372301404:1372301404(0) win 64240 <mss
1460,nop,nop,sackOK> (DF)
……
进行了netbios广播进行名字查询
20:05:33.823388 192.168.0.5.netbios-dgm >
192.168.0.255.netbios-dgm: NBT UDP PACKET(138)
……
到新华网POP3服务器收信
20:05:41.953388 192.168.0.5.1878 > pop.xinhuanet.com.pop3: S
1374956462:1374956462(0) win 64240 <mss 1460,nop,nop,sackOK> (DF)
……
到深圳963收信
20:05:45.633388 192.168.0.5.1881 > szptt154.szptt.net.cn.pop3:
P 34:40(6) ack 146 win 64095 (DF)
……



例如,上面这条信息表明了在20:05:45的时候,192.168.0.5通过1881源端口连接到963电子邮局的POP3端口。对于普通的网络分析,这些信息已足够了。这就是Tcpdump的基本功能,其他高级功能都是在这一基础上的细化和增强。

例如,我只想知道192.168.0.5当前正在访问哪些Web站点,能够用下面这条命令:

tcpdump -i eth0 src host 192.168.0.5 and dst port 80



该命令的目的是截获任何由eth0进入、源地址(src)为192.168.0.5的主机(host),并且(and)目标(dst)端口(port)为80的数据包。得到的数据如下:

20:05:32.473388 192.168.0.5.1872 >
www.sina.com.http:
S 1372301404:1372301404(0) win 64240 <mss 1460,nop,nop,sackOK> (DF)
……
20:06:33.42344 192.168.0.5.1873 >
www.sohu.com.http:
S 1374301404:1374301404(0) win 64245 <mss 1460,nop,nop,sackOK> (DF)
……
20:07:31.343248 192.168.0.5.1874 >
www.21cn.com.http:
S 1377301404:1377301404(0) win 64241 <mss 1460,nop,nop,sackOK> (DF)
……



显然,通过and或not这些逻辑组合,就能够得到特定的数据。Tcpdump还能够监听不同的数据类型(如TCP、UDP),以用不同的网络范围(如Host主机、Net网络),甚至用Ether直接指定物理地址。

用Tcpdump在网络中获取信息如此清楚,是不是有一种一览无余的感觉。正是因为Tcpdump功能过于强大,连个人隐私和敏感数据的保护都成了问题,所以通常只有root用户能够使用这一工具。


Nmap


Nmap设计的初衷是系统管理员能够方便地了解自己的网络运行情况,例如有多少台主机在运行、分别提供什么样的服务。因此,他扫描的速度很快,尤其适合大型网络。在对网络进行扫描时,Nmap主要利用ICMP echo探测主机是否开启。凡是了解TCP/IP协议的都知道,对于一个TCP端口,无论是否使用防火墙进行过滤,该主机都会对该端口发出的请求做出一定响应。所以即使配置了严格的防火墙规则,nmap照样能够找到这些主机。例如,在一台IP地址为192.168.0.1的Linux主机上执行下列命令:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all



他的作用就是对任何ICMP echo不予理睬,也就是让通常用来测试网络的Ping命令失效。这样至少能够抵挡POD(Ping of Death)的攻击。在任何一台机器上Ping这台主机,得到的都会是请求超时,如:

Pinging 192.168.0.1 with 32 bytes of data:
Request timed out.
Request timed out.Request timed out.Request timed out.
Ping statistics for 192.168.0.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss)



这台主机是否下线了?用Nmap探测试试看:

nmap -sP 192.168.0.1
Starting nmap V. 2.54BETA22 (
www.insecure.org/nmap/ )
Host gw.somewhere.net (192.168.0.1) appears to be up.



探测结果似乎该主机还开着呢!这里,-sP指定使用Ping echo 进行扫描(Scan)。

利用这一特点,能够很快知道目的网络究竟有多少主机处于运行状态:

nmap -sP 192.168.0.0/24 //24表明目标是个网络而非单个主机
Starting nmap V. 2.54BETA22 (
www.insecure.org/nmap/ )
Host (192.168.0.2) appears to be up.
Host
www.somesite.net

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!