Linux下抓包工具tcpdump以及分析包的工具wireshark

tcpdump是用来抓取数据的,wireshark则是用于分析抓取到的数据的。

一般需要安装,直接使用yum安装:yum -y install tcpdump即可。

Tcpdump使用方法
(1)关于类型的关键字主要包括host,net,port

例如: host 210.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
这些关键字指明了传输的方向,例如:src 210.27.48.2,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0。如果没有指明方向关键字,则缺省是src or dst关键字。


(3)协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。
Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。


(4)其他重要的关键字如下:gateway, broadcast,less,greater,

    还有三种逻辑运算,取非运算'not '和'! ',    与运算是'and','&&';      或运算 是'or','││';


普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包。

tcpdump输出格式
总的的输出格式为:系统时间 来源主机.端口 > 目标主机.端口 数据包参数


例如:tcpdump �Ci eth0 �Cc 10

使用-i参数指定tcpdump监听的网络界面,这在计算机具有多个网络界面时非常有用,
使用-c参数指定要监听的数据包数量,
使用-w参数指定将监听到的数据包写入文件中保存


A.截获主机172.16.14.107和主机172.16.14.27的通信

tcpdump host 172.16.14.107 and 172.16.14.27


B.想要截获主机172.16.14.107和主机172.16.14.27或172.16.14.99的通信,使用命令:(在命令行中使用括号时,一定要用’\’
tcpdump host 172.16.14.107 and \(172.16.14.27 or 172.16.14.99 \)


C.如果想要获取主机172.16.14.107除了和主机172.16.14.27之外所有主机通信的ip包,使用命令:
tcpdump ip host 172.16.14.107 and ! 172.16.14.27


D.如果想要获取主机172.16.14.107接收或发出的telnet包,使用如下命令:
tcpdump tcp port 23 and host 172.16.14.107


E.对本机的udp 123 端口进行监视 (123 为ntp的服务端口)
tcpdump udp port 123


F.系统将只对名为hostname的主机的通信数据包进行监视。主机名可以是本地主机,也可以是网络上的任何一台计算机。下面的命令可以读取主机hostname发送的所有数据:
tcpdump -i eth0 src host hostname


G.下面的命令可以监视所有送到主机hostname的数据包:
tcpdump -i eth0 dst host hostname

#src表示源,即发送
#dst表示目的地,即接收


H.我们还可以监视通过指定网关的数据包:
tcpdump -i eth0 gateway Gatewayname


I.如果你还想监视主机名hostname到指定端口的TCP或UDP数据包,那么执行以下命令:
tcpdump -i eth0 host hostname and tcp port 80


J.如果想要获取主机172.16.14.107接收或发出的telnet包,使用如下命令:
tcpdump tcp port 23 and host 172.16.14.107


K. 如果我们只需要列出送到80端口的数据包,用dst port 80;如果我们只希望看到返回80端口的数据包,用src port 80。
tcpdump �Ci eth0 host hostname and dst port 80  目的端口是80
或者
tcpdump �Ci eth0 host hostname and src port 80  源端口是80

80端口一般是提供http的服务的主机.


L.如果要用wireshark分析数据:

tcpdump -i eth0 -c 100 -s 0 -w /home/data.pcap

直接使用wireshark /home/data.pcap即可。



Linux下面的Wireshark抓包工具安装与使用

Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。Wireshark也使用pcap network library来进行封包捕捉。

linux下面的安装:yum -y install wireshark-*

其他方面操作系统安装请参靠:http://netsecurity.51cto.com/art/200906/131979.htm

当我们启动wireshark时候会出现下面的报错:

[root@attack ~]# wireshark

(wireshark:2383): Gtk-WARNING **: cannot open display: 192.168.1.2:1.0

从报错看出来要求我们的操作系统安装图行界面,就是X Window+GNOME 或者X Window+KDE

在CentOS下,是如下几个软件包组
yum groupinstall -y Desktop "X Window System"
或者
yum groupinstall -y Desktop "KDE Desktop"
如果上面的回答不够详细,建议搜索一下X Window 然后,再探索一下。

不然就在Windows下安装一个xmanager,执行Xmanager-passive 将Linux下的DISPLAY转发到windows下。

可以借鉴如下链接

http://bbs.51cto.com/thread-1080570-1.html

配置本地X Server远程安装Oracle 数据库

当我们需要在服务器上安装Oracle数据库时,我们总希望最大化Linux服务器性能利用。尽量少的安装其他复杂的软件,只安装Oracle必要的软件即可。然而事实上,由于对Linux比较陌生。只有在已经安装X window图形化套件的情况下,才会安装Oracle数据库。并可怕得渐渐认为Oracle必需X window图形化套件。通过对Oracle官方文档的阅读,我们发现Oracle和Gnome或者KDE没有任何关系,Oracle可以独自完成所有绘图功能。Oracle需要的只是一个X Server。知道这些,我们就可以不在本地安装X window和GNOME套件。而是通过IP网络使用在本地计算机上运行的X Server。Linux主机实现这项功能轻而易举,windows可以通过X manager软件来运行一个XServer,供Oracle使用。

Linux 系统中,X Window套件的 X Server和X Client之间使用X Protocol通信。X Protocol的多样性决定了X Server和X Client不一定要在同一个主机。完全可以使用本地X Server 显示并操作远程X Client的内容。这虽然和Windows的远程桌面优点类似,但无论在机制还是在技术上,X Window都高Windows一层。根据X Window这个原理,我们实现在不安装X Window+ GNOME套件的情况下,安装Oracle数据库。通过减少软件包的安装,减少系统被攻击的机会,以提高系统安全性。

这里解释一个概念:DISPLAY变量
变量格式如下:

#script from :www.xiyang-liu.com
# by:xiyang
DISPLAY=hostname: displaynumber.screennumber
#displaynumber和screennumber都是从零开始的数字。一般来说displaynumber、screennumber就都是0。
#hostname指X server所在主机的主机名或者ip地址,图形将显示在这一机器上。此主机可以是启动了图形界面的Linux/Unix机器,也可以是通过第三方软件运行X Server的Windows机器。
#如果Host为空,则表示X server运行于本机,并且X client使用IPC方式连接到X server,而不是TCP方式。
#使用TCP方式连接时,displaynumber为连接的端口减去6000的值,如果displaynumber为0,则表示连接到6000端口。
#使用unix socket方式连接时,则表示连接的unix socket的路径,如果displaynumber为0,则表示连接到/tmp/.X11-unix/X0。
#screennumber则几乎总是0.

操作者使用Linux操作系统
如果操作者使用的是安装X Window + Gnome套件的Linux系统。那么实现这个功能简直太简单了。

我们统称要安装Oracle的服务器为“服务器”,运行Gnome的主机为客户端。
在客户端,首先我们要允许服务器端X Client连接到X Server。执行如下命令添加服务器端IP地址到ACL。这里是临时添加,重启后将丢失。

#script from :www.xiyang-liu.com
# by:xiyang
[root@manager ~]# xhost +10.17.36.33
10.17.36.33 being added to access control list

查看X Server的DISPLAY变量号

#script from :www.xiyang-liu.com
# by:xiyang
[root@manager ~]# echo $DISPLAY
:1.0

查看客户端为X Server开放的TCP端口。如果客户端没什么重要的数据,干脆直接关闭防火墙。如果不能关闭防火墙,则添加对应端口的入连接许可。
#关闭防火墙

#script from :www.xiyang-liu.com
# by:xiyang
[root@manager ~]# service iptables stop

通过netstat -atpl获取X Server对应端口号

wKioL1NYkhmTHDcjAACyV4WtA5Y569.jpg

编辑/etc/sysconfig/iptables添加端口的入连接许可。

#script from :www.xiyang-liu.com
# by:xiyang
[root@manager ~]# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6001 -j ACCEPT
[root@manager ~]# service iptables restart

服务器端,设置DISPLAY变量。

#script from :www.xiyang-liu.com
# by:xiyang
[root@bogon ~]# export DISPLAY=10.17.36.210:1.0
注意:这里的10.17.36.210为X server的iP地址

安装xclock测试以上设置能否正常工作。

#script from :www.xiyang-liu.com
# by:xiyang
[root@bogon ~]# yum install xclock
[root@bogon ~]# xclock

如果客户端能正常显示一个时钟窗口如下。说明配置成功

wKiom1NYktHAh4MmAABqrkvDdnc112.jpg

接下来运行Oracle安装程序即可。


操作者使用Windows操作系统
在客户端安装X manager程序,同文件夹有key

下载地址:http://dl.vmall.com/c0sfidvng2
下载密码:www.xiyang-liu.com

完成后运行Xmanager - Passive程序
xmanager.png
运行后系统通知区域会有一个小图标,鼠标移至上面会显示本地X Server的displaynumber和screennumber。如下图所示。

xmanager-passive.png
在服务器上设置DISPLAY变量

#script from :www.xiyang-liu.com
# by:xiyang
[root@bogon ~]# export DISPLAY=10.17.35.50:1.0

同样,执行xclock测试以上设置能否正常工作。

#script from :www.xiyang-liu.com
# by:xiyang
[root@bogon ~]# xclock

同样,关闭Windows防火墙。
Windows显示如下窗口,表示设置成功。
xclock-windows.png

在执行wireshark

[root@puppet ~]# wireshark

就可以进行抓包了,出现图像界面如下

wKioL1NYk76TN8YFAAOg9L2p1wE048.jpg

但是有一个问题:在本地电脑关机之后,无法再抓网络层包,我需要登录到服务器上面抓取凌晨零点到第二天3点的数据,因此需要在服务器上面直接调用wireshark命令来抓包。

其实安装好wireshark之后,tshark就是命令行版本

[root@localhost ~]# yum install wireshark-*

[root@localhost ~]# rpm -ql wireshark | grep bin/
/usr/sbin/capinfos
/usr/sbin/dftest
/usr/sbin/dumpcap
/usr/sbin/editcap
/usr/sbin/mergecap
/usr/sbin/randpkt
/usr/sbin/rawshark
/usr/sbin/tethereal
/usr/sbin/text2pcap
/usr/sbin/tshark

[root@localhost ~]# /usr/sbin/tshark -i eth0 -w eth0-out.pcap
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
27 ^C
[root@localhost ~]#
将上述命令放到cron里面,使用crontab就可以定时捕包了


wireshark使用方法:

http://netsecurity.51cto.com/art/200906/131979.htm

http://www.2cto.com/Article/201304/202149.html

http://www.linuxidc.com/Linux/2013-05/84174.htm

你可能感兴趣的:(tcpdump)