shell指令碼之拒絕非法使用者遠端

2022-04-29 16:33:08 字數 1091 閱讀 1114

拒絕遠端非法使用者用過ssh暴力登陸伺服器。一旦輸入密碼錯誤四次,直接拒絕主機ip登陸。

指令碼如下:

#!/bin/bash

#auto deny ssh error ip

#author is lingshu

#2018-04-30

###########################

#definiens file path

ssh_log=/var/log/secure

deny_list=/var/log/deny.ip

iptables=/etc/sysconfig/iptables

#檢視日誌檔案的最後一千行,如果發現有輸錯密碼被拒絕四次以上的主機。就抓取被拒絕的ip位址。

ip_list=`tail -n 1000 /var/log/secure | grep "failed password" |awk ''|uniq -c |awk '$1>4'`

#將拒絕迴圈寫入iptables配置檔案

for i in $ip_list

do#定義規則模板

rule="-a input -s $i -m state --state new -m tcp -p tcp --dport 22 -j drop"

#看主機ip是否已經被拒絕過。避免重複寫入拒絕規則。

cat $iptables | grep $rule &>/dev/null

if [ $? -ne 0 ];then

#如果沒有寫過就引用模板新增規則

sed -i "/lo/a $rule" $iptables #!!!用sed替換變數,需要用雙引號!!! 這點一定要注意!!!

#重啟iptables,使規則生效

service iptables restart

else

#如果已經寫過規則,就列印一條提示資訊。

echo "deny rule existing..."

fidone

附:改變檔案編碼

iconv -f utf8 -t gb2312 denyip.sh -o win.denyip.sh    將編碼格式從utf8更改為gb2312,並生成新檔案

shell 指令碼之for

subdir joan joanna for subdir in subdir doecho building subdir done 結果 building joan building joanna 結果正常。subdir 1 2 3 4 for subdir in subdir doecho b...

用shell指令碼監控系統

簡單的用shell指令碼寫乙個 監控 程式作為思路,大致為 實時檢測系統的記憶體使用率,如果大於閾值那麼報警 如果有條件可以使用簡訊介面或者實在不行可以使用郵件通知 並記錄到日誌檔案裡,如果小於閾值那麼正常顯示。bin bash check mem 100 free grep i mem awk b...

用shell指令碼監控系統

簡單的用shell指令碼寫乙個 監控 程式作為思路,大致為 實時檢測系統的記憶體使用率,如果大於閾值那麼報警 如果有條件可以使用簡訊介面或者實在不行可以使用郵件通知 並記錄到日誌檔案裡,如果小於閾值那麼正常顯示。bin bash check mem 100 free grep i mem awk b...