不知道得罪了哪路神仙,收到nagios報警,發現有個**有cc攻擊。看樣子,量還不小,把伺服器的負載都弄到40+了,雖然**還能開啟,但開啟也是非常的緩慢。如果不是配置高點,估計伺服器早就掛掉了。看來又是不乙個不眠之夜了。
迅速檢視一下nginx的訪問日誌:
貌似全是像這樣的狀態。
我先緊急手動封了幾個訪問量比較大的ip。
指令碼寫好了。如圖
我們來執行一下,執行幾分鐘後,如下圖所示
經過半個小時的觀察,伺服器負載也降到0.幾了,指令碼也不斷在封一些cc攻擊的ip。
一直讓他執行著,晚上應該能睡個好覺了。
下來我們來對指令碼進行解釋一下
#vim fengip.sh
#! /bin/bash
touch all #建立all檔案,後面有用到
for i in `seq 1 32400` #迴圈32400次,預計到早上9點的時間
do sleep 1
x=`tail -500 access.log |grep 'http/1.1" 499 0 "-" "opera/9.02'|awk ''|sort -n|uniq` #檢視最後500行的訪問日誌,取出包含 'http/1.1" 499 0 "-" "opera/9.02' 的行的ip並排序,去重複
if [ -z "$x" ];then
echo "kong" >>/dev/null #如果$x是空值的話,就不執行操作,說明500行內,沒有帶 'http/1.1" 499 0 "-" "opera/9.02' 的行
else
for ip in `echo $x` #如果有的話,我們就遍歷這些ip
do real=`grep -l ^$ip$ all` #檢視all檔案裡有沒有這個ip,因為每封一次,後面都會把這個ip寫入all檔案,如果all檔案裡面有這個ip的話,說明防火牆已經封過了。
if [ $? -eq 1 ];then #如果上面執行不成功的話,也就是在all檔案裡沒找到,就用下面的防火牆語句把ip封掉,並把ip寫入all檔案
echo iptables -a input -s $ip -p tcp --dport 80 -j drop
iptables -a input -s $ip -p tcp --dport 80 -j drop
echo $ip >>all
fi done
fi done
使用 shell 防攻擊使用shell指令碼集合
主要是在前端伺服器 nginx或者lvs使用 其中涉及到的技術shell iptables以及linux系統命令相關 檢查iptables cc ip 訪問排名 bin bash num 100 設定最高連線的值 ip netstat an grep tcp.80 egrep v listen 12...
功能強大的防DDOS攻擊SHELL指令碼
文章作者 高進波 這幾天伺服器一直受到ddos的攻擊,目前只能通過封ip 來暫時解決。ip不源變化多端,光靠手工來新增簡直是惡夢,想了個方法,用shell來做。比較簡單,但很實用 以下內容根據作者原文進行適當的修改 1.編寫指令碼 mkdir root bin vi root bin dropip....
解答網友shell問題一例20140702
解答思想 我們學習shell的最好方法就是參看系統的標桿指令碼及幫助的example。下面是網絡卡啟動指令碼的有關這位問題的指令碼樣例。很明顯上述中括號字元比較等號兩邊有空格。所以上述的問題答案就不言而喻了。root oldboy cat oldboytest.sh bin sh stra aa s...