以前我已经在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
丰富本身的字典文件,可扫别人扫到的东西,你懂的。(不建议搞破坏哦)日志