shell作業ssh連線失敗三次及以上自動加入黑名單指令碼
阿新 • • 發佈:2019-01-14
要求:在/var/log/secure查詢連線失敗的主機,並統計次數,累計連線失敗超過3次,將此主機加入系統黑名單(/etc/hosts.deny)
思路:首先檢視/var/log/secure檔案,用命令擷取並進行統計每個ip的出現次數,然後進行一個判斷,是否加入黑名單
下面是指令碼的詳細內容
#!/bin/bash cat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort | uniq -c |awk '{print $2"="$1}' > /tmp/blacklist MAXCOUNT="3" for i in `cat /tmp/blacklist` do IP=`echo $i | awk -F= '{print $1}'` NUM=`echo $i | awk -F= '{print $2}'` if [ $NUM -gt $MAXCOUNT ];then grep $IP /etc/hosts.deny > /dev/null if [ $? -gt 0 ];then echo "sshd:$IP" >> /etc/hosts.deny fi fi done
這裡我用另外一臺虛擬機器104模擬連線三次失敗的例子
然後回到103執行指令碼,並檢視黑名單檔案
然後在104再次嘗試登陸
bingo~