Shell指令碼防攻擊一例

2021-06-26 09:36:20 字數 1967 閱讀 1133

不知道得罪了哪路神仙,收到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...