找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19610|回复: 1

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

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

8 U$ [6 |0 ]- d# G( h) z/ r/ e除了直接攻击DNS服务器外,还有一种情况是DNS服务器被利用来攻击别人。如果攻击者想攻击某个站点,他假冒这个站点的IP,对互联网上开放的DNS服务器发起查询,DNS服务器会将查询应答包返回给站点IP。由于开放的DNS服务器数量众多(比如运营商的递归服务器、各个公司自己的权威服务器),假如攻击者同时往1000台DNS服务器发起查询,那么1000个服务器的返回包到达后,巨大的流量直接把目标站点干掉。示意图请见:
: R* D' l8 u0 S- }- _# ^" A
% C7 @5 a$ J, u3 W$ m这种情况下,可以利用RRL、iptables来保护自己的名字服务器免被攻击者利用来攻击别人。
. ^  y* U! G# v6 r  e, ^5 U) C一个简单的iptables规则可以如下:
, n. U, j( W; P; V5 H2 p$ T7 giptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –set+ f% p9 Y# x( Y" \, R  L0 N8 a
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –update –seconds 60 –hitcount 1000 -j DROP0 Y6 w( e( i- e! O8 [  t
上述规则的作用是,如果在1分钟内对DNS的查询频率超过1000次,就拦截掉该源IP。
4 k2 l" z( i9 ^5 y/ l1 u+ l
7 w: a9 K4 Q/ K0 Y9 p7 V原文:http://www.nsbeta.info/archives/389

本帖子中包含更多资源

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

×
 楼主| 发表于 2013-3-25 19:09:04 | 显示全部楼层
上面的脚本貌似有问题:看这里解决:
+ @. Z% p& M! Q- _5 r/ _    当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。
% K+ d- M! t0 u% R3 R! y1.系统要求; y: y: x: \6 v
% [! Y2 u3 J$ N) x0 y' a
(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。0 a) V- T0 s+ X& w

# d6 n4 p% {# R# c8 A(2)iptables版本:1.3.7
1 M2 e9 i1 S! d+ z: P# L
; V/ J8 T) V; K: X0 R2. 安装
2 B& g+ Q; k* ?' ]- ~8 I% ]; Q, h  h
安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit
# A. l9 P$ E; z6 ]- \; l7 n& I4 R7 v/ }+ @( o5 y# }6 e
3. 配置相应的iptables规则5 m: E- u' x9 h% L! {; x

: l, c0 z6 R- R8 w示例如下:
0 j/ x" T! W7 F, |8 Q/ j5 J3 F& c2 ]1 @; \
(1)控制单个IP的最大并发连接数
1 n4 k5 h  p  m* h: W0 e3 Y% K  }# i1 p; x1 b0 z
iptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30" c" e5 M, |! v! c7 O# d
(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数
7 L9 i' y2 t6 u. e7 @
0 e9 P% P+ X3 aiptables -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个连接
$ U3 g' _5 ?# P( _3 j2 [9 @4. 验证
+ b8 D3 L! D# M3 l! w" J$ ?5 r7 B' v; ^4 S
(1)工具:flood_connect.c(用来模拟攻击)2 ^4 U% V5 K9 q' Y; @! z
2 [+ E3 y) I4 P2 I9 K& p6 f
(2)查看效果:: E* O  Z" N+ J( }  N8 y, p* ?

: y: m/ j, l; w9 e- c使用
5 q+ S6 K! E/ f
2 X& a- U" p/ F1 ]8 dwatch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'
4 r. P/ f. y& q" d& v1 h实时查看模拟攻击客户机建立起来的连接数,1 ^. }; B  f4 k/ O: e8 m. t
; l2 A+ p" W! m
使用
9 s* ]# q/ Q# U; O) I* K* A
7 w; h7 V6 i  ]  }/ {( wwatch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'; Z/ i/ S4 M5 o  F9 M
查看模拟攻击客户机被 DROP 的数据包数。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-11 17:25 , Processed in 0.069238 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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