第一个脚本是通过查找日志中访问次数过多的ip,并用iptables屏蔽。
, K! T# @6 O7 \7 n7 O% w
0 X2 r/ o* y4 ~1 c 1.#!/bin/bash
( T1 g1 o: {! t$ Z: a
e6 Q3 V0 R, r) E) m5 f 2.cur=`date +%H%M%S`
# _1 T5 a# r1 |6 {# J$ ?! m
. z, h8 \8 ]: D2 y 3.becur=`date -d "1 minute ago" +%H%M%S`
0 x1 e4 R. a3 C" Y 2 b# g( W6 E8 L- H7 A( w; j, o- }6 T
4.badip=`tail -n 10000 /home/www/log/access.log | egrep -v "\.(gif|jpg|jpeg|png|css|js)" | awk -v a="$becur" -v b="$cur" -F [' ':] '{t=$5$6$7;if (t>=a && t=20) print $2}'`
0 C* O7 H( h. U6 G. ? % _- n, d& }" N% C- M5 O$ g0 g
5.if [ ! -z "$badip" ];then
3 n" m8 m& M& A7 f
% C, _3 D1 i( q4 G* d% R. H 6.for ip in $badip;
8 Q; [& p' _. P4 ~
! q/ Z( F+ m7 w: e 7.do
7 D* P1 q* L5 }" B: O+ F & q" M6 \% }4 ?. R
8.if test -z "`/sbin/iptables -nL | grep $ip`";then6 J1 `( b2 b7 g- ]9 W' P# T
, q; h* |" o7 X, M2 U 9./sbin/iptables -I INPUT -s $ip -j DROP
3 s; D; L$ _8 _, j
+ R7 ?" K r8 A3 C% \4 f6 l& D* ^0 Q 10.fi
$ K W m* O0 B9 M 4 Y& @& R! Y" C5 g8 z! ^) M7 y
11.done# q! r: _3 n9 A8 N, Y" h
, h& f0 u2 Y# ]! _( ?# h5 k) J5 l% b% M
12.fi
6 }5 Z( X. c$ O0 P% b1 k7 J7 ~' Q 4 Y6 x' n& P8 P4 d
将此代码保存为ban.sh,加入cronjob使每分钟执行一次。
, x* S8 J1 f# K: X5 m: u
3 ]3 a F* A5 U" {6 C/ R/ u% H7 a 此脚本的作用是:利用iptables屏蔽每分钟访问页面超过20的IP,这些页面已经排除图片,css,js等静态文件。
7 ^8 d) t7 n' p v$ a' J7 b- ]$ P 0 c5 S, c1 w ?6 [
第二个脚本是通过在日志中查找cc攻击的特征进行屏蔽。2 a2 Z0 \ B" Q
4 f' L/ x% {* U6 t I4 l) i 1.#!/bin/bash0 W: \9 Q/ x2 x N* b0 b
. X; z2 i" C0 L3 r+ C' y. A4 f" |
2.keyword="cc-atack"
' N0 e2 F6 f/ n4 |3 a
8 }. i" M8 [+ h( B8 A 3.badip=`tail -n 5000 /home/www/log/access.log | grep "$keyword" | awk '{print $1}' | sort | uniq -c | sort -nr | awk '{print $2}'`, \& {7 _, _6 x: C5 c; F
( q$ T) t8 A2 M1 c/ B 4.if [ ! -z "$badip" ];then1 T i' R& w+ E5 f6 R: j
( `. J7 j1 L4 z f t 5.for ip in $badip;# C' @4 ?7 H ^% ~7 r! j1 U
( _" {2 v- N& b' h
6.do- w" s% n9 p7 X
" O; O5 E9 [. N7 Z: M7 _1 e
7.if test -z "`/sbin/iptables -nL | grep $ip`";then" o" k+ A7 H9 t* p, L4 o& i# o. _4 x- B
4 v" V8 i2 E& C! u1 F$ { 8./sbin/iptables -I INPUT -s $ip -j DROP
: P) W i, c& a+ O & K" Q+ @6 H+ u; L, G
9.fi/ A5 B5 D) f7 p
/ R* d8 u1 c1 ~4 }
10.done* Z; i8 Y5 ]0 Z4 ^/ h) O
- o+ l3 V$ K5 V& l# s
11.fi
+ w5 {4 J5 E+ R" _% i- a - t0 K/ a6 n. X: C7 c
keyword则是日志中cc的特征,替换成有效的即可。$ d7 m3 Z! Q/ f) Z
- A* n6 ]$ u8 g2 W5 W
No tags for this post. Posted in: 建站手札 |