找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18390|回复: 1

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

[复制链接]
发表于 2013-3-25 18:14:52 | 显示全部楼层 |阅读模式
目前对DNS服务器的攻击基本都是假冒IP的潮水攻击。普通情况下,DNS查询是UDP协议,无需像TCP那样的三次握手过程,因此DNS服务器无法识别请求包里的源IP是否真实有效。如果大量的假冒IP进行攻击,就造成名字服务器要么计算资源耗尽,要么带宽耗尽,从而拒绝服务。$ _( E6 c0 S7 Z
由于客户端是假冒IP,因此DNS服务器端的安全策略,例如DNS RRL、或者iptables,都作用不大。唯一有效的方式是从源头制止这种攻击,即各ISP、IDC都要严格执行BCP 38,拒绝非本网络的源IP对外发起请求。
$ M# ^/ t' T7 g3 k! y
3 z! J2 ^+ b1 g0 ]( _除了直接攻击DNS服务器外,还有一种情况是DNS服务器被利用来攻击别人。如果攻击者想攻击某个站点,他假冒这个站点的IP,对互联网上开放的DNS服务器发起查询,DNS服务器会将查询应答包返回给站点IP。由于开放的DNS服务器数量众多(比如运营商的递归服务器、各个公司自己的权威服务器),假如攻击者同时往1000台DNS服务器发起查询,那么1000个服务器的返回包到达后,巨大的流量直接把目标站点干掉。示意图请见:6 m1 \; ~9 @  i8 k; n1 y1 g- `

6 \2 Q2 D  b& k# m这种情况下,可以利用RRL、iptables来保护自己的名字服务器免被攻击者利用来攻击别人。% I! ]0 \2 w- n% u- [
一个简单的iptables规则可以如下:3 ]& [. J) U5 W2 B  _
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –set6 q& C7 O' m8 |. r. N
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –update –seconds 60 –hitcount 1000 -j DROP% d2 d, o, o0 g; T! G
上述规则的作用是,如果在1分钟内对DNS的查询频率超过1000次,就拦截掉该源IP。
0 @# ^4 h/ S( s- e
8 G7 |' B' @' A  M原文:http://www.nsbeta.info/archives/389

本帖子中包含更多资源

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

×
 楼主| 发表于 2013-3-25 19:09:04 | 显示全部楼层
上面的脚本貌似有问题:看这里解决:
, Z2 ]: u' v1 ?: d    当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。
5 G5 y8 T6 V/ Y, F! S1.系统要求2 F4 O( d3 ^; Y7 F# U# n3 {
$ D1 w1 K7 N9 ^4 K# K0 U" E
(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。
3 g' a6 m6 U: S" e8 q8 ]$ K5 D! W: e8 X
(2)iptables版本:1.3.7
6 A1 I' |1 _' U0 X) t  v- h9 a8 b, X: r
2. 安装
3 A* y3 d, k0 ?7 Q7 [  z$ O9 q2 E* g' A% P
安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit# I& m: ]* y  x5 q

9 J2 z9 w. i& J0 L5 }8 o% {3. 配置相应的iptables规则/ |: k3 n" g. O/ x
7 ~6 B9 `% ^. _$ v4 q
示例如下:# A( ^8 `& k* z; U0 O+ @, r* \6 }

# H" t) s# c( u) G" O(1)控制单个IP的最大并发连接数
! H9 O0 I$ `" c( p5 p! c5 h5 H) I1 W- @% A+ `& W0 s& c; h
iptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30- ?( S" c# Q6 P& E
(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数
" g! B3 S1 H1 S) d6 ?& w9 Z: k: i( U7 P0 ^) ?, n& w
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个连接* J, c, D% Y) w0 ~4 ?
4. 验证) w) t) U! @) z& s1 m4 W

8 R( p# @* y& N# X" C% p(1)工具:flood_connect.c(用来模拟攻击)
  Z/ |0 T" v% G# A" s5 w0 z; r, i& U! X% z3 D
(2)查看效果:
. z: d6 V. W4 V( g4 c
. r; v$ v2 j, S1 M使用
: I: r$ }6 {. Q0 z) e* a6 s, [, f8 {
: P' C& p! _* U. d) k& x) }5 lwatch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'0 @' Q" j) u0 P$ x6 d4 E, }0 x% ?
实时查看模拟攻击客户机建立起来的连接数,  p, \. ^- ~. V  L) W( m

9 Q/ t: n* ]. U4 L1 z8 ]; a使用
8 z: [% m7 L8 {
+ B, w/ L) A( \2 v; Hwatch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'# c" I/ Z2 C) z  r5 O8 I
查看模拟攻击客户机被 DROP 的数据包数。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-26 07:39 , Processed in 0.067727 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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