设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

QQ登录

只需一步,快速开始

#公告#抱歉,网站将关闭,不再开放。由于PC时代已远逝 。在这个后移动互联网时代,我们继续携手前行,保持对技术的热情。共同构建linuxtone知识星球欢迎加入,一起讨论技术、招聘人才、分享资源。请新老linuxtone人 扫码移步到 知识星球:linuxtone

学习是一种信仰!分享是一种快乐!能力= 心态 * 沟通 * 知识 (你的每一天需要正能量!)

 网站的发展需要你贡献一份力量!希望你能每天坚持看贴1小时,并回答网友的问题!祝你在浏览论坛的过程中取得进步!谢谢!linuxtone加油!大家加油! 友情提示: 你今天学习了吗?你今天进步了吗?少一点抱怨!多一点进步!Life is short ! Why not linuxtone ?  

网站的发展、感谢每位坛友的努力!

查看: 4794|回复: 12

[系统安全] 看我linux如何防SYN攻击,挺实用的   [复制链接]

论坛元老

小兵

Rank: 8Rank: 8

签到
190
注册时间
2010-10-9
最后登录
2013-5-22
在线时间
250 小时
阅读权限
90
积分
16049
帖子
104
主题
14
精华
1
UID
10553
发表于 2011-12-30 20:13:18 |显示全部楼层
今天早上一到公司登录公司官网的时候感觉挺慢,登录服务器查看官网访问情况:

[root@web ~]# 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

570 x.x.x.x   

(ip就不写出了,是山东枣庄联通的一个ip),只是这一个ip就发出了这么多的syn请求连接,本来我们web服务器的并发数不是很高,这样一来正常的用户请求得不到相应,页面无法打开。因为硬件防火墙归集团IT部管理,我没有权限,所以只能在本地服务器上做些措施对SYN攻击进行部分减缓。

首先说一下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状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.
102439371.jpg



如果用户与服务器发起连接请求只进行到第二次握手而不再响应服务器,服务器就会不停地等待用户的确认,如果过多这样的连接就会把服务器端的连接队列占满就会导致正常的用户无法建立连接。所以我们直接从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连接数已经下来了。



本文出自 “赵海华_运维之路” 博客,请务必保留此出处http://baiying.blog.51cto.com/1068039/702840
相信outhink
http://outhink.blog.51cto.com
不是路不平,只是你不行。

Rank: 8Rank: 8

注册时间
2010-12-26
最后登录
2015-12-4
在线时间
211 小时
阅读权限
90
积分
43202
帖子
158
主题
1
精华
0
UID
11579
发表于 2011-12-30 22:09:59 |显示全部楼层
偷学了~~

使用道具 举报

Rank: 8Rank: 8

注册时间
2011-8-20
最后登录
2015-8-10
在线时间
80 小时
阅读权限
90
积分
22802
帖子
58
主题
4
精华
0
UID
15466
发表于 2011-12-31 09:05:22 |显示全部楼层
  这个好必须顶

使用道具 举报

Rank: 8Rank: 8

注册时间
2010-10-28
最后登录
2016-5-11
在线时间
425 小时
阅读权限
90
积分
66021
帖子
172
主题
0
精华
0
UID
9454
发表于 2011-12-31 10:24:15 |显示全部楼层
不错,很给力,谢谢!

使用道具 举报

论坛元老

~~IT公司打杂的&&LT社区划水的~~

Rank: 8Rank: 8

注册时间
2010-11-4
最后登录
2017-6-14
在线时间
594 小时
阅读权限
90
积分
41055
帖子
554
主题
7
精华
0
UID
10809
发表于 2011-12-31 11:27:49 |显示全部楼层
好东西~~收藏额了
~~开心快乐每一天~~

使用道具 举报

Rank: 6Rank: 6

注册时间
2011-12-16
最后登录
2014-10-16
在线时间
42 小时
阅读权限
70
积分
6526
帖子
76
主题
2
精华
0
UID
16684
发表于 2011-12-31 12:16:58 |显示全部楼层
理论与实践结合,不错.....


www.yaukb.com
<-sina_sign,2254244150,9d7efb47,4->

使用道具 举报

论坛元老

深呼吸

Rank: 8Rank: 8

注册时间
2011-6-30
最后登录
2014-5-11
在线时间
112 小时
阅读权限
90
积分
34853
帖子
190
主题
3
精华
0
UID
14772
发表于 2011-12-31 13:55:26 |显示全部楼层
受教了~~~
<-sina_sign,2469594384,dc5f828b,1->

使用道具 举报

Rank: 8Rank: 8

注册时间
2010-6-6
最后登录
2016-3-7
在线时间
77 小时
阅读权限
90
积分
14158
帖子
100
主题
8
精华
0
UID
9462
发表于 2011-12-31 14:03:16 |显示全部楼层
我认为扫描基本都是基于icmp,对外禁掉icmp不更省事。

使用道具 举报

Rank: 8Rank: 8

注册时间
2011-2-22
最后登录
2015-1-30
在线时间
132 小时
阅读权限
90
积分
31714
帖子
72
主题
2
精华
0
UID
12113
发表于 2012-1-1 01:34:10 |显示全部楼层
mark ,,,,,,,,,

使用道具 举报

Rank: 8Rank: 8

注册时间
2010-8-18
最后登录
2020-5-13
在线时间
2675 小时
阅读权限
90
积分
18983
帖子
1200
主题
1142
精华
0
UID
10137
发表于 2012-1-4 15:53:41 |显示全部楼层
不错哦,学习了

使用道具 举报

Rank: 8Rank: 8

注册时间
2010-7-7
最后登录
2019-7-22
在线时间
72 小时
阅读权限
90
积分
13316
帖子
89
主题
7
精华
0
UID
9740
发表于 2012-1-4 20:21:29 |显示全部楼层
mark。。。
黑影子博客:http://darkz.co

使用道具 举报

Rank: 6Rank: 6

注册时间
2009-6-18
最后登录
2017-1-4
在线时间
21 小时
阅读权限
70
积分
5251
帖子
30
主题
4
精华
0
UID
3674
发表于 2012-1-6 09:43:31 |显示全部楼层
sysctl的优化也可以添加到/etc/sysctl.conf 文件中,执行sysctl -p可以生效参数,每次系统重启也是生效的。

建议你的net.ipv4.tcp_max_syn_backlog值扩大,下次如果不是单个IP  SYN你,是否这个队列值就不够了?被SYN之后带来的流量现象服务器会发给客户端大量SYN+ACK包,服务器上行流量会变的很高。

使用道具 举报

Rank: 6Rank: 6

注册时间
2013-11-16
最后登录
2015-3-10
在线时间
15 小时
阅读权限
70
积分
3466
帖子
11
主题
0
精华
0
UID
40287
发表于 2014-1-13 21:02:43 |显示全部楼层
真的很给力受教了啊!

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢您的支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2020-6-5 10:08 , Processed in 0.027892 second(s), 16 queries , Apc On.

Powered by Discuz! X2 Licensed

© 2001-2011 Comsenz Inc.

回顶部