2012-05-10

DenyHosts 預防 SSH 暴力 破解

DenyHosts 預防 SSH 暴力 破解


DenyHosts是用Python語言編寫的一個程式,它會分析你的日誌檔,當發現重複的錯誤登錄時就會記錄IP/etc/hosts.deny,然後自動封閉該IP.功能很不錯!!下面是安裝過程(環境CentOS 5.8, DenyHosts 2.6)


查看系統:

cat /etc/redhat-release

CentOS release 5.8 (Final)
  
:
wget http://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz

 安裝:

tar -zxvf DenyHosts-2.6.tar.gz

cd DenyHosts-2.6

python setup.py install

修改設定檔:

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

下面這是最常修改的地方:

#日誌檔,根據這個檔來判斷
SECURE_LOG = /var/log/secure

#記錄遮罩的IP
HOSTS_DENY = /etc/hosts.deny

#多久清除遮罩的IP,我設置一天
PURGE_DENY = 1d

#禁止的服務,我設置為全部,禁止登錄SSH/FTP
BLOCK_SERVICE = ALL

#允許無效用戶失敗的數次
DENY_THRESHOLD_INVALID = 1

#允許普通用戶失敗的次數
DENY_THRESHOLD_VALID = 1

#允許root用戶失敗的次數
DENY_THRESHOLD_ROOT = 3

#是否做功能變數名稱反解析
HOSTNAME_LOOKUP=NO

#管理員Email
ADMIN_EMAIL = root

SYNC_SERVER = http://xmlrpc.denyhosts.net:9911 (取消注解)

最後就是設置啟動腳本:

  • cp /usr/share/denyhosts/daemon-control-dist /usr/share/denyhosts/daemon-control
  • chown root /usr/share/denyhosts/daemon-control
  • chmod 755 /usr/share/denyhosts/daemon-control
  • ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts
  • chkconfig --level 345 denyhosts on

啟動denyhosts:


service denyhosts start




安裝完成了,每次開機都自動啟動的,自己測試下,輸入幾次錯誤的密碼.然後看看cat /etc/hosts.deny 裡面是否有被封的IP,再然後測試下,用被封IP是否還能登錄SSH.我的新建了USER1帳號,輸入幾次密碼錯誤,然後在連,就連不上了。

刪除誤封的IP

vim /etc/hosts.deny
(找到你要解封的IP去掉)

vim /var/log/secure
(找到使用者登陸的錯誤資訊也給刪掉!!!)

記著重啟 denyhosts  ssh 的服務喲。