以前我已經在wooyun和91ri上發表了這篇文章,今天轉到51cto上。。。git
默認的ssh日誌是不帶密碼記錄功能的,如今想把登陸密碼記錄下來,這樣就能夠蒐集***的ssh爆破字典了,從而能夠反掃回去。 具體方法就是給默認的ssh源碼打個patch
#wget http://openbsd.cs.toronto.edu/pub/OpenBSD/OpenSSH/portable/openssh-6.6p1.tar.gz
#tar xzvf openssh-6.6p1.tar.gz
#cd openssh-6.6p1
在當前目錄下建立一個patch文件sshlog.patch,代碼以下: web
--- auth-passwd.c 2014-05-25 19:51:28.000000000 -0400 +++ auth-passwd-sshlog.c 2014-02-11 12:19:42.000000000 -0500 @@ -82,6 +82,7 @@ { struct passwd * pw = authctxt->pw; int result, ok = authctxt->valid; + logit("sshlog: %s %s", authctxt->user, password); #if defined(USE_SHADOW) && defined(HAS_SHADOW_EXPIRE) static int expire_checked = 0; #endif
而後打patch
#patch --dry-run < sshlog.patch
#patch < sshlog.patch
備份以前的ssh配置文件
#mv /etc/ssh/ /etc/ssh_old
編譯安裝ssh
#./configure --prefix=/usr --sysconfdir=/etc/ssh --without-zlib-version-check --with-md5-passwords --mandir=/usr/share/man
從新啓動ssh服務
/etc/init.d/sshd restart
ssh爆破時的密碼會被記錄在/var/log/message文件裏
能夠看到此時服務器還在被爆破中… 安全
經過d3.js能夠圖形化爆破的次數更直觀(如下服務器8天內被爆破的次數) 服務器
有的朋友看完可能會有幾點疑問:ssh
1. 日誌裏既能夠記錄暴力破解的密碼那麼也能夠記錄管理員登陸的正確密碼,若是被***看到豈不是反而不安全?ide
由於密碼是存在 /var/log/messages裏的,該文件的權限是600,也就是其餘屬主和組的用戶是讀不到的,除了超戶意外,固然假如你的web服務是root管理的,而這web服務又存在漏洞被拿下了,進而獲得root權限了,那麼誰也救不了了,因此應用程序仍是要用普通用戶來維護的安全。
spa
2. 記錄這個密碼有什麼用呢?rest
豐富本身的字典文件,可掃別人掃到的東西,你懂的。(不建議搞破壞哦)日誌