利用denyhosts防止服務器被ssh暴力破解

博主我新買的VPS建站沒幾天,心想應該沒人動我的歪主意就一直沒太注意服務器安全。今天用iftop查看到有幾個IP一直連接中,而我的blog裏的流量統計頁面訪問數量卻沒有新增,很明顯這不是在訪問blog。通過netstat -anp 可以查看到這幾個IP,尤其有個IP還不斷更換端口一直嘗試訪問我的22端口,能用22端口無非是ssh終端連接。心裏一想百分百99%是嘗試暴力破解,事不宜遲趕緊封鎖。

一查烏克蘭的,還不能ping它,也就是說單向訪問

通過iftop能實時查看流量連接情況

tail -f /var/log/secure 可以查看ssh登陸失敗的信息,證實了193.201.224.199這傢伙在嘗試暴力破解

利用denyhosts 防止暴力破解ssh

DenyHosts是Python語言寫的一個程序,它會分析sshd的日誌文件(/var/log/secure),當發現重 復的攻擊時就會記錄IP到/etc/hosts.deny文件,從而達到自動屏IP的功能。

思路:利用讀取到/var/log/secure登陸失敗的IP信息,我們可以設定一個規則,如果登陸失敗超過多少次,我們把這個IP寫到 /etc/hosts.deny中,拒絕訪問!

1、先把始終允許的IP填入 /etc/hosts.allow ,因爲自己訪問超過了次數那就尷尬了。不過一般購買的VPS都有後臺可以更改ROOT登陸密碼,所以這個步驟也可以不設置。

# vim /etc/hosts.allow
   # sshd:IP:allow

2、安裝DenyHosts 官方網站爲:http://denyhosts.sourceforge.net

# tar -zxvf DenyHosts-2.6.tar.gz
# cd DenyHosts-2.6
# python setup.py install 

3、配置

# cd /usr/share/denyhosts/ 
# cp denyhosts.cfg-dist denyhosts.cfg 
# vi denyhosts.cfg

SECURE_LOG = /var/log/secure  #要讀取安全日誌路徑,默認的不管它
HOSTS_DENY = /etc/hosts.deny #將阻止IP寫入到hosts.deny,默認的不管它
PURGE_DENY = 1d #設定過多久後清除已阻止IP (m=分鐘,h=小時,d=天,w=周)
BLOCK_SERVICE = sshd #阻止服務名
DENY_THRESHOLD_INVALID = 5 #允許無效用戶登錄失敗的次數
DENY_THRESHOLD_VALID = 10 #允許普通用戶登錄失敗的次數
DENY_THRESHOLD_ROOT = 3 #允許root登錄失敗的次數
(上面3個登陸失敗的次數建議不要設定太苛刻,以免自己輸錯了被列入黑名單了)
DENY_THRESHOLD_RESTRICTED = 1 #設定 deny host 寫入到該資料夾
WORK_DIR = /usr/local/share/denyhosts/data #將deny的host或ip紀錄到Work_dir中
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES #假如設定爲YES,那麼已經設爲白名單中的IP登陸失敗也會被設爲可疑,也會被列入黑名單中,設定NO的意思就相反。
HOSTNAME_LOOKUP=YES #如果可以的話記錄登陸失敗的hostname
LOCK_FILE = /var/lock/subsys/denyhosts #將DenyHOts啓動的pid紀錄到LOCK_FILE中,已確保服務正確啓動,防止同時啓動多個服務。 
HOSTNAME_LOOKUP=NO #是否做域名反解 
ADMIN_EMAIL = #設置管理員郵件地址 
DAEMON_LOG = /var/log/denyhosts #自己的日誌文件 
DAEMON_PURGE = 10m #該項與PURGE_DENY 設置成一樣,也是清除hosts.deniedssh 用戶的時間。 

4、設置啓動腳本

# cp daemon-control-dist daemon-control
# chown root daemon-control
# chmod 700 daemon-control
完了之後執行daemon-contron start就可以了。
# ./daemon-control start
如果要使DenyHosts每次重起後自動啓動還需做如下設置:
# ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts
# chkconfig –add denyhosts
# chkconfig denyhosts on

然後就可以啓動了:

# service denyhosts start
# ps -ef|grep denyhosts #檢查是否啓動

 # vim /etc/hosts.deny #查看內是否有禁止的IP,有的話說明已經成功了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章