找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 17730|回复: 1

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

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

! A5 x: q7 t. j. J除了直接攻击DNS服务器外,还有一种情况是DNS服务器被利用来攻击别人。如果攻击者想攻击某个站点,他假冒这个站点的IP,对互联网上开放的DNS服务器发起查询,DNS服务器会将查询应答包返回给站点IP。由于开放的DNS服务器数量众多(比如运营商的递归服务器、各个公司自己的权威服务器),假如攻击者同时往1000台DNS服务器发起查询,那么1000个服务器的返回包到达后,巨大的流量直接把目标站点干掉。示意图请见:
+ U6 M3 {& @( R" v/ c! j
5 u2 G# Z: ]% ?这种情况下,可以利用RRL、iptables来保护自己的名字服务器免被攻击者利用来攻击别人。
- j7 u: M) ^% V一个简单的iptables规则可以如下:
5 i4 q$ C! Z- _* H; j, g3 z# Z# B. Xiptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –set- o, o+ M2 o: y6 `# u( _
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –update –seconds 60 –hitcount 1000 -j DROP) b& r7 O+ `7 @* y2 T6 \3 N
上述规则的作用是,如果在1分钟内对DNS的查询频率超过1000次,就拦截掉该源IP。
* I4 U( n' r1 H; n+ ~
, t& W3 g$ R7 x原文:http://www.nsbeta.info/archives/389

本帖子中包含更多资源

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

×
 楼主| 发表于 2013-3-25 19:09:04 | 显示全部楼层
上面的脚本貌似有问题:看这里解决:5 v1 Q# c# s" E
    当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。1 v7 a4 F  M) Q
1.系统要求
+ F" H- z8 w: G7 m+ a. B: F9 x' ~
(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。
$ e# g* i) h' I7 l7 }  F) Y; s' p1 T- e# M% w/ c
(2)iptables版本:1.3.7
3 y' j7 X9 w+ m. k. ]$ y! l
' U1 {& e! x( `2 l  I% o2. 安装$ f4 }3 h& `6 U) h; F
# |. l: |# J/ Q: v9 n
安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit% R  M7 F7 y( P  t6 G+ U$ I3 ]+ n
, {+ f7 k4 e/ C' @4 Z7 S
3. 配置相应的iptables规则( M" H3 ^/ M( h: @# S' ~

4 n, {7 X- h$ d) z; }0 R示例如下:
8 q( S' Q% O4 n# h) o2 m. M
1 u% Z8 \! m1 x, M8 t( W0 ^/ i7 v(1)控制单个IP的最大并发连接数
4 |8 L* w# u. Z; d5 B  Z* j& U% y5 T; G! D+ h
iptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30
2 I2 P; g9 b- r! b/ C(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数
# m4 C) S% O" `  H# K5 {9 [, p! G0 n% T6 _2 `2 ^9 L9 I* e
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个连接. [4 W9 J! c- p' z, E; C
4. 验证2 V2 S/ e% B$ B; E* P

# m  |1 Z7 j4 p) [. |) Y; O(1)工具:flood_connect.c(用来模拟攻击)
5 L. P0 Y, ^$ `( L6 w6 p& M/ i8 u8 S, ?
(2)查看效果:9 \0 R" E2 ?& b# B" o

1 a' c( D3 G# q- P, p+ m7 m: ?使用
. O1 b; W/ c8 Y9 c8 b) Y, S
  Z( N+ w1 ~7 N3 K4 J3 Mwatch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'1 {: v' _9 y/ V, t* E+ t
实时查看模拟攻击客户机建立起来的连接数,. V1 \( k; J0 `6 D' F1 ?

  E# K8 o: r2 c$ F+ O使用
4 R$ V6 Z4 y6 ?# j- C" f3 ~3 [7 k4 Z- u
watch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'
, q$ n8 k0 r' O9 P9 X- a查看模拟攻击客户机被 DROP 的数据包数。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-11 07:23 , Processed in 0.049633 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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