找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19420|回复: 1

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

[复制链接]
发表于 2013-3-25 18:14:52 | 显示全部楼层 |阅读模式
目前对DNS服务器的攻击基本都是假冒IP的潮水攻击。普通情况下,DNS查询是UDP协议,无需像TCP那样的三次握手过程,因此DNS服务器无法识别请求包里的源IP是否真实有效。如果大量的假冒IP进行攻击,就造成名字服务器要么计算资源耗尽,要么带宽耗尽,从而拒绝服务。
) @  [0 P3 e2 F) s4 G$ l由于客户端是假冒IP,因此DNS服务器端的安全策略,例如DNS RRL、或者iptables,都作用不大。唯一有效的方式是从源头制止这种攻击,即各ISP、IDC都要严格执行BCP 38,拒绝非本网络的源IP对外发起请求。
( p! M$ o( q6 H
: A( q) K/ D' b- m6 b( }$ K, y除了直接攻击DNS服务器外,还有一种情况是DNS服务器被利用来攻击别人。如果攻击者想攻击某个站点,他假冒这个站点的IP,对互联网上开放的DNS服务器发起查询,DNS服务器会将查询应答包返回给站点IP。由于开放的DNS服务器数量众多(比如运营商的递归服务器、各个公司自己的权威服务器),假如攻击者同时往1000台DNS服务器发起查询,那么1000个服务器的返回包到达后,巨大的流量直接把目标站点干掉。示意图请见:
  Y7 z- N% |' _. m4 X0 a6 x/ h4 A. [6 @- v, l" {# @" j* G; k
这种情况下,可以利用RRL、iptables来保护自己的名字服务器免被攻击者利用来攻击别人。
9 Z% r1 |7 D9 D一个简单的iptables规则可以如下:6 N$ x4 g. I$ r+ Q) `0 X* F
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –set7 S/ c* i) B( W2 g) x: b
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –update –seconds 60 –hitcount 1000 -j DROP1 S. g* v- d/ l' W% K" T% H- S
上述规则的作用是,如果在1分钟内对DNS的查询频率超过1000次,就拦截掉该源IP。
4 n, O2 d5 P" J  A/ G5 F1 I9 y: y( K2 l+ Z
原文:http://www.nsbeta.info/archives/389

本帖子中包含更多资源

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

×
 楼主| 发表于 2013-3-25 19:09:04 | 显示全部楼层
上面的脚本貌似有问题:看这里解决:. r, D# R9 P6 ~
    当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。! t# O( s% W) C5 X8 p& e
1.系统要求" l3 \# z7 I' C: P# n

/ b8 p( g' ]1 [1 o7 i& {( V( c(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。
4 m& U( w5 p* _5 e% `5 S0 N& b- E  v3 g" I1 W& H8 K0 M
(2)iptables版本:1.3.74 E$ c' Q8 L( u8 i) P) v$ R2 L# k

# |+ O( s& s% ]2. 安装/ q1 N$ h9 O) `
- s* T4 H9 a6 V' T- |+ `/ w
安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit
1 I1 P* P' d  C4 `  @, i( U" {- {$ U" @$ z; o
3. 配置相应的iptables规则3 I! L) a/ j8 V! H
% @' |7 k8 u% d  T0 h2 {: H
示例如下:
9 H2 N2 k6 j! _5 Z5 H3 t
5 h3 P* Y6 X* n( b) y! j0 z(1)控制单个IP的最大并发连接数: x* d. @3 J" i4 Q# b8 s6 y' _6 c$ D
* I: K6 @9 e% k! \* E
iptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30) ?% j$ `$ h8 w2 x1 M4 C
(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数
8 O/ c) ^$ m* ^
6 x5 H: E! b1 b3 piptables -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个连接
6 }0 W* D8 O* N: `3 e4 p1 v1 E4. 验证# O' F; {. q7 D8 h

1 |3 P5 v0 p  C$ G% s) T5 h  I- i(1)工具:flood_connect.c(用来模拟攻击)% `  a- [& |2 ~4 y" [8 J2 O

! ~" ^% Y  z2 i; y4 X/ f% {, B- h4 O(2)查看效果:
7 ]3 H% n# D' f9 a
7 k; \2 O: Q; y  {. m6 N. o使用
$ ~2 D' K7 e7 `
. {5 R2 D: U# \6 S' U8 pwatch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'
! h# ^! ]2 {8 ^$ A4 S: k实时查看模拟攻击客户机建立起来的连接数,/ L8 W1 W9 z8 g3 {

" M8 o- s4 H1 L' Q/ `使用7 b) s" E) N0 I9 t, V# g

( ^- u  ^: r( L! p( ^watch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'7 k* n+ [3 C, Z
查看模拟攻击客户机被 DROP 的数据包数。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-25 12:48 , Processed in 0.076226 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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