`
frank1998819
  • 浏览: 758348 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

CentOS防SYN攻击(转)

 
阅读更多
netstat -anp |awk '{print $6}'|sort|uniq -c |sort -rn

172 ESTABLISHED

  59 CONNECTED

  589 SYN_RECV

  15 STREAM

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

[root@tweb ~]# 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配置:

 [root@web ~]# 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连接次数的尽量少。

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

复制代码
[root@web ~]# 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连接:

[root@web ~]# 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连接数已经下来了

 

分享到:
评论

相关推荐

    CentOS解决服务器存在大量time_wait的问题

    5. `net.ipv4.tcp_syncookies`:启用SYN Cookies,防止SYN攻击。 6. `net.ipv4.tcp_tw_reuse`:允许重用TIME_WAIT状态的连接,加速新连接的建立。 7. `net.ipv4.tcp_tw_recycle`:开启TIME_WAIT连接的快速回收。 8. ...

    防御DDoS攻击实用指南 守住你的网站

    1. SYN/ACK Flood攻击:利用伪造的SYN或ACK包发起攻击,使服务器陷入持续的SYN队列中,无法处理新的连接请求。 2. ICMP Flood:通过发送大量ICMP回显请求,耗尽目标的带宽和CPU资源。 3. UDP Flood:利用UDP协议的无...

    Centos5服务器优化

    设置`net.ipv4.tcp_syncookies = 1` 可防止SYN Flood攻击,并通过 `sysctl -p` 应用更改。 **配置YUM**以保持软件更新是很关键的。导入RPM-GPG-KEY-CentOS-5并列出所有可用包,记录在 `/etc/yum.list` 文件中。同时...

    centos7.5线上系统基本优化.docx

    - **net.ipv4.tcp_syncookies=1**: 在SYN等待队列溢出时启用SYN cookies机制,这可以有效防止SYN泛洪攻击。 - **net.ipv4.tcp_max_tw_buckets=6000**: 设置TIME_WAIT状态的最大桶数。减小该数值可以减少内存占用,但...

    基于Linux的小型网络入侵检测防御系统的设计.pdf

    1. Synflood 攻击:属于 DoS 攻击的一种,是最基本的入侵攻击手段之一,也是最难对付的入侵攻击手段。 2. Ping Flood 攻击:原理是由于操作系统等对传输文件包的长度有限制,当发送者产生长度超过 64Kb 的文件包时,...

    centos_mysql

    - `net.ipv4.tcp_max_syn_backlog`: 限制SYN等待队列的长度,防止过多的半连接导致拒绝服务攻击,设置为65535。 - `net.ipv4.tcp_fin_timeout`: 控制TCP连接的FIN_TIMEOUT时间,设为10秒以快速释放连接。 - `...

    centos redhat系列对抗ddos之居家必备利器 banip.txt

    BanIP.txt 是一个简单但高效的工具,能够帮助 CentOS 和 RedHat 系统管理员有效地抵御 DDoS 攻击。通过定期检查网络连接状态并对异常 IP 进行屏蔽,它能够在一定程度上减轻攻击者的影响,保护服务器资源不被恶意消耗...

    Linux服务器安全前奏.pdf

    还有其他内核参数如SYN Cookies设置可防止SYN洪水攻击。 总的来说,确保Linux服务器安全涉及多个层面:选择安全的发行版,合理规划文件权限,控制软件安装,管理用户权限,监控和服务优化,以及内核参数的调整。...

    oracle linux 7.6 下oracle 19c (19.3.0)静默安装.pdf

    然后,需要修改内核参数以满足数据库安装的要求,例如关闭IP转发,开启TCP SYN Cookies以防止SYN洪水攻击,设置共享内存和消息队列的大小等。通过编辑`/etc/sysctl.conf`和`/etc/security/limits.conf`文件,调整...

    linux sysctl参数配置详细介绍

    8. **net.ipv4.tcp_syncookies** - 当SYN攻击发生时,TCP syncookies机制可以防止资源耗尽。设置为1表示启用。 9. **net.core.somaxconn** - 控制套接字监听队列的最大长度。增加这个值可以处理更多的并发连接请求...

    Linux Bash漏洞详细说明

    Shellshock漏洞影响所有安装了GNU Bash版本4.3或更低的Linux操作系统,包括但不限于Red Hat Enterprise Linux、Fedora、CentOS、Ubuntu、Debian以及Oracle Linux等。此外,由于许多网络服务(如OpenSSH、Apache HTTP...

    LAMP平台安装(注册版)

    - **调整TCP/IP网络参数**:为了提高系统的安全性,可以通过编辑`/etc/sysctl.conf`文件来增强对抗SYN Flood攻击的能力。例如,增加以下行:`net.ipv4.tcp_syncookies = 1`。 - **配置yum**:在CentOS中,通过`yum`...

    sysctl:LinuxBSD内核调整和网络安全强化优化,通过优化的sysctl调整提高了服务器系统的性能

    1. **TCP/IP堆栈安全**:可以通过限制SYN队列长度、启用SYN cookies等措施防止DDoS攻击。例如,`net.ipv4.tcp_syncookies = 1`启用SYN cookies,`net.ipv4.tcp_max_syn_backlog = 2048`设定SYN队列的最大长度。 2. *...

    Mysql最佳实践32条

    推荐使用64位版本的CentOS或Ubuntu,其中Oracle提供的UEK内核也是不错的选择,因为它针对数据库操作进行了优化。对于文件系统,建议使用xfs或ext4,避免使用网络文件系统NFS来存放数据目录。 MySQL版本的选择也会...

    在Linux中使用tcpdump命令捕获与分析数据包详解

    在网络安全领域,tcpdump常用于检测异常活动,例如检查是否存在SYN洪水攻击或端口扫描。在网络故障排查中,它可以帮助定位数据包丢失、延迟或路由问题。 总的来说,tcpdump是Linux系统中不可或缺的网络诊断工具,它...

Global site tag (gtag.js) - Google Analytics