测试网络连通性 ping
显示正确的路由表
跟踪路由
确定名称服务器使用
抓包工具 tcpdump wireshark
安全扫描工具
流量控制工具
fping
相对于ping多个主机时性能要高得多。 fping完全不同于ping,可以在命令行上定义任意数量的主机,或者指定包含要ping的IP地址或主机列表的文件, 常在shell 脚本中使用
[root@centos8 ~]#yum -y install fping[root@centos8 ~]#fping 10.0.0.710.0.0.7 is alive[root@centos7 ~]#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all[root@centos8 ~]#fping 10.0.0.710.0.0.7 is unreachable[root@centos8 ~]#fping 10.0.0.710.0.0.7 is unreachable[root@centos8 ~]#fping 10.0.0.7 10.0.0.810.0.0.8 is alive10.0.0.7 is unreachable#-g 选项可以指定网段或地址范围[root@centos8 ~]#fping -g 10.0.0.0/2410.0.0.1 is alive10.0.0.2 is alive10.0.0.8 is alive10.0.0.100 is aliveICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.3ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.3ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.6ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.6......[root@cent#对文件中的主机时行测试[root@centos8 ~]#tee hosts.txt <<EOF10.0.0.710.0.0.6EOF10.0.0.710.0.0.6[root@centos8 ~]#fping < hosts.txt10.0.0.6 is alive10.0.0.7 is unreachable
tcpdump
网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。
语法:
tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]参数说明:-a 尝试将网络和广播地址转换成名称。-c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。-e 在每列倾倒资料上显示连接层级的文件头。-f 用数字显示网际网络地址。-F<表达文件> 指定内含表达方式的文件。-i<网络接口> 使用指定的网络截面送出数据包。-l 使用标准输出列的缓冲区。-n 不把主机的网络地址转换成名字。-N 不列出域名-O 不将数据包编码最佳化。-p 不让网络界面进入混杂模式。-q 快速输出,仅列出少数的传输协议信息。-r<数据包文件> 从指定的文件读取数据包数据。-s<数据包大小> 设置每个数据包的大小。-S 用绝对而非相对数值列出TCP关联数。-t 在每列倾倒资料上不显示时间戳记。-tt 在每列倾倒资料上显示未经格式化的时间戳记。-T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。-v 详细显示指令执行过程。-vv 更详细显示指令执行过程。-x 用十六进制字码列出数据包资料。-w<数据包文件> 把数据包数据写入指定的文件。
#查看网卡[root@centos8 ~]#tcpdump -D1.eth0 [Up, Running]2.lo [Up, Running, Loopback]3.any (Pseudo-device that captures on all interfaces) [Up, Running]4.bluetooth-monitor (Bluetooth Linux Monitor) [none]5.nflog (Linux netfilter log (NFLOG) interface) [none]6.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none]7.usbmon0 (All USB buses) [none]8.usbmon1 (USB bus number 1) 9.usbmon2 (USB bus number 2) #不指定任何参数,监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡。tcpdump#监听特定网卡tcpdump -i en0#监听特定主机,监听主机10.0.0.100 的通信包,注意:出、入的包都会被监听。tcpdump host 10.0.0.100#特定来源、目标地址的通信#特定来源tcpdump src host hostname#特定目标地址tcpdump dst host hostname#如果不指定src跟dst,那么来源或者目标是hostname的通信都会被监听tcpdump host hostname#面试题[root@centos8 ~]#tcpdump -i eth0 -nn icmp and src host 10.0.0.6 and dst host 10.0.0.7#特定端口tcpdump port 3000#监听TCP/UDP,服务器上不同服务分别用了TCP、UDP作为传输层,假如只想监听TCP的数据包tcpdump tcp#来源主机+端口+TCP,监听来自主机10.0.0.100在端口22上的TCP数据包tcpdump tcp port 22 and src host 10.0.0.100#监听特定主机之间的通信tcpdump ip host 10.0.0.101 and 10.0.0.102#10.0.0.101和除了10.0.0.1之外的主机之间的通信tcpdump ip host 10.0.0.101 and ! 10.0.0.1#详细示例tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24-w ./target.cap(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型(2)-i eth1 : 只抓经过接口eth1的包(3)-t : 不显示时间戳(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包(5)-c 100 : 只抓取100个数据包(6)dst port ! 22 : 不抓取目标端口是22的数据包(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24(8)-w ./target.cap : 保存成cap文件,方便用wireshark分析#限制抓包的数量,如下,抓到1000个包后,自动退出tcpdump -c 1000#保存到本地,tcpdump默认会将输出写到缓冲区,只有缓冲区内容达到一定的大小,或者tcpdump退出时,才会将输出写到本地磁盘,可以加上-U强制立即写到本地磁盘(一般不建议,性能相对较差)tcpdump -n -vvv -c 1000 -w /tmp/tcpdump_save.cap
nmap
扫描远程主机工具,功能远超越用世人皆知的 Ping 工具发送简单的 ICMP 回声请求报文
nmap [Scan Type(s)] [Options] {target specification}命令选项-sT TCP connect() 扫描,这是最基本的 TCP 扫描方式。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息-sS TCP 同步扫描 (TCP SYN),因为不必全部打开一个 TCP 连接,所以这项技术通常称为半开扫描(half-open)。这项技术最大的好处是,很少有系统能够把这记入系统日志-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 服务器做代理,接着进行端口扫描。-P0 在扫描之前,不 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 <IP> 在一些情况下,nmap 可能无法确定你的源地址 。在这种情况使用这个选项给出指定 IP 地 址-g port 设置扫描的源端口-oN 把扫描结果重定向到一个可读的文件 logfilename 中-oS 扫描结果输出到标准输出。--host_timeout 设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有超时限制--max_rtt_timeout 设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超时。默认值是大约 9000 毫秒--min_rtt_timeout 设置 nmap 对每次探测至少等待你指定的时间,以毫秒为单位-M count 置进行 TCP connect() 扫描时,最多使用多少个套接字进行并行的扫描
范例:
#Tcp ack 扫描,并发2000,速度快nmap -n -PA --min-parallelism 2000 172.16.0.0/16#仅列出指定网段上的每台主机,不发送任何报文到目标主机.[root@centos8 ~]#nmap -sL 10.0.0.0/24Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-23 12:28 CSTNmap scan report for 10.0.0.0Nmap scan report for 10.0.0.1......Nmap scan report for 10.0.0.254Nmap scan report for 10.0.0.255Nmap done: 256 IP addresses (0 hosts up) scanned in 1.04 seconds#可以指定一个IP地址范围[root@centos8 ~]#nmap -sP 10.0.0.1-10#批量扫描一个网段的主机存活数nmap -sP -v 192.168.1.0/24nmap –v –sn ip/24#有些主机关闭了ping检测,所以可以使用-P0跳过ping的探测,可以加快扫描速度.nmap -P0 192.168.1.100#扫描主机nmap –v –A IP#一次性扫描多台目标主机[root@centos8 ~]#nmap 10.0.0.6 10.0.0.7#从一个文件中导入IP地址,并进行扫描[root@centos8 ~]#cat hosts.txt10.0.0.710.0.0.658.87.87.99[root@centos8 ~]#nmap -iL hosts.txt#探测目标主机开放的端口,可指定一个以逗号分隔的端口列表(如-PS22,443,80)[root@centos8 ~]#nmap -PS22,80,443 10.0.0.1#使用SYN半开放扫描[root@centos8 ~]#nmap -sS 10.0.0.1#只扫描UDP端口nmap –e eth1 -sU -O 10.0.0.1#扫描TCP和UDP端口nmap -sTU -O 10.0.0.1查看主机当前开放的端口nmap localhost#查看主机端口(1024-65535)中开放的端口nmap -p 1024-65535 localhost#探测目标主机开放的端口nmap -PS 10.0.0.1#探测所列出的目标主机端口nmap -PS22,80,3306 10.0.0.1#探测目标主机操作系统类型nmap -O 10.0.0.1#探测目标主机操作系统类型nmap -A 10.0.0.1
