找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19478|回复: 1

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

[复制链接]
发表于 2013-3-25 18:14:52 | 显示全部楼层 |阅读模式
目前对DNS服务器的攻击基本都是假冒IP的潮水攻击。普通情况下,DNS查询是UDP协议,无需像TCP那样的三次握手过程,因此DNS服务器无法识别请求包里的源IP是否真实有效。如果大量的假冒IP进行攻击,就造成名字服务器要么计算资源耗尽,要么带宽耗尽,从而拒绝服务。
7 c1 ~7 I$ e' }9 Z' r, m+ J由于客户端是假冒IP,因此DNS服务器端的安全策略,例如DNS RRL、或者iptables,都作用不大。唯一有效的方式是从源头制止这种攻击,即各ISP、IDC都要严格执行BCP 38,拒绝非本网络的源IP对外发起请求。
% d' b' M$ s0 p9 ?# w0 t0 X) Z# m4 F" _1 j8 E3 `. p- d* ^$ S4 f
除了直接攻击DNS服务器外,还有一种情况是DNS服务器被利用来攻击别人。如果攻击者想攻击某个站点,他假冒这个站点的IP,对互联网上开放的DNS服务器发起查询,DNS服务器会将查询应答包返回给站点IP。由于开放的DNS服务器数量众多(比如运营商的递归服务器、各个公司自己的权威服务器),假如攻击者同时往1000台DNS服务器发起查询,那么1000个服务器的返回包到达后,巨大的流量直接把目标站点干掉。示意图请见:
6 N6 v  G6 D0 M2 h
' p3 y# T' q# A) f0 v0 ?% `这种情况下,可以利用RRL、iptables来保护自己的名字服务器免被攻击者利用来攻击别人。" K. w: q# {+ j5 A3 P7 e# `6 j
一个简单的iptables规则可以如下:( T" H/ D5 a7 i3 |
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –set  Y: C* X: w( f8 j. x5 K2 h
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –update –seconds 60 –hitcount 1000 -j DROP7 v* L5 l2 _/ a8 c- s. ^
上述规则的作用是,如果在1分钟内对DNS的查询频率超过1000次,就拦截掉该源IP。, o8 i3 ~4 l/ n- y

# }, H/ X; |% d+ u: [( W7 H原文:http://www.nsbeta.info/archives/389

本帖子中包含更多资源

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

×
 楼主| 发表于 2013-3-25 19:09:04 | 显示全部楼层
上面的脚本貌似有问题:看这里解决:
8 P1 k1 G) Q1 H9 ]" j    当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。
4 O9 k' J7 a- b4 Z8 C1.系统要求; a" l% E+ O: Q  \4 y0 z; c
" [: O4 T% d( N  Y
(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。( ?& W, G8 ^- g9 d( v2 T% q. r6 G8 u

  R# I+ R) ~3 M6 G, \) b(2)iptables版本:1.3.7
# B4 x! l/ q. P1 a9 I- y- c
4 k+ E; s- l; l8 D& c- S0 G2. 安装
# l" A! w/ o) s6 n7 ~  e# e+ M- I
2 G9 S. _/ R: h$ O2 E安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit
% N; G0 R5 ~- b7 y$ ~
  Q" N$ ]' M3 ?4 g" U  @$ ~3. 配置相应的iptables规则
, ?, ]4 v* q  Z) s) j& C9 @8 N3 @- o1 \
示例如下:- P5 _* c! ]2 ?6 H2 g0 ]

) r" `4 _1 T4 E+ z4 M! q3 A1 r4 }4 T5 }(1)控制单个IP的最大并发连接数3 F5 V6 e) w; X; s0 a' j7 {) B& J/ E' r

- L" |( ?# d; ^& Giptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30
! L4 n$ e* W; z1 J6 l0 d9 |(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数
# B9 E) ?5 R- N) a& ?7 A' X) N& b" q1 d- ~! ~
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个连接: U: `' L/ P3 K0 X* e2 B8 D% p
4. 验证3 v+ D. H. T8 p. Z& c
# d) J* V" A* ^7 {/ I
(1)工具:flood_connect.c(用来模拟攻击); H; o) L# n6 J6 i7 i' e

' y; N* P- |+ x1 ?, k3 S(2)查看效果:' G- B7 W3 w4 K( w2 J  j5 [7 b

; L  o( U7 a" G: f8 t使用
9 m3 |! i7 ]( e# D9 d4 D$ w- J; g- z, g& d7 h
watch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'
7 T: B. C. n' v5 _实时查看模拟攻击客户机建立起来的连接数,
7 g1 j# z2 j: u' m- `( q1 A* m
: V+ a; }# v6 J6 D: r使用7 S9 r" G; t; X4 w& r. X

; e3 j' L5 ^3 o; r8 ]$ awatch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'
2 r. P  b  g; S- i查看模拟攻击客户机被 DROP 的数据包数。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-1 04:09 , Processed in 0.117101 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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