找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15695|回复: 1

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

[复制链接]
发表于 2013-3-25 18:14:52 | 显示全部楼层 |阅读模式
目前对DNS服务器的攻击基本都是假冒IP的潮水攻击。普通情况下,DNS查询是UDP协议,无需像TCP那样的三次握手过程,因此DNS服务器无法识别请求包里的源IP是否真实有效。如果大量的假冒IP进行攻击,就造成名字服务器要么计算资源耗尽,要么带宽耗尽,从而拒绝服务。' `* [; g4 P7 V7 I2 w
由于客户端是假冒IP,因此DNS服务器端的安全策略,例如DNS RRL、或者iptables,都作用不大。唯一有效的方式是从源头制止这种攻击,即各ISP、IDC都要严格执行BCP 38,拒绝非本网络的源IP对外发起请求。
9 W! o# r( o2 `* U  H3 w0 l
4 f: f% L7 ~& @. U8 c6 ~9 i" k除了直接攻击DNS服务器外,还有一种情况是DNS服务器被利用来攻击别人。如果攻击者想攻击某个站点,他假冒这个站点的IP,对互联网上开放的DNS服务器发起查询,DNS服务器会将查询应答包返回给站点IP。由于开放的DNS服务器数量众多(比如运营商的递归服务器、各个公司自己的权威服务器),假如攻击者同时往1000台DNS服务器发起查询,那么1000个服务器的返回包到达后,巨大的流量直接把目标站点干掉。示意图请见:
3 V% Y1 o. ?! G; F1 w; ~( ^$ U; y! {2 e3 V8 ^
这种情况下,可以利用RRL、iptables来保护自己的名字服务器免被攻击者利用来攻击别人。( ?) _3 }3 W. w" m* U/ ?
一个简单的iptables规则可以如下:% e! g5 @+ R/ m5 U
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –set$ c/ R$ _6 J: @
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –update –seconds 60 –hitcount 1000 -j DROP9 X8 @0 _% T1 L1 {: G" h9 m! ~
上述规则的作用是,如果在1分钟内对DNS的查询频率超过1000次,就拦截掉该源IP。6 a/ d* C5 i8 i) U

; U1 q) n' I9 }原文:http://www.nsbeta.info/archives/389

本帖子中包含更多资源

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

×
 楼主| 发表于 2013-3-25 19:09:04 | 显示全部楼层
上面的脚本貌似有问题:看这里解决:) [* a# K0 _/ d6 D& z. x
    当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。
8 f* I- Y- n8 k9 e  o! Y# U1.系统要求
1 F" m6 E7 e- j# z) u0 C
& K9 r' h4 ~8 m/ G7 s(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。
4 h/ k# w! Y* L' Q9 E' ~$ i9 g7 u- K' S: S
(2)iptables版本:1.3.7
+ m% h. l$ P: }8 f4 h7 M
) O( F. e) A8 s, H/ Z' v+ l- \% c2. 安装
4 |$ V% ~8 S  t& H( w, [4 B. D
9 l1 O* }1 a! R4 Y- S安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit
9 ]9 f' R9 ^) U8 i6 X# s
: g! a, t+ X$ B" Q7 g! c' b# [" B3. 配置相应的iptables规则
8 I: Y" `2 `- [# V4 T* e* [/ h4 ?; v% U8 Q  }% ~9 l& }% Y& X
示例如下:. A& R( Q" [/ o& a7 A6 c! X

1 W$ {' ^. h0 z9 t$ _(1)控制单个IP的最大并发连接数
7 z. x2 F# p* l5 U# B* t* b& a7 ~7 L8 n5 z! {
iptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30' ?: A: B; C  M3 Z6 S+ N
(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数+ D9 ?2 J* h* c

+ Z5 y- x/ a3 n, Xiptables -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个连接' P2 ~0 J# F$ c% @# A
4. 验证3 }5 L9 B9 ?- O  j; v9 E
! z" D1 A# O; H6 D
(1)工具:flood_connect.c(用来模拟攻击)
- U' Y7 u  [. c9 u7 g7 w4 o
# v% ?2 ?$ ~( \(2)查看效果:3 b+ z8 v; O' p4 U/ M/ U
0 L$ M# }5 S1 j2 n, q1 C
使用
7 b* a! G. `/ |) D4 T) K9 s9 S7 M
3 F$ _: u) L9 B  u6 E# lwatch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'; n: @- A' ^/ x6 J8 c" X: k6 ^
实时查看模拟攻击客户机建立起来的连接数,
% }% Q: v' ~2 s% v% J7 @: U' d& i) x" O- R# a6 q. }5 r
使用
! `) o+ s# x: U- ~6 p; [. E5 T" ^
watch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'0 Q: f$ E, ~9 |$ K2 l
查看模拟攻击客户机被 DROP 的数据包数。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-12 10:49 , Processed in 0.059918 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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