微信号:programmer_club

介绍:程序员第一自媒体,与你探讨码农人生路上遇到的各类泛技术话题,定期为你推荐码农人生思考、感悟以及启迪!

运维工程师必会工具:Nmap 和 TCPdump

2016-01-05 21:53 李振良

作者:李振良

原文:http://lizhenliang.blog.51cto.com/7876557/1361344


1、NMap工具


主要功能:探测主机是否在线、扫描主机开放端口和嗅探网络服务,用于网络探测和安全扫描。


NMap支持很多扫描技术,例如:UDP、TCPconnect()、TCPSYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、SYN扫描和null扫描。


命令格式:Nmap [ 扫描类型 ] [ 通用选项 ] { 扫描目标说明 }


扫描类型:


-sT

TCP connect()扫描,这是最基本的TCP扫描方式,用来建立一个TCP连接,如果成功则认为目标端口正在监听,否则认为目标端口没有监听程序。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。

-sS

TCP同步扫描(TCP SYN),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口没有监听程序。所以这项技术通常称为半开扫描(half-open)。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要root权限来定制SYN数据包。

-sF,-sX,-sN

秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式。这些扫描方式的理论依据是:关闭的端口需要对你的探测包回应RST包,而打开的端口必需忽略有问题的包,通过这种扫描,可间接用于检测防火墙的健壮性。

-sP

ping扫描,用ping方式检查网络上哪些主机正在运行。当主机阻塞ICMP echo请求包是ping扫描是无效的。nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。

-sU

UDP扫描,如果你想知道在某台主机上提供哪些UDP服务,可以使用此选项。

-sA

ACK扫描,这项高级的扫描方法通常可以用来穿过防火墙。

-sW

滑动窗口扫描,非常类似于ACK的扫描。

-sR

RPC扫描,和其它不同的端口扫描方法结合使用。

-b

FTP反弹攻击(bounce attack),连接到防火墙后面的一台FTP服务器做代理,接着进行端口扫描。


通用选项:


-n

不做反向DNS解析,以加快扫描速度



-P0

在扫描之前,不ping主机;有些网络防火墙可能禁止ICMP请求包,使用这种扫描类型可以跳过ping测试

-PT

扫描之前,使用TCP ping确定哪些主机正在运行。

-PS

对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行扫描。

-PI

设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行。

-PB

这是默认的ping扫描选项。它使用ACK(-PT)和ICMP(-PI)两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。

-O

这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志,也就是操作系统类型。

-I

打开nmap的反向标志扫描功能。

-f

使用碎片IP数据包发送SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度,使其无法知道你的企图。

-v

强烈推荐使用这个选项,它会给出扫描过程中的详细信息。

-S

在一些情况下,nmap可能无法确定你的源地址(nmap会告诉你)。在这种情况使用这个选项给出你的IP地址。

-g port

设置扫描的源端口。一些天真的防火墙和包过滤器的规则集允许源端口为DNS(53)或者FTP-DATA(20)的包通过和实现连接。显然,如果攻击者把源端口修改为20或者53,就可以摧毁防火墙的防护。

-oN

把扫描结果重定向到一个可读的文件logfilename中。

-oS

扫描结果输出到标准输出。

-A

打开操作系统探测和版本探测。


扫描目标:


目标地址

可以为IP地址,CIRD地址等。如192.168.1.2,222.247.54.5/24

-iL filename

从filename文件中读取扫描的目标。

-iR

让nmap自己随机挑选主机进行扫描。

-p

端口,这个选项让你选择要进行扫描的端口号的范围。可使用逗号分隔多个端口,减号连接一个端口范围,在列表前指定T:表示TCP端口,U:表示UDP端口

-exclude

排除指定主机。

-excludefile

排除指定文件中的主机。


端口的三种状态:


  • Open:意味着目标主机能够在这个端口使用accept()系统调用接受连接。

  • filtered:表示防火墙、包过滤和其它的网络安全软件掩盖了这个端口,禁止nmap探测其是否打开。

  • unfiltered:表示这个端口关闭,并且没有防火墙/包过滤软件来隔离nmap的探测企图。


