Linux/GNU

Linux/GNU

查看linux版本信息

下面介绍几种查看linux版本信息的方法:

1)uname -a
2)cat /proc/version
3)cat /etc/issue

补充一个:

4) ls /boot
这个下面是一些系统引导文件,主要包括内核映像(内核的压缩文件),系统默认会带上它们的版本号,所有也可以看出内核的版本,不过如果要查看当前正在运行的系统的版本号,而/boot下有多个内核版本,那么还是需要用上面的三种办法。

tcpdump简单用法

tcpdump简单用法

tcpdump是非常强大的网络安全分析工具,可以将网络上截获的数据包保存到文件以备分析。可以定义过滤规则,只截获感兴趣的数据包,以减少输出文件大小和数据包分析时的装载和处理时间。

这篇文章只涉及tcpdump的基本用法,请记住tcpdump比我描述的强大的多。

针对网络接口、端口和协议的数据包截取。假定你要截取网络接口eth1,端口号6881的tcp数据包。数据文件保存为test.pcap。

tcpdump -w test.pcap -i eth1 tcp port 6881

很简单吧?如果要同时截取udp端口号33210和33220的数据包呢?

tcpdump -w test.pcap -i eth1 tcp port 6881 or udp \( 33210 or 33220 \)

'\'是转义字符,逻辑符号OR是加(+)的意思。其他表达式是截取端口号6881的tcp包加上端口号33210和33220的UDP包。tcpdump过滤表达式的and运算符是交集的意思,因此截取端口号33210和33220的UDP包使用 or 而不是 and。and运算符的用法在下文描述。

怎样保存文件读取数据包呢?

tcpdump -nnr test.pcap

选项 -nn 不把网络IP和端口号转换成名字,r(read)读取包。

可以添加 -tttt 选项使时间戳格式更加可读。

tcpdump -ttttnnr test.pcap

怎样针对IP截取数据?

需向tcpdump指明IP类型,目的IP还是源IP?比如要嗅探的目的IP为10.168.28.22,tcp端口号22。

tcpdump -w test.pcap dst 10.168.28.22 and tcp port 22

目的IP和端口的交集(intersection),使用and运算符。

嗅探数据包大小缺省为96 bytes,可以指定 -s 改变缺省值。

tcpdump -w test.pcap -s 1550 dst 10.168.28.22 and tcp port 22

有些版本的tcpdump允许指定端口范围,下述指令为针对一定端口范围截取数据。

tcpdump tcp portrange 20-24

注意,上述指令没有指定 -w 把截取的数据包保存到文件而是直接输出到屏幕。

不知道端口号使用tcpdump

互联网的数据流量太大,可以使用lsof搜索指定端口。lsof的例子可以参考 Monitor who runs what, listen to what ports, established what connections。

TcpDump

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

和Linux终端状态下的其他软件一样,TcpDump也是依靠参数来工作,本文将结合实例来说明。

数据过滤
不带任何参数的TcpDump将搜索系统中所有的网络接口,并显示它截获的所有数据,这些数据对我们不一定全都需要,而且数据太多不利于分析。所以,我们应当先想好需要哪些数据,TcpDump提供以下参数供我们选择数据:

-b 在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。

例如:tcpdump -b arp 将只显示网络中的arp即地址转换协议信息。

-i 选择过滤的网络接口,如果是作为路由器至少有两个网络接口,通过这个选项,就可以只过滤指定的接口上通过的数据。例如:

tcpdump -i eth0 只显示通过eth0接口上的所有报头。

src、dst、port、host、net、ether、gateway这几个选项又分别包含src、dst 、port、host、net、ehost等附加选项。他们用来分辨数据包的来源和去向,src host 192.168.0.1指定源主机IP地址是192.168.0.1,dst net 192.168.0.0/24指定目标是网络192.168.0.0。以此类推,host是与其指定主机相关无论它是源还是目的,net是与其指定网络相关的,ether后面跟的不是IP地址而是物理地址,而gateway则用于网关主机。可能有点复杂,看下面例子就知道了:

tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24

过滤的是源主机为192.168.0.1与目的网络为192.168.0.0的报头。

tcpdump ether src 00:50:04:BA:9B and dst……

过滤源主机物理地址为XXX的报头(为什么ether src后面没有host或者net?物理地址当然不可能有网络喽)。

Tcpdump src host 192.168.0.1 and dst port not telnet

过滤源主机192.168.0.1和目的端口不是telnet的报头。

ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型。例如:

tcpdump ip src……

只过滤数据-链路层上的IP报头。

tcpdump udp and src host 192.168.0.1

只过滤源主机192.168.0.1的所有udp报头。

数据显示/输入输出
TcpDump提供了足够的参数来让我们选择如何处理得到的数据,如下所示:

-l 可以将数据重定向。

如tcpdump -l >tcpcap.txt将得到的数据存入tcpcap.txt文件中。

-n 不进行IP地址到主机名的转换。

如果不使用这一项,当系统中存在某一主机的主机名时,TcpDump会把IP地址转换为主机名显示,就像这样:eth0 < ntc9.1165> router.domain.net.telnet,使用-n后变成了:eth0 < 192.168.0.9.1165 > 192.168.0.1.telnet。

-nn 不进行端口名称的转换。

上面这条信息使用-nn后就变成了:eth0 < ntc9.1165 > router.domain.net.23。

-N 不打印出默认的域名。

还是这条信息-N 后就是:eth0 < ntc9.1165 > router.telnet。

-O 不进行匹配代码的优化。
-t 不打印UNIX时间戳,也就是不显示时间。
-tt 打印原始的、未格式化过的时间。
-v 详细的输出,也就比普通的多了个TTL和服务类型。