找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18912|回复: 1

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

[复制链接]
发表于 2013-3-25 18:14:52 | 显示全部楼层 |阅读模式
目前对DNS服务器的攻击基本都是假冒IP的潮水攻击。普通情况下,DNS查询是UDP协议,无需像TCP那样的三次握手过程,因此DNS服务器无法识别请求包里的源IP是否真实有效。如果大量的假冒IP进行攻击,就造成名字服务器要么计算资源耗尽,要么带宽耗尽,从而拒绝服务。
" y! b% R  _0 F  C, g由于客户端是假冒IP,因此DNS服务器端的安全策略,例如DNS RRL、或者iptables,都作用不大。唯一有效的方式是从源头制止这种攻击,即各ISP、IDC都要严格执行BCP 38,拒绝非本网络的源IP对外发起请求。
6 K- \5 A  N" B% M+ u! R6 b" J# y6 B5 E1 R7 R( }+ U5 m
除了直接攻击DNS服务器外,还有一种情况是DNS服务器被利用来攻击别人。如果攻击者想攻击某个站点,他假冒这个站点的IP,对互联网上开放的DNS服务器发起查询,DNS服务器会将查询应答包返回给站点IP。由于开放的DNS服务器数量众多(比如运营商的递归服务器、各个公司自己的权威服务器),假如攻击者同时往1000台DNS服务器发起查询,那么1000个服务器的返回包到达后,巨大的流量直接把目标站点干掉。示意图请见:
# Q( h" p( W& o. p( w" F
+ y/ f" g/ g9 z8 ]* z' v' g9 }" t3 _这种情况下,可以利用RRL、iptables来保护自己的名字服务器免被攻击者利用来攻击别人。* ]$ I! d6 Q2 \, o( T/ P( N
一个简单的iptables规则可以如下:
- v  j3 _# O4 yiptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –set7 @3 {) j5 I. C) A5 H1 H
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –update –seconds 60 –hitcount 1000 -j DROP
2 L9 n6 C. z$ {# y% c1 K& x/ R上述规则的作用是,如果在1分钟内对DNS的查询频率超过1000次,就拦截掉该源IP。
* T9 |5 n+ }& A; y1 R4 f
. z0 }& F: W$ W8 y* J原文:http://www.nsbeta.info/archives/389

本帖子中包含更多资源

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

×
 楼主| 发表于 2013-3-25 19:09:04 | 显示全部楼层
上面的脚本貌似有问题:看这里解决:" O4 U7 B$ X0 r9 w) v3 a- m
    当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。+ P' _+ U9 c! @5 K6 ^; \
1.系统要求5 T- w& S- g1 \8 e

$ k! W! B/ `9 r# I. j, y3 b(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。& v' O0 w- F6 p8 C4 {
' w/ t7 ~& p) A- y
(2)iptables版本:1.3.70 M" U2 X5 \: o+ k. t; Q

+ v  w! C7 Q( H( g2. 安装, l3 G, F# e5 F3 d7 b+ D
6 N( u& P+ R- l
安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit
, P9 n: A, v! x& s0 ?! |- ^$ k* H& Y- S# H
3. 配置相应的iptables规则! |- l6 Y# v7 j7 m- Q5 y
# s5 ^' B. b7 W& S" K) V
示例如下:
4 Z+ W7 l8 m0 i0 F  J, ]4 o
! S& o2 k/ O& F5 Y2 {(1)控制单个IP的最大并发连接数
9 l  J* v/ D& y; R
$ g  X: w# Q/ ?& oiptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30
: H9 `7 s( R2 B3 x(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数
/ h; t. c- s7 R6 p% }- ]- |% L( r2 h2 u2 F' m# t3 q
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个连接5 x0 @  b+ |. O" t3 Q
4. 验证, S/ R) L" l4 d" G/ A$ h

. `4 {; ]# I3 \1 D. M(1)工具:flood_connect.c(用来模拟攻击)' g. d& @) r% a3 ~/ M+ H1 c

& u- i1 A4 {, j( |3 Q( [+ w5 ~1 [, _(2)查看效果:
# j: Z( f' W1 f' k; v* a; L- Z. Q& u, R* e" E
使用
" ~3 B; F$ L; B0 v1 t* n' Z8 ^3 P$ [; C0 }1 i
watch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'
$ ]; D! l4 q! a4 {  Y实时查看模拟攻击客户机建立起来的连接数,! v6 o9 l, ^- i, ?8 S7 k

! h/ K) ~+ r7 `) [- w# }使用
" x) \9 a6 N% U4 q% w' z7 t
) B7 S) P% p$ ~2 I' hwatch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>') {) {4 [# j# H6 o) a4 T5 S
查看模拟攻击客户机被 DROP 的数据包数。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-10 22:22 , Processed in 0.079439 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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