云主機Centos使用DenyHosts阻止SSH爆破
云主機Centos使用DenyHosts阻止SSH爆破
該教程僅適用于(yu)云主(zhu)機產品(pin)
DenyHosts是(shi)一個開源且免費的基(ji)于日志的入侵防御安(an)全(quan)程序。
其通過(guo)監(jian)測身(shen)份驗證(zheng)登(deng)錄(lu)日志中失敗的登(deng)錄(lu)嘗試,屏蔽這些登(deng)錄(lu)者的IP地址,從而預防對(dui)SSH服務器的暴力(li)破(po)解。
1.下載(zai)DenyHosts
wget
//mirror.neu.edu.cn/fedora-epel/7/x86_64/d/denyhosts-2.9-4.el7.noarch.rpm

2.安裝DenyHosts
rpm -ivh denyhosts-2.9-4.el7.noarch.rpm

3.查看(kan)是(shi)否安(an)裝成(cheng)功,查看(kan)DenyHosts軟(ruan)件安(an)裝路徑信息
rpm -ql denyhosts

4.查看默認配置(zhi)文件(jian)(附 配置(zhi)說明)
grep -v "^#" /etc/denyhosts.conf | grep -v "^$"
配置文件信息如下:
SECURE_LOG = /var/log/secure #ssh 日志文(wen)(wen)件(jian),它是根據這個文(wen)(wen)件(jian)來判斷的。
HOSTS_DENY = /etc/hosts.deny #控(kong)制用戶登陸的文(wen)件
PURGE_DENY = 4w #過(guo)多(duo)久后清除已經(jing)禁(jin)止的(de)IP,其中w代(dai)表(biao)周,d代(dai)表(biao)天,h代(dai)表(biao)小時,s代(dai)表(biao)秒,m代(dai)表(biao)分鐘
BLOCK_SERVICE = sshd #denyhosts所要阻止的(de)服務名稱(cheng)
DENY_THRESHOLD_INVALID = 5 #允許無(wu)效用(yong)戶(hu)登錄失敗的次數(shu)
DENY_THRESHOLD_VALID = 10 #允許普通用(yong)戶登(deng)錄失敗的次(ci)數
DENY_THRESHOLD_ROOT = 1 #允許ROOT用戶登(deng)錄(lu)失敗(bai)的次數
DENY_THRESHOLD_RESTRICTED = 1 #在(zai)失敗次數后阻(zu)止每個主(zhu)機登(deng)錄(lu)嘗(chang)試次數已超過(guo)此值。該值適用于只出現(xian)在(zai) WORK_DIR/restricted-usernames 文件中的用戶(hu)名。
WORK_DIR = /var/lib/denyhosts #denyhosts工作數據目錄(lu),將deny的host或ip記(ji)錄(lu)到(dao)WORK_DIR中
ETC_DIR = /etc
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=NO #是否做域名反解
LOCK_FILE = /var/lock/subsys/denyhosts
#將DenyHost啟動的(de)pid記(ji)錄(lu)到(dao)LOCK_FILE中,已(yi)確保服(fu)務正確啟動,防止同(tong)時啟動多個服(fu)務
############ THESE SETTINGS ARE OPTIONAL ############
ADMIN_EMAIL = root@localhost #設(she)置(zhi)管理員郵件地(di)址
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts
SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]
ALLOWED_HOSTS_HOSTNAME_LOOKUP=NO
AGE_RESET_VALID=5d #有效用戶登錄失敗(bai)計數(shu)歸零的時間
AGE_RESET_ROOT=25d #ROOT用戶登(deng)錄失敗計數歸零的時間
AGE_RESET_RESTRICTED=25d #用(yong)戶的失敗登(deng)錄(lu)計數(shu)重置為(wei)0的時間(jian)
AGE_RESET_INVALID=10d #無效用戶(hu)登錄失(shi)敗計數(shu)歸零(ling)的(de)時間
######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE ##########
DAEMON_LOG = /var/log/denyhosts #denyhost服(fu)務日(ri)志文件
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h
#該項與PURGE_DENY 設置(zhi)成一樣,也是(shi)清(qing)除hosts.deniedssh 用戶(hu)的(de)時間
######### THESE SETTINGS ARE SPECIFIC TO ##########
######### DAEMON SYNCHRONIZATION ##########
SYNC_UPLOAD = no
SYNC_DOWNLOAD = no
5.修改配置文件
vi /etc/denyhosts.conf
為了不影響正常(chang)SSH登(deng)錄(lu),建(jian)議的時間(jian)與次數配置如下

設置開機啟(qi)動并運(yun)行denyhosts服務
systemctl enable denyhosts
systemctl start denyhosts
運(yun)行后查看(kan)denyhosts服務狀(zhuang)態
Systemctl status denyhosts
查看(kan)服務(wu)狀態為(wei)Action (running)

測試(shi)SSH暴(bao)力破解登錄

多次(ci)失敗后再次(ci)SSH遠程

通過查看DenyHosts日志信(xin)息
tail -f /var/log/denyhosts
觀察(cha)可知 在(zai)多次(ci)失敗SSH遠程(cheng)后(hou)用(yong)于(yu)測試(shi)的IP:121.*.*.162被封禁,禁止SSH遠程(cheng)

通過(guo)查看(kan)hosts.deny文(wen)件 查看(kan)當(dang)前(qian)已被(bei)禁止(zhi)的IP
cat /etc/hosts.deny


