1. 程式人生 > 實用技巧 >shell指令碼自動過濾嘗試多次連線ip並新增到系統黑名單

shell指令碼自動過濾嘗試多次連線ip並新增到系統黑名單

#!/bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c | awk '{{ print $2 "=" $1 }}' > /opt/black_list.txt

for  blakc in `cat /opt/black_list.txt`
do
    IP = `echo $black | awk -F= '{ print $1}'`
    SEC = `echo $black | awk -F= '{ print $2}'`
    if [[ $SEC -get 10 ]] ;then
       grep
$IP /etc/hosts.deny >/dev/null if [[ $? -gt 0 ]];then echo 'sshd:$IP:deny' >> /etc/hosts.deny fi fi done

解釋:

  第一行過濾secure 日誌檔案第一個awk 以空格分隔是過濾出以failed 這一行中倒數四列,“”sort“” 排序 "uniq -c" 在每一列的旁邊顯示次數 第二個awk 調換查詢出來的ip 和 次數調換位置並且以等號相連線

第二行 使用for 迴圈遍歷檔案

  第四,五行 過濾出ip和次數

第一個if 如果次數大於10次先檢視 ip 是否已經存在 第一二個if 如果上次結果等於0 則寫入hosts.deny 檔案