|
我的一台公網服務器,由於網站採取的是雙備份策略,所以開放了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 18446744073709551615iptables: 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文件如下:
腳本 SSH vsftpd 暴力破解 Linux
- 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
複製代碼
文章出處:網頁設計,網站架設 ,網路行銷,網頁優化,SEO - NetYea 網頁設計 |
|