举例说明:


1、探测指定网段是否有FTP服务的主机,不做DNS反向解析


nmap -sS n p 21192.168.0.0/24


2、探测指定服务器是否启有特定端口的服务


nmap n p T:21-25,80,110,3389sS 192.168.0.1


3、使用TCP连接扫描探测指定服务器,即使无法ping通也仍然继续探测


4、nmap -sT PO 192.168.0.1


5、探测指定服务器的操作系统类型


nmap O n 192.168.0.1


6、探测局域网段中各主机开启了哪些服务


nmap sS 192.168.0.0/24


7、探测192.168.0.0和172.16.0.0/16网段中有哪些主机在运行


nmap sP n 192.168.0.0/24 172.16.0.0/16


8、快速扫描主机开放端口


nmap -F 192.168.0.1


2、TCPDump工具


主要功能:捕获和分析数据包。


TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供 and、or、not等逻辑语句来帮助你去掉无用的信息。


命令格式:tcpdump [ 选项 ] [ -c 数量 ] [ -i 网络接口 ] [ -w 文件名 ] [ 表达式 ]


常用选项:


  • -l:使标准输出变为缓冲行形式;

  • -c:抓包次数;

  • -nn:直接以 IP 及 Port Number 显示,而非主机名与服务名称;

  • -s :<数据包大小> 设置每个数据包的大小;

  • -i:指定监听的网络接口;

  • -r:从指定的文件中读取包;

  • -w:输出信息保存到指定文件;

  • -a:将网络地址和广播地址转变成名字;

  • -d:将匹配信息包的代码以人们能够理解的汇编格式给出;

  • -e:在输出行打印出数据链路层的头部信息;

  • -f:将外部的Internet地址以数字的形式打印出来;

  • -t:在输出的每一行不打印时间戳;

  • -v :输出稍微详细的报文信息;加一个v更详细。



四种表达式:过滤报文条件


  • 1、关于类型的关键字,主要包括host,net,port, 例如 host210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host。

  • 2、确定传输方向的关键字,主要包括src, dst ,dst or src, dst and src ,这些关键字指明了传输的方向。例如 src210.27.48.2 ,指明ip包中源地址是210.27.48.2, dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。

  • 3、协议的关键字,主要包括ip,arp,tcp,udp等类型。

  • 4、三种逻辑运算,与运算是’and’,'&&’; 或运算是’or’ ,’||’; 非运算是 ‘not ‘ ‘! ‘。


其他重要的关键字如下: broadcast,less(小于),greater(大于)


举例说明:


1、截获eth0网卡10次收发所有数据包并将抓包结果保存到test文件,再读取test抓包结果文件


tcpdump i eth0 c 10 w test


tcpdump r test


2、截获来访问80端口的所有数据包(指定端口范围portrange 1-1024)


tcpdump port 80


3、截获所有来自主机114.254.151.51的进出所有数据包


tcpdump host 114.254.151.51


4、截获ip包中源地址是114.254.151.51的(目的是dst)


tcpdump src 114.254.151.51


5、截获主机114.254.151.51和主机114.254.151.52的通信


tcpdum host 114.254.151.51 and 114.254.151.52


6、截获tcp协议并且源地址114.254.151.51来访问80的端口


tcpdump tcp and src 114.254.151.51 and port 80


7、截获主机114.254.151.51除了和114.254.151.52之外的所有ip包


tcpdump ip host 114.254.151.51 and ! 114.254.151.52


8、截获长度大于1000数据包,对于DDOS攻击时,可以使用


tcpdump -i eth0 greater 1000

 
程序员之家 更多文章 我们这一代人的困惑 神剪辑,揭秘程序员加班内幕,不能看,看完想笑又想哭! 美国12位创新型程序员:让科技永远改变 说说怎么写clean code 500,000+年薪程序猿出身哪里 猎聘网揭秘前十大学校
猜您喜欢 不懂技术的人不要对懂技术的人说这很容易实现 坑系列 --- 重构过程中的过度设计 五年高考,三年模拟 | 来做道语文阅读理解 程序员翻船指南大全 探索