拒絕遠端非法使用者用過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...