找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 17195|回复: 1

利用iptables防攻击的简单例子!dns如何被利用的?

[复制链接]
发表于 2013-3-25 18:14:52 | 显示全部楼层 |阅读模式
目前对DNS服务器的攻击基本都是假冒IP的潮水攻击。普通情况下,DNS查询是UDP协议,无需像TCP那样的三次握手过程,因此DNS服务器无法识别请求包里的源IP是否真实有效。如果大量的假冒IP进行攻击,就造成名字服务器要么计算资源耗尽,要么带宽耗尽,从而拒绝服务。
5 U, e7 g* K# z8 F1 ^1 _由于客户端是假冒IP,因此DNS服务器端的安全策略,例如DNS RRL、或者iptables,都作用不大。唯一有效的方式是从源头制止这种攻击,即各ISP、IDC都要严格执行BCP 38,拒绝非本网络的源IP对外发起请求。; @; ~7 Z4 p! f2 V

+ ]" t$ ~/ X( ?8 J除了直接攻击DNS服务器外,还有一种情况是DNS服务器被利用来攻击别人。如果攻击者想攻击某个站点,他假冒这个站点的IP,对互联网上开放的DNS服务器发起查询,DNS服务器会将查询应答包返回给站点IP。由于开放的DNS服务器数量众多(比如运营商的递归服务器、各个公司自己的权威服务器),假如攻击者同时往1000台DNS服务器发起查询,那么1000个服务器的返回包到达后,巨大的流量直接把目标站点干掉。示意图请见:
2 i- I# a3 q2 r# g$ K. D6 p7 I/ i9 j6 `4 C! m; X& d
这种情况下,可以利用RRL、iptables来保护自己的名字服务器免被攻击者利用来攻击别人。
2 \3 I+ C! o% H" M+ {3 a( J一个简单的iptables规则可以如下:; l" F' n) \. j
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –set
! z" ]/ J3 e6 l& V0 ciptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –update –seconds 60 –hitcount 1000 -j DROP
0 w: A: `  V  A. h1 m3 ?上述规则的作用是,如果在1分钟内对DNS的查询频率超过1000次,就拦截掉该源IP。
) D' D6 T, a- I- F  N7 b* [  `! [7 g' N( W! ^
原文:http://www.nsbeta.info/archives/389

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
 楼主| 发表于 2013-3-25 19:09:04 | 显示全部楼层
上面的脚本貌似有问题:看这里解决:
: f( v4 H- Y/ L1 K" n2 O2 T    当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。
' [- T( q% D+ S9 A( D2 @1.系统要求# H3 R7 \# Y. {9 Y6 U! o' R

1 x" }! i/ x' ?9 o) k- H4 Z$ k& \3 G(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。
. x9 x1 X8 u6 C6 P/ L/ d9 J. f# y0 k- k6 L# m- F
(2)iptables版本:1.3.7
& T# r0 _" M  D" ?+ T1 X: ]5 e0 u, [, _
2. 安装, e# V/ N4 G& f7 W: j) V' _' L6 n

: O" m# C. M7 n) ]. O1 z安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit
5 P# e$ f# H2 M" O* c- k0 z' M$ m9 Y% I4 M' o& H
3. 配置相应的iptables规则
) x& D% v7 _7 i. d, }
0 o9 N) ?6 b# P2 a0 X, l示例如下:
: @4 j* P! |) F9 C2 r: U( }2 F0 I1 J8 @9 ]% H& }
(1)控制单个IP的最大并发连接数
! }/ R, C. [- F! G2 Z% l; G# d+ t% }( S+ I5 n
iptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30
2 B& f- \8 q+ S: V(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数, X2 R( D: T* i8 W. M) k& Q1 X+ e( u; Q
0 w7 a! \3 s+ i4 ]
iptables -A INPUT -p tcp --dport 80 -m recent \ --name BAD_HTTP_ACCESS --update --seconds 60 \ --hitcount 30 -j REJECT iptables -A INPUT -p tcp --dport 80 -m recent \ --name BAD_HTTP_ACCESS --set -j ACCEPT #单个IP在60秒内只允许最多新建30个连接
& f5 L  h  k1 j* @" z4. 验证
) t# }4 J% J. ]  @, g$ F" K- M$ p5 p; Y0 R
(1)工具:flood_connect.c(用来模拟攻击)2 \  u) a' k  z* H+ ?$ y2 u

, v* `; M& h9 \+ K5 T1 T$ Y4 r(2)查看效果:  `- g% v0 M- J& b
1 P  v7 [6 A# c8 y! B; i. r, D- K0 V
使用
3 a0 R# Z& x& W! X
. o0 _( S; Q3 V; A8 Cwatch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'
" J& M% R1 y8 C$ K# x: l6 \; }8 |实时查看模拟攻击客户机建立起来的连接数,
1 S; r% V, t+ I7 M% Z! Y$ b: l; R# @& P! V9 x8 h
使用
6 m  u1 L8 c: H9 z; q2 \, G# @, H2 ~( z
watch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'% b3 F! W& Y% I. i6 F9 K
查看模拟攻击客户机被 DROP 的数据包数。
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|第一站论坛 ( 蜀ICP备06004864号-6 )

GMT+8, 2025-11-5 00:56 , Processed in 0.063793 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表