您好,登錄后才能下訂單哦!
根據web日志或者網絡連接數,監控當某個IP并發連接數或者段時間內PV連接到達100及使用防火墻命令封堵對應的IP,監控頻率每隔3分鐘;防火墻命令為:iptables -A INPUT -s 192.168.0.7 -j DROP
查看防火墻iptables -L -n
第一種:監控日志
#!/bin/sh
while true
do
cat access_log.dms|awk '{print $1}'|sort|uniq -c|sort -nr > a.log
exec< a.log
while read line
do
pv=$(echo $line|awk '{print $1}')
ip=$(echo $line|awk '{print $2}')
if [ $pv -gt 1000 ]&& [iptables -L -n|grep "$ip"|wc -l
-eq 0 ];then
iptables -A INPUT -s $ip -j DROP
fi
done
sleep 180
done
說明:
while讀文件的寫法
1)cat al.log|while read line
do
done2)exec<a.log
while read line
do
done3)while read line
do
done<a.log
sort sort將文件的每一行作為一個單位,相互比較,比較原則是從首字符向后,依次按ASCII碼值進行比較,最后將他們按升序輸出。
-n 按數字進行排序
-r 反向排序
-f會將小寫字母都轉換為大寫字母來進行比較,亦即忽略大小寫
uniq 命令 去重
-c 在每一行加上重復的次數
sort -t -k 參數
-t : tables 指定分隔符,默認tab為分隔符
-k: 指定安裝哪一個分割區域進行排序
[rocrocket@rocrocket programming]$ cat facebook.txt
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4
[rocrocket@rocrocket programming]$ sort -n -k 2 -t : facebook.txt
#-n 按照數字進行排序
#-t 此例中指定 : 為分隔符
#-k 此例中按照分割的第二區域進行排序
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3
iptables 防火墻
iptables -L -n|grep "$ip"|wc -l 查看相關IP在防火墻里是否有封堵
第二種:監控ip連接數
#!/bin/sh
while true
do
netstat -an|grep EST|awk -F '[ :]+' '{print $6}'|sort|uniq -c >a.log
exec< a.log
while read line
do
pv=$(echo $line|awk '{print $1}')
ip=$(echo $line|awk '{print $2}')
if [ $pv -gt 1000 ]&& [iptables -L -n|grep "$ip"|wc -l
-eq 0 ];then
iptables -A INPUT -s $ip -j DROP
fi
done
sleep 180
done
說明:
netstat -an|grep EST|awk -F '[ :]+' '{print $6}'|sort|uniq -c >a.log
netstat命令
-a (all)顯示所有選項,默認不顯示LISTEN相關
-t (tcp)僅顯示tcp相關選項
-u (udp)僅顯示udp相關選項
-n 拒絕顯示別名,能顯示數字的全部轉化成數字。
-l 僅列出有在 Listen (監聽) 的服務狀態
-p 顯示建立相關鏈接的程序名
-r 顯示路由信息,路由表
-e 顯示擴展信息,例如uid等
-s 按各個協議進行統計
-c 每隔一個固定時間,執行該netstat命令。
提示:LISTEN和LISTENING的狀態只有用-a或者-l才能看到
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。