传输层(transport layer)的作用
完成端到端的信息传输
传输层常用的协议
tcp(Transmission Control Protocol ) , udp
tcp协议
tcp协议头
tcp 协议三次握手
- 客户端将SYN标志位置为1,并发送一个随机序列号A,然后进入SYN-SEND状态。
- 服务器端发送SYN和ACK标志位,并发送一个随机序列号B和一个ACK序列号A+1到客户端,然后进入SYN-RECEIVED状态
- 客户端发送ACK标志位到服务器端,并发送一个序列号B+1,客户端进入ESTABLISH状态,服务器端收到确认后也进入ESTABLISH状态
SYN—SEND:客户端在发送完连接请求后,等待对方的连接请求
SYN—RECEIVED:服务器端在收到SYN请求后,发送一个ACK确认信息和一个SYN请求信息,等待客户端确认
ESTABLISH:可以进行数据传输的状态
tcp 协议四次挥手
- 发送端发送FIN数据包,请求接收端断开连接,发送端进入FIN-WAIT1状态
- 接收端接收FIN数据包后,发送ACK数据包,进入CLOSE-WAIT状态,再发送FIN数据包,进入LAST—ACK状态
- 发送端接收到ACK包后进入FIN-WAIT2状态,发送端接收到FIN包后进入TIME-WAIT状态
- 发送端等待2MSL后进入CLOSED状态,接收端接收到发送端的ACK确认后进入CLOSED状态
FIN-WAIT1:等待一个结束请求或者一个前面发送的结束请求的确认
CLOSE-WAIT:等待本地发送中断请求FIN
LAST-ACK:等待先前发送的FIN信息的确认信息
FIN-WAIT2:等待对端发送的中断请求
TIME-WAIT:等待足够的时间确保对端能收到FIN的确认信息
MSL(Maximum Segment Lifetime):保证服务器端收到ack数据包
常见TCP攻击方式
syn 洪水攻击
客户机向服务器发送SYN数据包,并伪造源IP地址,服务器在收到SYN数据包时,会将连接加入SYN QUEUE,并向源IP发送SYN-ACK数据包,并等待ACK数据包,以完成三次握手建立连接。 由于源IP地址是伪造的不存在主机IP,所以服务器无法收到ACK数据包,并会不断重发,同时SYN QUEUE队列被不断被攻击的SYN连接占满,导致无法处理正常的连接 并在服务器端出现大量的SYN-RECEIVED状态
此时服务器端的syslog会报错
kernel: [3649830.269068] TCP: Possible SYN flooding on port 9999. Sending cookies.
解决办法:
- 内核级方法: 开启服务器syn-cookies 减少SYN-ACK数据包的重发次数 增加SYN QUEUE 队列
vim /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
#开启syncookies,其作用是检查客户端能否收到服务器端的ACK包,如果无法收到则舍弃客户端的syn包
net.core.somaxconn = 10240
#The maximum number of connections that can be queued for acceptance
net.ipv4.tcp_max_syn_backlog = 8192
# ?How many half-open connections for which the client has not yet sent an ACK response can be kept in the queue
net.core.netdev_max_backlog = 8192
#The maximum number of packets in the receive queue that passed through the network interface and are waiting to be processed by the kernel.
net.ipv4.tcp_syn_retries=3
#设置ACK重传次数为3,默认为5
参考:https://serverfault.com/questions/875035/sane-value-for-net-ipv4-tcp-max-syn-backlog-in-sysctl-conf
- 脚本方法封禁IP,详情请查看DDoS deflate使用
下载DDoS deflate安装脚本,并执行安装。
[root@t ~]# wget http://www.inetbase.com/scripts/ddos/install.sh
[root@t ~]# chmod 0700 install.sh
[root@t ~]# ./install.sh
- 防火墙方法
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT --limit 1/s
#限制单个IP每秒syn并发
- 硬件防火墙方法
硬件防火墙可设置
- 购买高防服务器
在各大云上均有卖
- 提高自己的服务器数量
当服务器吞吐能力大于攻击能力时,就防御了攻击(钱多的企业可以搞)
本文暂时没有评论,来添加一个吧(●'◡'●)