找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 20546|回复: 1

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

[复制链接]
发表于 2013-3-25 18:14:52 | 显示全部楼层 |阅读模式
目前对DNS服务器的攻击基本都是假冒IP的潮水攻击。普通情况下,DNS查询是UDP协议,无需像TCP那样的三次握手过程,因此DNS服务器无法识别请求包里的源IP是否真实有效。如果大量的假冒IP进行攻击,就造成名字服务器要么计算资源耗尽,要么带宽耗尽,从而拒绝服务。
3 i$ k3 H8 Y3 w9 ^' u3 |3 c' \由于客户端是假冒IP,因此DNS服务器端的安全策略,例如DNS RRL、或者iptables,都作用不大。唯一有效的方式是从源头制止这种攻击,即各ISP、IDC都要严格执行BCP 38,拒绝非本网络的源IP对外发起请求。
0 O& K+ O& `# a! h7 ]" ^
& x! {" q4 [& q3 J/ z9 v  q- |除了直接攻击DNS服务器外,还有一种情况是DNS服务器被利用来攻击别人。如果攻击者想攻击某个站点,他假冒这个站点的IP,对互联网上开放的DNS服务器发起查询,DNS服务器会将查询应答包返回给站点IP。由于开放的DNS服务器数量众多(比如运营商的递归服务器、各个公司自己的权威服务器),假如攻击者同时往1000台DNS服务器发起查询,那么1000个服务器的返回包到达后,巨大的流量直接把目标站点干掉。示意图请见:
8 v' P7 b5 ?0 o$ ^) z8 X- v& w( v* C2 r- I& z
这种情况下,可以利用RRL、iptables来保护自己的名字服务器免被攻击者利用来攻击别人。1 R+ c4 W% |+ h7 ?0 ]5 ]
一个简单的iptables规则可以如下:& q. }0 D; o" M, `- x  L
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –set
3 Q/ n6 z' V( tiptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –update –seconds 60 –hitcount 1000 -j DROP: l. H0 j+ i* c
上述规则的作用是,如果在1分钟内对DNS的查询频率超过1000次,就拦截掉该源IP。5 p2 |% h% ^+ b  U& X) A" y/ Q

9 Q3 t2 P9 N( N0 v- @" z- E- z原文:http://www.nsbeta.info/archives/389

本帖子中包含更多资源

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

×
 楼主| 发表于 2013-3-25 19:09:04 | 显示全部楼层
上面的脚本貌似有问题:看这里解决:* r5 f8 }, E+ g) \- N; I
    当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。
; F& g7 \! q$ `& C1.系统要求
! B+ r1 Y* ]) n2 j  M# E( D; T6 c0 t5 b! B8 f4 H* J3 x, h
(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。7 c; o, c( c3 `3 R

* r( {6 s  T, \  E(2)iptables版本:1.3.7( o1 p* E  w$ L; J3 B
8 p/ _# @7 S  j. L8 R1 o
2. 安装; i) W0 t4 \0 T
4 b, I/ _: y# k: l
安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit
" u; W7 H2 a4 ^- m( o4 ~9 J! \
. ?& Q# h; n6 i; {3. 配置相应的iptables规则
: Z& u% i. [$ y# h! C7 y2 y6 ^) @* G  Z, j- J
示例如下:! a2 U" h) W: P/ A0 R' c3 Y, a) V; d

5 g( n  R) K' L9 ^& F(1)控制单个IP的最大并发连接数- S* g0 |$ o! b1 W1 `$ `

+ f0 M- a$ N- Wiptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30
% Q: l( |8 ?1 k3 Q: C! R2 T2 Y(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数: [/ Y" E8 O4 D
1 R! \. y. n- |7 l6 x4 n% V" r) _
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个连接
9 t3 A) b) ?. k% `+ E; @8 E% K! X: r4. 验证& A! h- p! s$ O8 \& X7 X' A& B3 [) @
4 L+ }/ p$ _7 B1 P7 q' J* p
(1)工具:flood_connect.c(用来模拟攻击)8 T- U6 f8 M' R& D$ ]
7 K- s- \2 s( e/ f- F
(2)查看效果:* a& ]0 Z! H; `/ V" e4 y! z
# Q8 A. G2 z. \- z# N
使用& ~5 }4 c5 X* P9 k0 E! N

' x3 Q2 n3 F) i' J& ?watch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'
: W+ f: {* m, Q& m6 R( V实时查看模拟攻击客户机建立起来的连接数,' z" {# [2 K3 g! Y$ T7 Q

- V) y3 N2 H/ {6 v& r8 d7 d* s( ~使用
8 T- Z7 l  o: z4 q) V6 k: x' q+ y  |& R/ \4 ]1 _+ C. C) E
watch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'
6 O5 g) U4 q! q4 @9 b% W; m, H查看模拟攻击客户机被 DROP 的数据包数。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-24 17:47 , Processed in 0.030521 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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