找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19418|回复: 1

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

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

% f) l( Y/ v5 ?+ g" Z- e除了直接攻击DNS服务器外,还有一种情况是DNS服务器被利用来攻击别人。如果攻击者想攻击某个站点,他假冒这个站点的IP,对互联网上开放的DNS服务器发起查询,DNS服务器会将查询应答包返回给站点IP。由于开放的DNS服务器数量众多(比如运营商的递归服务器、各个公司自己的权威服务器),假如攻击者同时往1000台DNS服务器发起查询,那么1000个服务器的返回包到达后,巨大的流量直接把目标站点干掉。示意图请见:
, K7 `0 |$ [: V0 o9 P( ^( g+ }7 R' f5 A5 n0 N
这种情况下,可以利用RRL、iptables来保护自己的名字服务器免被攻击者利用来攻击别人。# Q5 @8 S& m9 {% }' F: U
一个简单的iptables规则可以如下:
( V7 g! B9 w% e( g; Q9 e* A  L# jiptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –set5 e% Q  ^" ~% p9 y+ l7 }0 x
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –update –seconds 60 –hitcount 1000 -j DROP0 w5 W6 c4 a; j1 u" f) [
上述规则的作用是,如果在1分钟内对DNS的查询频率超过1000次,就拦截掉该源IP。
1 ?+ R+ q0 A- b7 A- b1 y% w( I. I5 S6 Z+ }  O, x: F0 b$ |
原文:http://www.nsbeta.info/archives/389

本帖子中包含更多资源

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

×
 楼主| 发表于 2013-3-25 19:09:04 | 显示全部楼层
上面的脚本貌似有问题:看这里解决:" z; n2 ~5 p3 E7 A" C1 {" x% O. B6 ~
    当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。9 F1 D' U, }: A+ T* P* z3 P: x
1.系统要求
8 Q" B7 q3 V( p% Y
  h. J$ P: ]9 ](1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。3 Z4 A% P8 s, h4 L4 o1 [
4 \% ?* A" s) H& B9 ~4 u/ x
(2)iptables版本:1.3.7
$ C% a+ E3 o9 F& \$ U
" Z& M: U; \% u) R5 T5 U# ?7 Q2. 安装
+ N' L9 _. V& j  r
$ N! r" s( ?# v  ^安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit3 J  m( c6 ?- I1 h

( B1 d' D' s/ U' h2 K6 y+ i1 Y3. 配置相应的iptables规则
+ x! \' N0 h3 E( w; E3 o' F
8 R' i1 \: A* M2 ]8 z; z5 {2 [示例如下:
, P% c6 a" t6 {7 M9 n# q$ H
- Q- ?. ]- U' u7 m! r1 F(1)控制单个IP的最大并发连接数
3 c1 p- {! C( N+ I" y6 |4 C, V- W
iptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30" B( j6 H, }* u6 X
(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数# P7 q; _9 o, b8 D' U% x

$ s+ }4 G7 v" ^6 z1 `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个连接
& K9 L! B  n4 V; X7 ^4. 验证( K, D2 B7 f& n+ d% I/ k9 S: e' N5 |, }

& ^8 E% U' h% p& q6 _# Z; S(1)工具:flood_connect.c(用来模拟攻击), v$ i- e, m" l# o- s9 u3 L1 t4 W, s
- H& l2 c( E0 g2 A& ]' s8 ]; X  F
(2)查看效果:
4 {' s3 d0 ~9 ?* @( v' o+ O/ c$ M* @" I- C5 t6 e3 w
使用
" G1 g4 U4 Z7 P5 f4 B5 o
4 p" X% K9 y4 a! @% F3 wwatch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'
$ O4 p" _8 M* L8 H/ f8 P) U实时查看模拟攻击客户机建立起来的连接数,
4 z) K4 w% a) U; D2 P4 h- l7 M
' q& J9 n/ c" i- ]: ]使用) P3 |5 T* I6 m$ k: r/ W9 E& j
0 n7 b% W) g4 Q
watch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'
: b* {* K  i1 J  }查看模拟攻击客户机被 DROP 的数据包数。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-25 11:29 , Processed in 0.047834 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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