之前我已經在wooyun和91ri上發表了這篇文章,今天轉到51cto上。。。
默認的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,代碼如下:
1
2
3
4
5
6
7
8
9
10
|
--- 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天內被爆破的次數)
有的朋友看完可能會有幾點疑問:
1. 日志里既可以記錄暴力破解的密碼那么也可以記錄管理員登錄的正確密碼,如果被黑客看到豈不是反而不安全?
因為密碼是存在 /var/log/messages里的,該文件的權限是600,也就是其他屬主和組的用戶是讀不到的,除了超戶意外,當然假如你的web服務是root管理的,而這web服務又存在漏洞被拿下了,進而得到root權限了,那么誰也救不了了,所以應用程序還是要用普通用戶來維護的安全。
2. 記錄這個密碼有什么用呢?
豐富自己的字典文件,可掃別人掃到的東西,你懂的。(不建議搞破壞哦)