歡迎您光臨本站 註冊首頁

用SHELL腳本來防止SSH和vsftpd暴力破解

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  

【51CTO特稿】我的一台公網伺服器,由於網站採取的是雙備份策略,所以開放了vsftpd的21埠,近來發現許多人在嘗試暴力破解vsftpd和ssh,我隨便看了看/var/log/secure日誌,顯示如下:

  118.33.110.52=2834  119.145.254.77=37  121.254.179.199=226  121.88.250.243=35  200.29.110.104=168  202.78.173.199=250  222.221.2.210=373

這裡面除了119.145.254.77和121.88.250.243是正常的外,其它的基本都是惡意IP。

由於我的伺服器是置於LVS集群後面,所以我原來想用iptables的recent模塊解決這個問題的方法估計是行不通的。而且,伺服器的系統安裝的是CentOS 5.5 x86_64,iptables還暫時不支持此模塊,報錯如下:

  iptables: Unknown error 18446744073709551615  iptables: Unknown error 18446744073709551615

而由於機器已經在跑重要的業務,我又不想去升級內核,免得影響正常的網站運營,所以iptables的想法暫時告一段落;後來我又想到用HostsDeny的方法來解決這個問題,感覺這個方法還是比較繁瑣,還不如自己手動寫腳本來解決這個麻煩,腳本內容如下:

  #! /bin/bash  cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/black.txt  DEFINE="100"  for i in `cat /root/black.txt`  do  IP=`echo $i |awk -F= '{print $1}'`  NUM=`echo $i|awk -F= '{print $2}'`  if [ $NUM -gt $DEFINE ];  then  grep $IP /etc/hosts.deny > /dev/null  if [ $? -gt 0 ];  then  echo "sshd:$IP" >> /etc/hosts.deny  echo "vsftpd:$IP" >> /etc/hosts.deny  fi  fi  done

腳本思路如下:

由於/var/log/secure是以星期為輪詢的,所以我們每次可以查看這個文件,利用SHELL腳本統計出其中訪問失敗比較頻繁的IP,並定義一個閥值為100,如果大於100的話就將其放進/etc/hosts.deny文件,阻止其繼續訪問vsftpd和ssh;然後將其寫進crontab計劃列表裡,每隔一段時間進行一次排查,如果下次排查的某IP次數又大於100,首先檢查它在不在我們的黑名單,如果在的話就無視過去;如果不在,就繼續添加進/etc/hosts.deny文件。

我的/etc/crontab文件最後一行為

  * */1 * * * root sh /root/hosts_deny.sh

即每隔1小時就重複執行一次這個腳本,這裡也有一個情況要說明下,/var/log/secure是每隔一個星期輪詢一次的,所以我們這裡可以根據伺服器的具體情況來配置多少時間執行一次此腳本,暴力破解頻繁的機器可適當縮小這個周期。

我的公網機器運行腳本一段時間后,/etc/hosts.deny文件如下:

  sshd:119.145.254.77  vsftpd:119.145.254.77  sshd:222.221.2.210  vsftpd:222.221.2.210  sshd:118.218.136.25  vsftpd:118.218.136.25  sshd:118.33.110.52  vsftpd:118.33.110.52  sshd:123.196.113.11  vsftpd:123.196.113.11  sshd:14.140.172.74  vsftpd:14.140.172.74  sshd:200.29.110.104  vsftpd:200.29.110.104  sshd:202.102.89.81  vsftpd:202.102.89.81  sshd:202.78.173.199  vsftpd:202.78.173.199

 

 



[火星人 ] 用SHELL腳本來防止SSH和vsftpd暴力破解已經有435次圍觀

http://coctec.com/docs/net/show-post-68203.html