該教程僅適用于云主機(jī)產(chǎn)品
DenyHosts是一個(gè)開源且免費(fèi)的基于日志的入侵防御安全程序。
其通過監(jiān)測身份驗(yàn)證登錄日志中失敗的登錄嘗試,屏蔽這些登錄者的IP地址,從而預(yù)防對SSH服務(wù)器的暴力破解。
1.下載DenyHosts
wget http://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.查看是否安裝成功,查看DenyHosts軟件安裝路徑信息
rpm -ql denyhosts
4.查看默認(rèn)配置文件(附 配置說明)
grep -v "^#" /etc/denyhosts.conf | grep -v "^$"
配置文件信息如下:
SECURE_LOG = /var/log/secure #ssh 日志文件,它是根據(jù)這個(gè)文件來判斷的。
HOSTS_DENY = /etc/hosts.deny #控制用戶登陸的文件
PURGE_DENY = 4w #過多久后清除已經(jīng)禁止的IP,其中w代表周,d代表天,h代表小時(shí),s代表秒,m代表分鐘
BLOCK_SERVICE = sshd #denyhosts所要阻止的服務(wù)名稱
DENY_THRESHOLD_INVALID = 5 #允許無效用戶登錄失敗的次數(shù)
DENY_THRESHOLD_VALID = 10 #允許普通用戶登錄失敗的次數(shù)
DENY_THRESHOLD_ROOT = 1 #允許ROOT用戶登錄失敗的次數(shù)
DENY_THRESHOLD_RESTRICTED = 1 #在失敗次數(shù)后阻止每個(gè)主機(jī)登錄嘗試次數(shù)已超過此值。該值適用于只出現(xiàn)在 WORK_DIR/restricted-usernames 文件中的用戶名。
WORK_DIR = /var/lib/denyhosts #denyhosts工作數(shù)據(jù)目錄,將deny的host或ip記錄到WORK_DIR中
ETC_DIR = /etc
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=NO #是否做域名反解
LOCK_FILE = /var/lock/subsys/denyhosts
#將DenyHost啟動的pid記錄到LOCK_FILE中,已確保服務(wù)正確啟動,防止同時(shí)啟動多個(gè)服務(wù)
############ THESE SETTINGS ARE OPTIONAL ############
ADMIN_EMAIL = root@localhost #設(shè)置管理員郵件地址
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts
SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]
ALLOWED_HOSTS_HOSTNAME_LOOKUP=NO
AGE_RESET_VALID=5d #有效用戶登錄失敗計(jì)數(shù)歸零的時(shí)間
AGE_RESET_ROOT=25d #ROOT用戶登錄失敗計(jì)數(shù)歸零的時(shí)間
AGE_RESET_RESTRICTED=25d #用戶的失敗登錄計(jì)數(shù)重置為0的時(shí)間
AGE_RESET_INVALID=10d #無效用戶登錄失敗計(jì)數(shù)歸零的時(shí)間
######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE ##########
DAEMON_LOG = /var/log/denyhosts #denyhost服務(wù)日志文件
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h
#該項(xiàng)與PURGE_DENY 設(shè)置成一樣,也是清除hosts.deniedssh 用戶的時(shí)間
######### THESE SETTINGS ARE SPECIFIC TO ##########
######### DAEMON SYNCHRONIZATION ##########
SYNC_UPLOAD = no
SYNC_DOWNLOAD = no
5.修改配置文件
vi /etc/denyhosts.conf
為了不影響正常SSH登錄,建議的時(shí)間與次數(shù)配置如下
設(shè)置開機(jī)啟動并運(yùn)行denyhosts服務(wù)
systemctl enable denyhosts
systemctl start denyhosts
運(yùn)行后查看denyhosts服務(wù)狀態(tài)
Systemctl status denyhosts
查看服務(wù)狀態(tài)為Action (running)
測試SSH暴力破解登錄
多次失敗后再次SSH遠(yuǎn)程
通過查看DenyHosts日志信息
tail -f /var/log/denyhosts
觀察可知 在多次失敗SSH遠(yuǎn)程后用于測試的IP:121.*.*.162被封禁,禁止SSH遠(yuǎn)程
通過查看hosts.deny文件 查看當(dāng)前已被禁止的IP
cat /etc/hosts.deny