在前面一篇文章中,介绍了通过改变监听端口,限制登陆尝试次数来保护服务器登陆密码不被暴力破解,对于大部分的站长来说,已经足够保障服务器ssh安全。今天介绍ssh蜜罐,它并不是必要的,对安全能力提升有限。但是,它可以帮助站长了解攻击者,对其进行分析,也是很有意思的工具。 ChatGPT对它的一句话介绍:
ssh蜜罐是一种模拟SSH服务的安全设备,用于诱捕潜在的攻击者,以收集攻击者信息、分析攻击趋势、防范实际攻击并提高网络安全水平。
Cowrie 目前广受欢迎的一个蜜罐项目,配置也很简单,且支持docker部署。可惜目前网上的文档大多已经过时。所以,下面就介绍如何在服务器上使用docker-compose + mysql部署Cowrie。
Cowrie SSH 蜜罐
1. 下载cowrie源代码
1 | mkdir cowrie |
2. 创建mysql数据库
Cowrie支持使用数据库来记录攻击者的攻击行为,方便使用sql进行查询。在host的mariadb或者mysql中执行下列命令,为cowrie创建一个专门的数据库和用户:
1 | CREATE DATABASE cowrie; |
3. 初始化mysql数据库
需要我们在数据库管理界面手动执行sql脚本
1 | cd docs/sql |
4. 编辑docker-compose.yml
github的代码里面有一份docker-compose.yml,但是没法直接使用,需要自己再配置一下。想来作者是认为能用cowrie的人对docker都很熟悉吧…我修改后可以直接使用的文件内容如下:
1 |
|
我这里直接监听了22端口,也可以改为其他的,先自己尝试一下。在连接mysql的过程中遇到了docker网络和host网络不通的问题,用到了network_mode: host
进行debug。不过最后还是用host.docker.internal:host-gateway
,把网络隔离一下还是更安全。最后除了编译docker-compose.yml,还需要把Dockerfile复制:cp docker/Dockerfile ./
5. 编辑配置
配置文件位于etc目录下,基本上默认的配置就足够使用。首先复制文件
1 | cp etc/cowrie.cfg.dist etc/cowrie.cfg |
修改数据库连接配置vim etc/cowrie.cfg
,找到output_mysql模块,修改如下:
1 | [output_mysql] |
修改用户名配置,vim etc/userdb.txt
,文件中的描述已经足够清晰,这里不再赘述。需要注意默认的配置允许root以任意密码登陆,建议修改为强密码。
6. 启动容器
执行docker compose up -d
制作容器并启动,启动前注意没有进程在监听22端口。
到这一步配置结束,如果一切正常,你可以自己登陆蜜罐试试ssh root@localhost
。同时查看mysql表,如select * from cowrie.auth
就可以看到你尝试登陆的ip和用户名以及密码啦。
写在后面
我的蜜罐开了3天,已经记录了1万多次登陆尝试,累计发现6024个不同的密码,可惜目前还没有攻击者成功登陆🤣