CentOS防SYN攻击

netstat -anp |awk ‘{print $6}‘|sort|uniq -c |sort -rn

172 ESTABLISHED

  59 CONNECTED

  589 SYN_RECV

  15 STREAM

SYN居然这么高,继续追查是那些ip发出的SYN:

[[email protected] ~]# netstat -an | grep SYN | awk ‘{print $5}‘ | awk -F: ‘{print $1}‘ | sort | uniq -c | sort -nr | more

首先说一下SYN的攻击原理:

  在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

  第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

  第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

  第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.

如果用户与服务器发起连接请求只进行到第二次握手而不再响应服务器,服务器就会不停地等待用户的确认,如果过多这样的连接就会把服务器端的连接队列占满就会导致正常的用户无法建立连接。所以我们直接从SYN的连接上进行如下改动:

  查看linux默认的syn配置:

 [[email protected] ~]# sysctl -a | grep _syn

net.ipv4.tcp_max_syn_backlog = 1024

  net.ipv4.tcp_syncookies = 1

  net.ipv4.tcp_synack_retries = 5

  net.ipv4.tcp_syn_retries = 5

  tcp_max_syn_backlog 是SYN队列的长度,加大SYN队列长度可以容纳更多等待连接的网络连接数。tcp_syncookies是一个开关,是否打开SYN Cookie 功能,该功能可以防止部分SYN攻击。tcp_synack_retries和tcp_syn_retries定义SYN 的重试连接次数,将默认的参数减小来控制SYN连接次数的尽量少。

  以下是我修改后的参数,可以根据自己服务器的实际情况进行修改:

[[email protected] ~]# more /etc/rc.d/rc.local
  #!/bin/sh
  # This script will be executed *after* all the other init scripts.
  # You can put your own initialization stuff in here if you don‘t
  # want to do the full Sys V style init stuff.
  touch /var/lock/subsys/local
  ulimit -HSn 65535
  /usr/local/apache2/bin/apachectl start
  #####
  sysctl -w net.ipv4.tcp_max_syn_backlog=2048
  sysctl -w net.ipv4.tcp_syncookies=1
  sysctl -w net.ipv4.tcp_synack_retries=3
  sysctl -w net.ipv4.tcp_syn_retries=3

为了不重启服务器而使配置立即生效,可以执行

#sysctl -w net.ipv4.tcp_max_syn_backlog=2048
  #sysctl -w net.ipv4.tcp_syncookies=1
  #sysctl -w net.ipv4.tcp_synack_retries=3
  #sysctl -w net.ipv4.tcp_syn_retries=3

也有的人喜欢用访问控制列表来防止SYN的攻击,在一定程度上减缓了syn的攻击:

  Syn 洪水攻击

#iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
  --limit 1/s 限制syn并发数每秒1次

防端口扫描

 # iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

死亡之ping

# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
#>iptables-save >/etc/sysconfig/iptables

进行查看,#iptables -L

ACCEPT tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN limit: avg 1/sec burst 5

ACCEPT tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/RST limit: avg 1/sec burst 5

ACCEPT icmp -- anywhere anywhere icmp echo-request limit: avg 1/sec burst 5

再次进行查看syn连接:

[[email protected] ~]# netstat -an | grep SYN | awk ‘{print $5}‘ | awk -F: ‘{print $1}‘ | sort | uniq -c | sort -nr | more
  20 10.92.10.220
  1 125.43.36.199

明显SYN连接数已经下来了

时间: 2024-10-29 04:05:11

CentOS防SYN攻击的相关文章

看我linux如何防SYN攻击

[[email protected] ~]# netstat -anp |awk '{print $6}'|sort|uniq -c |sort -rn 172 ESTABLISHED 59 CONNECTED 589 SYN_RECV 15 STREAM SYN居然这么高,继续追查是那些ip发出的SYN: [[email protected] ~]# netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort

Linux/CentOS防CC攻击脚本

