找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 20329|回复: 1

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

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

3 F# B) S" O+ {6 t9 d6 k$ u3 F除了直接攻击DNS服务器外,还有一种情况是DNS服务器被利用来攻击别人。如果攻击者想攻击某个站点,他假冒这个站点的IP,对互联网上开放的DNS服务器发起查询,DNS服务器会将查询应答包返回给站点IP。由于开放的DNS服务器数量众多(比如运营商的递归服务器、各个公司自己的权威服务器),假如攻击者同时往1000台DNS服务器发起查询,那么1000个服务器的返回包到达后,巨大的流量直接把目标站点干掉。示意图请见:
( w( A. q9 s- ?1 t; H' b% R) {( g2 c: R) g/ x; Q
这种情况下,可以利用RRL、iptables来保护自己的名字服务器免被攻击者利用来攻击别人。
+ l- w# ~, z; v# i8 l2 ~一个简单的iptables规则可以如下:* {, t3 E% y! f: f+ K
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –set
  O. c* N: m7 P! ^) Fiptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –update –seconds 60 –hitcount 1000 -j DROP0 H7 D* Y( ~, S, V1 w
上述规则的作用是,如果在1分钟内对DNS的查询频率超过1000次,就拦截掉该源IP。
$ j9 i6 N1 L, j. u, K$ _% s% L- c+ V% M: E2 z, J
原文:http://www.nsbeta.info/archives/389

本帖子中包含更多资源

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

×
 楼主| 发表于 2013-3-25 19:09:04 | 显示全部楼层
上面的脚本貌似有问题:看这里解决:$ J* o: Y2 ~2 C4 Z9 G
    当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。: Z5 w# P) R, G" m  `
1.系统要求7 v* G- H: c+ J% f4 r

* ?$ i) A; M  ^- w9 k! A- H0 Y(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。/ m" N: e( W8 J% ^  y

! ~# [" ~+ Y1 M. W(2)iptables版本:1.3.7
; N1 |% x( M; L+ n9 B5 T8 o0 t4 Z+ X3 V4 O9 m/ c! K- P: r
2. 安装% n+ P# Y. _1 d0 m

* Q/ w* ^3 K6 e; h5 Y安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit
9 Q1 T4 Y9 m3 [- ^) q$ L1 \, q! }/ s
/ e8 I2 c! k$ I5 `8 N3. 配置相应的iptables规则
! v) R6 B) p; M5 l  {5 i
3 }' E3 x1 ~$ U. M示例如下:
) @  f7 f4 W# {9 E% {3 {
3 l4 D1 Y7 W0 ?: j  w$ \(1)控制单个IP的最大并发连接数
' S2 e# K, I4 x- g0 U4 j9 E
, H0 W1 U% T2 ]* ~6 j( aiptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30
- H& s0 @  `) P, a* m$ F" x1 J4 ~$ j(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数
# K: h: Q3 h' o8 J* [1 H3 b! c; Y1 k* b& [
  {) x( f5 ?" K& K& r" g! K& liptables -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个连接
$ O# e, E8 q0 P4. 验证" _. F: v: c% i% g0 ?

" u6 a& S/ ^8 v/ ?(1)工具:flood_connect.c(用来模拟攻击)! Y% z2 e* `" g8 G8 R" L
1 {- O9 S! v8 S! {6 _, `" I
(2)查看效果:
( u8 F9 Y) ^( k( h0 Q" O/ i- Y7 ^; I! E# Z/ H
使用
1 L/ k0 }; x( m1 J; J; X
* C4 S. ]$ Z5 Jwatch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'
. l" J5 I7 v1 G/ y$ |" z! j实时查看模拟攻击客户机建立起来的连接数,. W/ ?* B: S  Z
8 \. @+ w, Q. a5 p/ D
使用
3 w# E$ {& [: P
) s6 \: w. q3 T7 Z# r* N  pwatch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'
3 Y" ?5 U- ^$ l4 j9 n查看模拟攻击客户机被 DROP 的数据包数。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-29 21:34 , Processed in 0.052949 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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