找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19765|回复: 1

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

[复制链接]
发表于 2013-3-25 18:14:52 | 显示全部楼层 |阅读模式
目前对DNS服务器的攻击基本都是假冒IP的潮水攻击。普通情况下,DNS查询是UDP协议,无需像TCP那样的三次握手过程,因此DNS服务器无法识别请求包里的源IP是否真实有效。如果大量的假冒IP进行攻击,就造成名字服务器要么计算资源耗尽,要么带宽耗尽,从而拒绝服务。
9 {6 l  a% m9 M/ y7 H' X+ e: l由于客户端是假冒IP,因此DNS服务器端的安全策略,例如DNS RRL、或者iptables,都作用不大。唯一有效的方式是从源头制止这种攻击,即各ISP、IDC都要严格执行BCP 38,拒绝非本网络的源IP对外发起请求。/ T- f+ v7 @+ `3 {1 R

$ B2 U4 p( I8 T% n除了直接攻击DNS服务器外,还有一种情况是DNS服务器被利用来攻击别人。如果攻击者想攻击某个站点,他假冒这个站点的IP,对互联网上开放的DNS服务器发起查询,DNS服务器会将查询应答包返回给站点IP。由于开放的DNS服务器数量众多(比如运营商的递归服务器、各个公司自己的权威服务器),假如攻击者同时往1000台DNS服务器发起查询,那么1000个服务器的返回包到达后,巨大的流量直接把目标站点干掉。示意图请见:* z; p9 _+ `4 j: O7 \7 Y
9 l( ?" s: t0 v# D: A$ e, F
这种情况下,可以利用RRL、iptables来保护自己的名字服务器免被攻击者利用来攻击别人。
+ p5 |" E' S! K一个简单的iptables规则可以如下:  w7 ~& P; T! P3 I; g! Q
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –set
* V6 r1 V3 q. k/ b9 _6 O9 Diptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –update –seconds 60 –hitcount 1000 -j DROP
. e" k. l+ h0 q. F. X: m, [9 M' u  C- }上述规则的作用是,如果在1分钟内对DNS的查询频率超过1000次,就拦截掉该源IP。# e% I; c% O8 V8 B9 y  n3 A
, m6 D/ T+ d! e6 z9 k6 A% a- v
原文:http://www.nsbeta.info/archives/389

本帖子中包含更多资源

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

×
 楼主| 发表于 2013-3-25 19:09:04 | 显示全部楼层
上面的脚本貌似有问题:看这里解决:1 o! X. \! w5 [1 d% {& V
    当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。
: P6 _- Y5 N, @! T# w1.系统要求
; @* E$ K4 c6 N7 C+ j6 l- h. i! b7 f  y( [8 V* s5 ^
(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。8 a! C1 S* l: \+ v  l+ s
1 a' T! V/ O) ]$ b3 U3 [' [$ Q5 K- Z
(2)iptables版本:1.3.74 H+ I5 W2 C& T9 q0 r

# @! I& F" i. d2 D- R, [# V2. 安装/ j' t4 F9 |2 d( `+ m/ L( ^. Q: [

( V& Y  u& ?3 ^0 X4 e6 d: l% x安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit
, w8 S4 ]& d3 H1 J* `2 g
$ _! a; Y; ?5 |7 @/ k6 k* G$ m3. 配置相应的iptables规则* U6 y& |9 X$ C  Q
+ t& Q- e  r/ M/ C
示例如下:
+ y; Z- F6 f2 s( u  }) c& \
; O) h# g' u' f( Y, C5 i(1)控制单个IP的最大并发连接数
$ A" E. G2 d! \5 @' V# c6 ]
" H8 d+ w$ }9 u. Qiptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30
3 z9 M2 c3 G0 a7 D$ O5 T4 s(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数$ h0 g& {. O. H5 y; C' h

* b9 l/ d# [5 C# F) Q: U& diptables -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个连接
4 j* J' G0 h4 p! p5 X$ `4. 验证
! R, q0 `7 t, \+ p; r4 ?
, ?! a$ L" H  X6 D, X(1)工具:flood_connect.c(用来模拟攻击): S' a( Q8 P6 m8 N) q* V

0 I; m- z# i% ]% U(2)查看效果:2 d# y! Q. ~6 Z& v" i; k
6 p; u. N6 A* @5 Z* _  q! u
使用
6 c3 z: e; |% A' s! t& ]0 N* X' F: I
watch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l': h9 K1 Z; w9 \- f5 `
实时查看模拟攻击客户机建立起来的连接数,
% L! Y: P& s2 y  f0 ~
3 {+ ?/ g; F4 d3 P4 H使用2 C5 S; q, E$ ?0 B4 q  |

; O; t9 |9 ^' G# Q) n. M% cwatch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'
# \, G' K+ `  g- U" D. r* {  g, U/ n查看模拟攻击客户机被 DROP 的数据包数。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-31 19:58 , Processed in 0.106576 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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