CentOS通過shell指令碼防止SSH暴力破解

2021-08-27 07:58:39 字數 1923 閱讀 3852

#!/bin/bash

rm -rf /tmp/ip_list

# cat /var/log/secure | grep "failed password for" | awk '' | sort | uniq -c > /tmp/ip_list

cat /var/log/secure | grep "invalid user" | awk '' | sort | uniq -c > /tmp/ip_list

# cat /var/log/secure | grep "received disconnect from " | awk '' | awk -f: '' | sort | uniq -c >> /tmp/ip_list

define=30

cat /tmp/ip_list | while

read line

do ip=`echo

$line | awk ''`

num=`echo

$line | awk ''`

if [ $num

-gt$define ]; then

grep $ip /etc/hosts.deny > /dev/null 2>&1

if [ $? -gt

0 ]; then

echo

"sshd:$ip:deny # ="`date +%s` >> /etc/hosts.deny

fifidone

#封禁段時間的ip進行解封,如果解封時間小於日誌檔案生成週期,會出現重複封禁、解封情況。特別是有的系統不會按指定時間重新生成secure日誌檔案。暫未解決重複封禁ip問題

rm -rf /tmp/list /tmp/list1 #刪除臨時檔案,如果有的話

times=`date +%s` #記錄當前系統時間,用於跟已經封禁的ip進行對比

cat /etc/hosts.deny | grep "sshd" > /tmp/list #檢查/etc/hosts.deny檔案中是否有已經封禁的ip,如果有,則寫入/tmp/list檔案,以供後面篩選

if [ $? -eq

0 ] #如果上一條命令執行成功(即有被封禁ip),則執行後面的操作

then

cat /etc/hosts.deny | awk -f'='

'' | sed '/^$/d' > /tmp/list1 #將所有已經封禁的ip資訊進行過濾,過濾出時間資訊,寫入/tmp/list1檔案

cat /tmp/list1 | while

read line #通過while迴圈,依次讀取時間資訊

do dates=$[ times-line ] #將當前時間跟ip封禁時間進行運算

if [ $dates -ge 604800 ] #如果封禁ip時間大於指定時間(這裡是7天轉換後的秒數),則繼續執行後面的操作

then

lines=` head -n 1 /tmp/list ` #將符合解封時間的資訊寫入變數,方便後面刪除

# sed -i '/'"$line"'/d' /tmp/list1 #刪除時間資訊臨時檔案,這條可要可不要,因為前面是通過while 迴圈依次讀取,不會重複讀取第一行

sed -i '/'

"$lines"

'/d' /etc/hosts.deny /tmp/list #刪除符合解封的ip記錄。

fidone

else

#如果檢查/etc/hosts.deny檔案中沒有被封禁的關於sshd登入ip,則直接執行下面的命令(即退出指令碼)。

echo

'沒有需要解封的ip'

exit

0fi

將以上內容儲存為.sh檔案,通過crontab設定每分鐘執行一次即可實現對ssh暴力破解的ip進行封禁

shell通過ssh批量修改centos密碼

環境 centos7 1 準備ip位址文字 root 186 cat ip 100.98.100.186 100.98.100.1882 編寫批量修改密碼指令碼 root 186 more change passwd.sh bin bash source etc profile 人機互動是否執行批量...

linux通過shell指令碼傳送網路郵件

很多運維人員在做一些簡單監控的指令碼時,需要對監控內容能夠及時反饋,比如監控cpu使用率達到50 就會收到警告,這時候郵件起了很大的作用,那麼如何在shell指令碼中呼叫郵件工具呢,這裡有乙個簡便的方法 這時我們需要把登入資訊下如mail程式 在檔案 etc mail.rc中新增如下兩行 set f...

zabbix通過shell指令碼安裝異常問題定位

htxk 106主機資訊現象如下 通過zabbix get命令 zabbix get 7189 check access restrictions in zabbix agent configuration 解決方法 通過檢視zabbix相關的檔案,發現在usr local sbin目錄下存在zab...