找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18212|回复: 1

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

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

4 `+ l' d" D7 F; }+ I9 Y这种情况下,可以利用RRL、iptables来保护自己的名字服务器免被攻击者利用来攻击别人。# e- ?! E4 m% {' ^1 A
一个简单的iptables规则可以如下:
! Q- u- e0 x) E, a& ]iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –set
8 c# l) K- |) h6 |+ `. \iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –update –seconds 60 –hitcount 1000 -j DROP
% D3 `% L" f7 e+ x" I! U* p# D上述规则的作用是,如果在1分钟内对DNS的查询频率超过1000次,就拦截掉该源IP。; D/ D3 s2 w9 q6 T# l) _; p

5 i; W9 R8 |' J/ L1 q# P" r原文:http://www.nsbeta.info/archives/389

本帖子中包含更多资源

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

×
 楼主| 发表于 2013-3-25 19:09:04 | 显示全部楼层
上面的脚本貌似有问题:看这里解决:
" g+ D) k, p6 |2 T! Q  U9 r    当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。" n9 [5 o3 @# x# J9 B5 Z# K
1.系统要求
# k( c. D, {. E
  O' \- y7 k" v. N8 n; S7 _(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。
, l/ q2 A& ?* ?2 W. P
6 L" o9 D: ?8 m% h1 E(2)iptables版本:1.3.7
3 W7 q9 ~2 q9 E/ X' k% E2 ~: i8 q( M1 k: S  h: i
2. 安装
$ p0 Y6 O4 F9 {, G% I. G3 G, f! O% H5 {: Y8 D9 i: x
安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit
+ D* y; O: B. v4 G! k- o
3 Z; y. u4 p/ N+ O5 V3. 配置相应的iptables规则1 ?1 f8 ?0 f) i! [2 ~# g2 T

5 _0 f( z. m8 n示例如下:7 Q4 Y; T7 u) V. y* o

$ Z7 F! |, J0 q$ ^(1)控制单个IP的最大并发连接数$ f& A4 z* {# J$ \$ b  B$ Q" M

3 Y9 ^  F) |5 X' F1 i4 v% ^iptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30
' N' s; z3 c# E/ F: {(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数5 P. r7 {+ W' A
3 t7 X4 P- {6 |9 E% q: m& n; a- {9 f' ^
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个连接
( D8 K4 ?9 R/ U9 d: G4. 验证
/ ^. n. a8 i  @) g0 P: C: f8 w+ C4 ^* T# I
(1)工具:flood_connect.c(用来模拟攻击)
" i5 i8 D. h1 [/ `& q2 P" y- M. K/ c, O4 N
(2)查看效果:5 V3 o9 X! u- p% _$ w6 I& R
, u, x( I( n. d
使用
2 K' `5 q4 m0 o
$ J. l) t8 C) g6 R5 G! C8 o  xwatch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'* h$ Y: q" b: X* r, h% @$ Z" T
实时查看模拟攻击客户机建立起来的连接数,8 d6 j6 K5 Z+ X0 B/ R  u* {: E5 @1 k
% }' ^  [2 c3 Y+ O' z/ i5 T
使用
* S% I. y7 |$ t) w* F. U$ C3 P4 {
8 C# H5 K! S& ^( c3 Ewatch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'1 a3 B. t- ]' x9 a
查看模拟攻击客户机被 DROP 的数据包数。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-10 14:36 , Processed in 0.046138 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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