找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18389|回复: 1

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

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

' v# e/ M: I* z! z% f; A这种情况下,可以利用RRL、iptables来保护自己的名字服务器免被攻击者利用来攻击别人。
' g5 |" M: A9 D# G8 Y一个简单的iptables规则可以如下:
; i$ Q4 P* p1 Ciptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –set/ _3 T- h$ h: j
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –update –seconds 60 –hitcount 1000 -j DROP
" y2 D& |* d) f+ k0 a上述规则的作用是,如果在1分钟内对DNS的查询频率超过1000次,就拦截掉该源IP。
: H' {; I; `  Z0 @. \/ X, G' K$ J
1 j# r/ G$ d8 {$ U: G4 v2 b$ f( C$ N3 D原文:http://www.nsbeta.info/archives/389

本帖子中包含更多资源

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

×
 楼主| 发表于 2013-3-25 19:09:04 | 显示全部楼层
上面的脚本貌似有问题:看这里解决:
- u( B4 }; @' K8 y8 C* K6 K    当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。2 o$ B* G: \& f/ v& F1 R1 U' \
1.系统要求
% G& f! F) l3 s. O* `! z1 f6 Z5 h# `7 K9 t  @
(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。& D6 F9 V! U" m" Z2 A3 F) O

0 l$ E  ~6 @# ?! ^+ t(2)iptables版本:1.3.7
7 h6 u/ b% R9 W( S( E" {$ e$ d9 U( _+ z( I
2. 安装
6 p3 P' A/ _$ \# V9 T: Q5 Q3 a4 ]( x
4 K/ z' j8 x2 ]9 K7 s( l安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit  `: n8 U( F5 Y0 W- _# `

, D. a- q. u$ E6 v; o6 p" J3. 配置相应的iptables规则, {) E5 E1 P  K* E/ J; [4 S% R

% @* M5 ?* S& L4 o# r# C示例如下:
8 N7 ~( Y/ t7 F: a" ^
- r: A/ t' y: U; q. o( H(1)控制单个IP的最大并发连接数
8 ]" m% O& T( |2 `* ~% R+ k. E, C2 y! G  d9 ?  _/ X
iptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 309 R8 [4 F# z0 K$ A8 `* C$ V( @5 W8 P
(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数
1 p2 B$ ~/ X3 W5 [  F# m( ~
' d9 O. l' h& f2 ^9 w6 R  [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个连接
& v9 z( K. |! i4. 验证% f2 u: t3 ]; K4 @# _
" l& {4 ~* a. q8 v5 p' K# R1 v9 g# s
(1)工具:flood_connect.c(用来模拟攻击)5 A5 {: g8 S7 _' B; f+ M: O! W
: D; V/ w) V2 q+ G* C
(2)查看效果:
' p' Y$ T$ W. L  s  Q
, \5 D4 J+ B2 r# d( O使用' u6 M, h, D1 L2 S- d: ^

% R# ]1 }: g* w, h1 cwatch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'  t2 i, t0 X3 G5 q
实时查看模拟攻击客户机建立起来的连接数,
7 @. Y2 }0 }& b7 o, K* F3 {$ V& S" t- i- C9 B
使用
. o9 I, b* R% C. D) H; w+ b9 r2 H
" w5 v' C+ t4 ~watch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'8 ^5 F. |  R  U* `
查看模拟攻击客户机被 DROP 的数据包数。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-26 06:34 , Processed in 0.090765 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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