找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16832|回复: 1

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

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

3 h( i7 d0 q4 Q这种情况下,可以利用RRL、iptables来保护自己的名字服务器免被攻击者利用来攻击别人。
! \: s7 f' ^! R' e' J7 k一个简单的iptables规则可以如下:! t4 l5 n4 f+ N$ W7 Q1 ]4 E
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –set0 Q( D, z! a  C! [" ?7 N! M- {
iptables -I INPUT -p udp –dport 53 -m state –state NEW  -m recent –update –seconds 60 –hitcount 1000 -j DROP
% S7 ~$ {2 M" C8 P上述规则的作用是,如果在1分钟内对DNS的查询频率超过1000次,就拦截掉该源IP。% k6 f3 o) @# @) D, w
% S) k! x0 ]& x; K5 K3 u
原文:http://www.nsbeta.info/archives/389

本帖子中包含更多资源

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

×
 楼主| 发表于 2013-3-25 19:09:04 | 显示全部楼层
上面的脚本貌似有问题:看这里解决:
" s+ A$ e7 o2 ?    当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。
4 W8 }" x& y. L$ Y, z3 s1.系统要求! {' d, Q' C9 T+ w8 H/ p
2 h- p6 s; t, b5 _" Y( j2 N
(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。
/ ]0 R1 q+ l* N/ \4 B
7 J2 \8 T# u) A; h1 B6 R/ }$ N8 ^/ x(2)iptables版本:1.3.7; H# \" h5 w: P( o/ c

( p( Q, @2 w( w3 J* {: }2. 安装. D, Z3 |: ?* K* `9 X3 m, p! q

& U- R3 U8 p3 k- P安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit7 M- W% M8 e4 V% K
. Q2 T( R- G8 r2 s' j! f
3. 配置相应的iptables规则" z- [# x& j0 P+ A, n! s
6 Y+ R. F; g, N) \+ u( w6 z! g
示例如下:# E& A' N: s& ^$ v4 V

. Y4 G9 Z: g, _$ c# s; M(1)控制单个IP的最大并发连接数1 i( O5 D7 a$ \8 m0 n# m( U

( F9 i" k/ W6 f  Kiptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30
8 ^9 a+ I- i8 {% p4 f& R(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数: k" l6 P- k# ^( \6 k
5 m! e. h8 T9 n3 w6 Y
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个连接- B0 F: ]1 Y& {" N& H8 \
4. 验证5 N( J: r# x5 j4 ]" e

- g" }: S& v! s1 W9 t9 a9 p(1)工具:flood_connect.c(用来模拟攻击)
3 F# e) [* o5 U( m4 E
+ y& q* e" n; N1 g5 ]. ~(2)查看效果:: V- c8 y3 B# E& U6 P8 {& _
! ^: z  G9 P0 x8 b
使用
2 a- ?2 O# \3 W7 V* t- l1 \5 R. j- ~- v* `2 t+ b8 q
watch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'
/ L! |: i6 t# G6 |& ~3 j7 R. ~实时查看模拟攻击客户机建立起来的连接数,
* R+ A8 H5 p" n2 D% \% B5 Y
5 w$ ?# ~( q" _8 h9 ^( F* J1 h使用
* J0 t: }$ I# _
+ u1 L" |6 W0 p' h8 jwatch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'% m9 Y  \" h# x# y% F8 k" W
查看模拟攻击客户机被 DROP 的数据包数。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-14 06:55 , Processed in 0.084050 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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