之前我已经在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,代码如下:
--- 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. 记录这个密码有什么用呢?
丰富自己的字典文件,可扫别人扫到的东西,你懂的。(不建议搞破坏哦)