防止ssh暴力破解的小工具denyhosts

DenyHosts 簡介

DenyHosts 是 Python 語言寫的一個程序軟件,運行於 Linux 上預防 SSH 暴力破解的,它會分析 sshd 的日誌文件(/var/log/secure),當發現重複的攻擊時就會記錄 IP 到 /etc/hosts.deny 文件,從而達到自動拒絕指定連接IP 的功能。

安裝:筆者在網上搜索時,發現很多的安裝者使用的是yum install denyhosts -y 來安裝,實測的話是不行的,提示找不到該包的存在,而下載壓縮包解壓安裝方法實測可行。

方法如下:

wget https://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz    下載軟件包
tar -zxvf DenyHosts-2.6.tar.gz    解壓
cd DenyHosts-2.6/    進入目錄
yum install python -y    下載編譯工具python
python setup.py install    安裝
cd /usr/share/denyhosts/    進入安裝目錄
cp denyhosts.cfg-dist denyhosts.cfg    重命名可加載的配置文件
cp daemon-control-dist daemon-control    重命名啓動工具
./daemon-control start    啓動
ln -s /usr/share/denyhosts/daemon-control /etc/init.d    爲添加開機啓動配置軟鏈接
chkconfig daemon-control on    添加開機啓動
chkconfig --list    檢測是否加入開機啓動

如果操作沒有遇到異常,那麼可以看到

如圖所示這樣,就已經加入了開機啓動,ok,基本的配置就是這樣,拿新安裝的一個虛擬機來進行測試:

在故意輸錯了幾次密碼之後,連接請求直接被拒絕了,實測有效,讓我們來看下安裝了denyhosts的這臺機器的hosts.deny文件:

果然,在文件中自動添加了嘗試暴力破解的IP地址,拒絕來自該IP的所有ssh連接請求。

denyhosts服務配置文件/usr/share/denyhosts/denyhosts.cfg詳解:

SECURE_LOG = /var/log/secure   #ssh日誌文件
# format is: i[dhwmy]
# Where i is an integer (eg. 7)
# m = minutes
# h = hours
# d = days
# w = weeks
# y = years
#
# never purge:
PURGE_DENY = 50m               #過多久後清除已阻止IP
HOSTS_DENY = /etc/hosts.deny   #將阻止IP寫入到hosts.deny
BLOCK_SERVICE = sshd           #阻止服務名
PURGE_THRESHOLD =              #定義了某一IP最多被解封多少次。某IP暴力破解SSH密碼被阻止/解封達到了PURGE_THRESHOLD次,則會被永久禁止;
DENY_THRESHOLD_INVALID = 1     #允許無效用戶登錄失敗的次數
DENY_THRESHOLD_VALID = 10      #允許普通用戶登錄失敗的次數
DENY_THRESHOLD_ROOT = 5        #允許root登錄失敗的次數
WORK_DIR = /usr/local/share/denyhosts/data #將deny的host或ip紀錄到Work_dir中
DENY_THRESHOLD_RESTRICTED = 1 #設定 deny host 寫入到該資料夾
LOCK_FILE = /var/lock/subsys/denyhosts #將DenyHOts啓動的pid紀錄到LOCK_FILE中,已確保服務正確啓動,防止同時啓動多個服務。
HOSTNAME_LOOKUP=NO            #是否做域名反解
ADMIN_EMAIL =                 #設置管理員郵件地址
DAEMON_LOG = /var/log/denyhosts #DenyHosts日誌位置

其他注意事項:

想要解禁一個已經被禁止掉的 IP,並加入到允許主機列表,只在 /etc/hosts.deny 刪除是沒用的。需要進入 /var/lib/denyhosts 目錄,進入以下操作:

1、停止 DenyHosts 服務

2、在 /etc/hosts.deny 中刪除你想取消禁止的主機 IP

3、編輯 DenyHosts 工作目錄(配置文件中 WORK_DIR)的所有文件,一個個刪除文件中你想取消的主機 IP 所在的行
/var/lib/denyhosts/hosts
/var/lib/denyhosts/hosts-restricted
/var/lib/denyhosts/hosts-root
/var/lib/denyhosts/hosts-valid
/var/lib/denyhosts/users-hosts

4、如果不想自己解禁,可以等到一個重置週期後,自動解禁

5、如果真的需要,可以在/etc/hosts.allow文件中添加信任IP,這樣的話就可以無視掉denyhosts服務的限制,慎用!

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