shell指令碼自動過濾嘗試多次連線ip並新增到系統黑名單
阿新 • • 發佈:2020-11-26
#!/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 檔案