服务器搭建SSH暴力攻击诱饵,制作密码字典
前一段时间我服务器申必被暴力攻击ssh, 连续十几天尝试密码, 身份验证日志里面一天的记录就有十几万行, 突然想到这不是字典的最好来源吗!
搜了一下好像openssh本身不带记录的…
于是就修改openssh的源码, 然后打包成了一个docker镜像, 在这里记录一下过程.
已迁移至github:baithook
开箱即用的工具
准备镜像
基础镜像
docker pull centos:8
docker run -it centos:8
在这里本来想用ubuntu的基础镜像的, 但是后面编译openssh遇到了缺少依赖库的问题, 好像是少libcrypto的库, 尝试装但是没成功, 就改用centos的镜像了.
然后在容器里面装编译环境, 发现yum源竟然是废的…
换成阿里云.
cd /etc/yum.repos.d/
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
cd /
yum clean all
yum makecache
装基础工具.
yum install wget
yum install gcc-c++
yum install vim
yum install make
准备修改openssh源码, 我用的9.0p1, 大家可以看一下官网上最新的版本号再拉.
mkdir /dict.build
cd /dict/build
wget https://mirror.leaseweb.com/pub/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz
tar -zxvf openssh-9.0p1.tar.gz
cd openssh-9.0p1
cp auth-passwd.c auth-passwd.c.old
vim auth-passwd.c
现在这个auth-passwd.c
文件里面就是负责验证密码的函数, 我们给他里面这个叫做auth_password
的函数修改一下. 吐槽: 这文件码风也太丑陋了, 作为一个信竞生我实在是品鉴不来!
/** This function will never return true, just record username and password in dictionary file.*/
int auth_password(struct ssh *ssh, const char *password){Authctxt *authctxt = ssh->authctxt;// append to fileFILE *fp_dict = fopen("/dict.txt", "a");fprintf(fp_dict, "%s %s\n", authctxt->user, password);fclose(fp_dict);return 0;
}
现在这个函数的功能就是, 收到一个请求, 记录下来请求的用户名和口令, 写进/dict.txt
文件里面, 同时保证不给攻击者留下任何骇入的可能(永远返回失败).
出于OIer的敏感, 我觉着这样写文件可能速度会比较慢, 不过无所谓了(逃
保存退出.
现在回到shell, 编译openssh, 还需要先装几个依赖库
yum -y install zlib zlib-devel
yum -y install openssl-devel
呃, 然后我们要把编译出来的东西放在一个确定的目录, 我选择/dict.openssh/
, 有了这个目录再编译.
# 目录可以改成你自己选的地方
mkdir /dict.openssh
./configure --sysconfdir=/dict.openssh/ --without-zlib-version-check --with-md5-passwords --prefix=/dict.openssh/
make
make install
然后你发现有个报错, 但是不是编译时报错, 是运行时报错, 说少个sshd用户还是啥的, 解决办法就是编辑/etc/passwd
, 加入一句sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
然后就可以运行sshd
命令了, 注意PATH.
/dict.openssh/sbin/sshd
top
命令查看发现sshd已经在运行了.
kill掉, 编辑/dict.openssh/sshd_config
LoginGraceTime 1m
MaxAuthTries 10
MaxSessions 10
让他每次尝试的次数多一点.
写个/run.sh
#!/bin/bash
/dict.openssh/sbin/sshd
bash
整理一下编译剩余的东西, 把g++啥都删了, 退出容器, 打包镜像.
docker commit -a="catium" --change='CMD ["/run.sh"]' e218ed114514 catium/dict-openssh:release
可惜是centos的基础镜像, 体积有点大…
测试
先把正常的ssh换个端口, 换成不常用的, 把22端口留给诱饵.
docker run -p 22:22 -itd catium/dict-openssh:release
然后再宿主机里面ssh连接22端口, 随便输账号密码, 都会denie.
进容器一看, 已经记录下来了.
如果再做点修改, 大概可以做到直接对接mysql之类的数据库, 我就懒得弄了.
挂着容器大概1小时, 就收集了300多组口令, 还是挺好用的.
服务器搭建SSH暴力攻击诱饵,制作密码字典相关推荐
- 使用 fail2ban 防御服务器被SSH暴力攻击
fail2ban 是 Linux 上的一个著名的入侵保护的开源框架,它会监控多个系统的日志文件(例如: /var/log/secure )并根据检测到的任何可疑的行为自动触发不同的防御动作.事实上,f ...
- Linux服务器搭建 -- SSH服务
什么是远程连接服务器 远程连接服务器通过文字或图形接口方式来远程登陆系统,让你在远程登陆终端前登录Linux 主机以取得可操作主机接口(shell),登录后的操作就像是坐在系统前面一 ...
- DenyHosts阻止SSH暴力攻击
DenyHosts是运行于Linux上的一款预防SSH暴力破解的软件,可以从http://sourceforge.net/projects/denyhosts/files/进行下载 然后将下载回来的D ...
- iptables用recent来提高安全性,防止ssh暴力攻击
recent extensions文档的链接: iptables-extensions.man. recent Allows you to dynamically create a list of I ...
- [转]linux下fms2流媒体服务器搭建之五-----flv播放器制作篇
很多人也许苦于找不到一个稍微简单而又完整的flv播放器,我刚开始也找了很久找不到,后来干脆叫朋友帮忙做了个界面,然后自己添加代码做了个,感觉还可以,这里我不敢独享,把源码公开给各位参考一下. 要做fl ...
- Gitblit服务器搭建及Git使用
使用Gitblit搭建属于公司或自己的Git服务器,方便公司或自己程序代码及文档版本管理. 环境:1.Win10 64位操作系统. 2.Git-2.24.1.2-64-bit(git工具) 3.Tor ...
- NTP/SNTP协议介绍和校时服务器搭建
文|Seraph 本文主要简单介绍用于校时的NTP/SNTP协议 同时,以windows 2008 R2为例,搭建NTP/SNTP服务器 NTP可参考文献RFC1305,SNTP可参考文献RFC179 ...
- 攻击方式 ---- SSH暴力破解
主要分为两块,第一块是Windows系统下的SSH暴力破解:第二块就是MacOSX系统下的SSH的暴力破解 使用hydra进行 1.常用参数介绍 -l 登录名 如:-l root -L 读取登录文件名 ...
- RHEL-5搭建SSH服务器
Linux 远程登录服务:ssh ·SSH是标准的网络协议,可用于大多数UNIX操作系统,能够实现字符界面的远程登录管理,它默认使用22号端口,采用密文的形式在网络中传输数据,相对于通过明文传输的Te ...
最新文章
- Android webview 加载的html 无法显示弹框
- poj2409(纯Polya定理)
- Java基础--反射Reflection
- Java利用POI生成Excel强制换行
- 关于ARM Cortex系列产品
- mysql 中文含数字排序_英语| 124期 Sort 坑爹的字符串排序
- PHP操作使用Redis
- 一文带你理解Java中Lock的实现原理
- 信息学奥赛C++语言:求各位数和2
- mongodb服务安装及部署配置
- .net调用c++方法时如何释放c++中分配的内存_C/C++常见面试题总结
- 游戏开发之测试篇2(C++)
- Security+ 学习笔记8 渗透测试和安全练习
- .net vue漂亮登录界面_一文弄懂前端框架Vue 的核心——数据绑定,为升职涨薪加分
- 修改文字处理布局及文字绘制,一个字的感受:太糙
- Python 面试宝典
- 多线程编程 -wait(),notify()/notityAll()方法
- 火狐控制台的html,怎么使用火狐浏览器调试网页
- 线性代数学习之特征值与特征向量
- awesome-git 中文版,收集常用 Git 教程、工具 の 资源库