DenyHosts教程:防暴力破解SSH密码
背景
此前服務(wù)器多次被惡意挖礦,我們通過(guò)下面的命令搜索SSH遠(yuǎn)程登錄日志,發(fā)現(xiàn)攻擊者的IP嘗試登錄了200多次,即暴力破解了被攻擊用戶(hù)的密碼。通過(guò)詢(xún)問(wèn)該用戶(hù)得知,設(shè)置的密碼確實(shí)比較簡(jiǎn)單,為了防止后面被爆破所以考慮關(guān)閉密碼訪問(wèn),但又不是很方便,那么有沒(méi)有工具能自動(dòng)監(jiān)控登錄日志,并將登錄失敗次數(shù)過(guò)多的用戶(hù)直接拉黑呢?
grep "Failed password for invalid user" /var/log/auth.log | awk '{print $13}' | sort | uniq -c | sort -nr | more還真有,DenyHosts就是這樣一個(gè)基于Python開(kāi)發(fā)的工具,它運(yùn)行于Linux平臺(tái)用于防止SSH暴力破解密碼登錄,它會(huì)自動(dòng)分析SSHD服務(wù)的日志(Ubuntu的是/var/log/auth.log文件)并維護(hù)一個(gè)黑名單,更多細(xì)節(jié)可以查詢(xún)官網(wǎng)。
安裝
需要注意的是,在安裝這個(gè)軟件之前建議先清理一下SSHD登錄日志,因?yàn)檫@個(gè)軟件會(huì)掃描歷史日志,若它檢測(cè)到你曾經(jīng)登錄失敗的次數(shù)小于允許的次數(shù),那么你也會(huì)被封禁。可以通過(guò)cat /dev/null > /var/log/auth.log命令來(lái)清理日志文件,清理后請(qǐng)重啟日志服務(wù),也就是service rsyslog restart。上述命令和后續(xù)命令均需要root用戶(hù)來(lái)處理,如不是root用戶(hù)則命令之前需要使用sudo來(lái)使用管理員權(quán)限。
在Ubuntu下,安裝DenyHosts相對(duì)比較簡(jiǎn)單,也不需要采用源碼安裝的方式,直接通過(guò)apt就可以安裝,具體命令如下。
apt-get update apt-get install denyhosts service denyhosts status安裝后服務(wù)會(huì)自動(dòng)運(yùn)行,應(yīng)當(dāng)會(huì)看到如下的運(yùn)行狀態(tài)。
然后就是服務(wù)的配置了,服務(wù)的配置文件為/etc/denyhosts.conf,整個(gè)程序的工作目錄為/var/lib/denyhosts/,程序禁用的IP列表則在黑名單文件/etc/hosts.deny中。
配置文件中需要重點(diǎn)關(guān)注下面幾項(xiàng)。
SECURE_LOG = /var/log/auth.log # sshd日志文件 HOSTS_DENY = /etc/hosts.deny # 黑名單文件 PURGE_DENY = 3d # 過(guò)多久后清除已經(jīng)禁止的,空代表永不解禁 其中w代表周,d代表天,h代表小時(shí),s代表秒,m代表分鐘 BLOCK_SERVICE = sshd # 阻止服務(wù)名 DENY_THRESHOLD_INVALID = 5 # 允許無(wú)效用戶(hù)(在/etc/passwd未列出)登錄失敗次數(shù),允許無(wú)效用戶(hù)登錄失敗的次數(shù). DENY_THRESHOLD_VALID = 5 # 允許普通用戶(hù)登錄失敗的次數(shù) DENY_THRESHOLD_ROOT = 5 # 允許root登錄失敗的次數(shù)修改配置文件后需要重啟服務(wù),對(duì)應(yīng)的命令如下。
service denyhosts restart若想要卸載DenyHosts則使用下面的命令。
service denyhosts stop apt-get purge denyhosts解封
由于我在服務(wù)器上使用了frp進(jìn)行內(nèi)網(wǎng)穿透,導(dǎo)致127.0.0.1這個(gè)IP被封,我無(wú)法使用frp服務(wù)了。在卸載DenyHosts無(wú)效后,發(fā)現(xiàn)依然無(wú)法訪問(wèn),那大概知道是系統(tǒng)級(jí)別的禁用IP了,此是可以通過(guò)下面的命令來(lái)解封。
IP=輸入想要解封的IP service denyhosts stop sed -i "/$IP/d" /etc/hosts.deny sed -i "/$IP/d" /var/lib/denyhosts/hosts-valid sed -i "/$IP/d" /var/lib/denyhosts/users-hosts sed -i "/$IP/d" /var/lib/denyhosts/hosts sed -i "/$IP/d" /var/lib/denyhosts/hosts-root sed -i "/$IP/d" /var/lib/denyhosts/hosts-restricted iptables -D INPUT -s $IP -j DROP總結(jié)
DenyHosts是非常非常實(shí)用的防SSH暴力破解密碼的一個(gè)工具,為了防止挖礦,可以安裝使用它。
總結(jié)
以上是生活随笔為你收集整理的DenyHosts教程:防暴力破解SSH密码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 0709-To Lower Case(转
- 下一篇: 2021已去,2022未来