1. 程式人生 > >shell作業ssh連線失敗三次及以上自動加入黑名單指令碼

shell作業ssh連線失敗三次及以上自動加入黑名單指令碼

要求:在/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~