#!/bin/sh cd /var/log/httpd/ cat access_log|awk '{print $1}'|sort|uniq -c|sort -n -r|head -n 20 > a cp /dev/null access_log cp /dev/null error_log cp /dev/null limit.sh cp /dev/null c #awk '{print $2}' a|awk -F. '{print $1"."$2"."$3

浅谈iptables防SYN Flood攻击和CC攻击

------------------------本人为自己实践所总结,概念性的东西不全,这里粗劣提下而已,网上很多,本文主要说下目前较流行的syn洪水攻击和cc攻击------------------------------------- 何为syn flood攻击: SYN Flood是一种广为人知的DoS(拒绝服务攻击)是DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式(TCP协议

Linux防SYN Flood攻击

抵御SYN SYN攻击是利用TCP/IP协议3次握手的原理,发送大量的建立连接的网络包,但不实际 建立连接,最终导致被攻击服务器的网络队列被占满,无法被正常用户访问. Linux内核提供了若干SYN相关的配置,用命令: sysctl -a | grep syn 看到: net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.tcp_syncookies = 0 net.ipv4.tcp_synack_retries = 5 net.ipv4.tcp_syn_re

OpenResty(nginx扩展)实现防cc攻击

OpenResty(nginx扩展)实现防cc攻击 导读 OpenResty 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台.这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统 流程图 本文介绍使用openresty来实现防cc攻击的功能.ope

防cc攻击利器之httpgrard

一.httpgrard介绍 HttpGuard是基于openresty,以lua脚本语言开发的防cc攻击软件.而openresty是集成了高性能web服务器Nginx,以及一系列的Nginx模块,这其中最重要的,也是我们主要用到的nginx lua模块.HttpGuard基于nginx lua开发,继承了nginx高并发,高性能的特点,可以以非常小的性能损耗来防范大规模的cc攻击. 1.1 httpgrard防cc特效 限制访客在一定时间内的请求次数 向访客发送302转向响应头来识别恶意用户,并

增强VPS SSH账号安全:改端口,禁用Root,密钥登录,Denyhosts防暴力攻击

VPS SSH账号是我们日常管理VPS的主要登入方式,尤其是Root账号,对Linux系统安全至关重要.以前好多站长喜欢用Putty中文版,这实际是别人修改官方Putty汉化而来,这些软件被植入了后门,导致好几个有名的站点信息泄露,损失惨重. 如何知道自己的VPS账号正在遭受坏人的扫描和暴力破解呢?简单的方法就是查看日志:cat /var/log/auth.log.如何来增强VPS SSH账号的安全性呢?除了养成使用正规软件的好习惯外,还要从VPS本身来加强VPS SSH账号的安全性. 默认的S

CDN防DDoS攻击

随着近年来来网络技术的不断进步,CDN已经不只简单的用做网站加速,还能够更好的保护网站不被攻击.Cdn在相关节点中成功的建立动态加速机制以及智能沉于等机制,这种机制能够帮助网站流量访问分配到每一个节点中,智能的进行流量分配机制.如果cdn存在被ddos攻击的情况,Cdn整个系统就能够将被攻击的流量分散开,节省了站点服务器的压力以及节点压力.同时还能够增强网站被黑客给攻击的难度,真正帮助服务管理人员提供更多应该被攻击的时间,cdn能有效的防止ddos攻击,降低对网站带来的危害. 但是CDN防ddo

CNware防DDOS攻击介绍

近年来随着互联网带宽的不断增加,加上越来越多的DDOS黑客工具的发布,DDOS攻击的发起难度越来越低,DDOS攻击事件也处于上升趋势,这给互联网安全带来巨大的威胁.为了应对DDOS攻击,网络服务商非常注重防御来自外部的DDOS流量,包括购置防火墙,提高网络带宽等,投入了巨大的成本.这种属于"被动安全",即防止被他人从外部攻击.但在防御的过程中,有一个地方却一直被大多数服务商所忽略,那就是从IDC机房内部发起的DDOS攻击.如何主动抑制从内部发起的攻击,是"主动安全"