RHEL8部署ssh蜜罐
蜜罐cowrie简介
项目地址:https://github.com/cowrie/cowrie
Cowrie是一款中度交互的ssh
与Telnet
蜜罐,它可以获取攻击者用于暴力破解的字典,输入的命令以及上传或下载的恶意文件
特性:
伪装的文件系统
可增加/移除文件
,完整的文件系统搭配有Debian 5.0
;- 可增加文件内容,攻击者就能用cat命令查看如
/etc/passwd
等文件;系统中进包含最少的文件内容 - 会话日志记录在UML兼容格式中,便于重演
cowroe
保存文件,下载用wget/curl
,或者为后续检查—上传采用sftp
和scp
安装运行cowrie
http://localnetwork.cn/project-3/doc-47/
安装依赖包
# 安装依赖包
yum install -y git gcc bzip2-devel libffi-devel vim net-tools
创建cowrie用户
# 创建cowrie用户
useradd cowrie
下载cowrie源码
# 进入/opt目录
cd /opt
# 下载cowrie源码
git clone https://github.com/cowrie/cowrie.git
# 进入cowrie源码目录
cd /opt/cowrie/
创建Python3虚拟环境
需要python3.7及以上
# RHEL安装virtualenv包
yum install -y python3-virtualenv
# pip安装virtualenv
pip3 install virtualenv
# 进入cowrie目录
cd /opt/cowrie/
# 创建虚拟环境
python3 -m venv cowrie-env
# 激活虚拟python环境
source cowrie-env/bin/activate
pip安装依赖包
在(cowrie-env)
Python3.7+
以上虚拟环境
下执行
。
# 进入cowrie源码目录
cd /opt/cowrie/
# 升级pip包管理器
pip3 install -U setuptools
pip3 install -U pip
# pip安装依赖包
pip3 install six packaging appdirs
# 安装项目python依赖
pip3 install -U -r requirements.txt
修改配置文件
# 进入配置模板目录
cd /opt/cowrie/etc/
# 复制配置文件
cp /opt/cowrie/etc/cowrie.cfg.dist /opt/cowrie/etc/cowrie.cfg
# 修改目录的属主
chown -R cowrie /opt/cowrie/
创建模拟SSH账号密码泄露文件
# 编辑模拟SSH账号密码泄露文件
vim /opt/cowrie/etc/userdb.txt
把自己怀疑泄密的root密码写上去,只有这些root密码才能登录上我们的SSH蜜罐。
root:x:怀疑泄露密码1
root:x:怀疑泄露密码2
admin:x:怀疑泄露密码3
配置文件
修改配置文件
vim /opt/cowrie/etc/cowrie.cfg
Cowrie 会监听 SSH 的 port 2222、Telnet 的 port 2223。
所以这里将连接至 port 22 、23 的请求重定向到 2222、2223
[telnet]
enabled = true
listen_port = 2223
listen_endpoints = tcp:2223:interface=0.0.0.0
配置防火墙
firewalld防火墙配置
# 放行ssh蜜罐的2222端口和2223端口
firewall-cmd --add-port=2222/tcp --permanent
firewall-cmd --add-port=2223/tcp --permanent
# 允许SNAT(源地址转换)
firewall-cmd --zone=public --add-masquerade --permanent
# 将22端口转发到2222端口
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=2222 --permanent
# 将23端口转发到2223端口
firewall-cmd --zone=public --add-forward-port=port=23:proto=tcp:toport=2223 --permanent
# 更新防火墙规则
firewall-cmd --reload
# 重启sshd服务
systemctl restart sshd
iptables防火墙配置
# 允许从客户端发起的新TCP连接请求通过端口80进入系统
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
# 允许从客户端发起的新TCP连接请求通过端口22进入系统
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
# 将tcp的22端口重定向到2222蜜罐端口
iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222
# 将tcp的23端口重定向到2223蜜罐端口
iptables -t nat -A PREROUTING -p tcp --dport 23 -j REDIRECT --to-port 2223
将Cowrie输出发送到MySQL数据库–非必需
https://cowrie.readthedocs.io/en/latest/sql/README.html
前置
条件:已有Mysql服务器
安装mysql客户端
# 安装mysql客户端
yum install -y mysql-devel
在(cowrie-env)
Python虚拟环境下执行
。
# 安装mysql-python依赖
pip install -y mysql-python
创建数据库
-- 创建cowrie库
create database cowrie;
-- 授权"cowrie"从"localhost"访问"cowrie"数据库,可执行所有权限,同时设置改用户的密码为"123"。
grant all on cowrie.* to cowrie@localhost identified by '123';
导入到数据库
# 进入cowrie的sql目录
cd /opt/cowrie/docs/sql
导入到数据库
-- 登录数据库
mysql -ucowrie -p
-- 进入到cowrie库
use cowrie;
-- 导入sql
source mysql.sql
配置蜜罐数据库连接
vim /opt/cowrie/etc/cowrie.cfg
# [output_mysql] 部分定义了 Cowrie 将日志输出到 MySQL 数据库的配置
[output_mysql]
# 是否启用 MySQL 输出插件。设为 true 表示启用。
enabled = true
# MySQL 数据库服务器的主机名或 IP 地址。
## 使用 'localhost' 表示数据库在本地主机。
host = localhost
# 连接到的 MySQL 数据库名称。
# 'cowrie' 是 Cowrie 将使用的数据库名称。
database = cowrie
# 用于连接 MySQL 数据库的用户名。
# 'cowrie' 是数据库用户,必须有权限访问 'cowrie' 数据库。
username = cowrie
# 用于连接 MySQL 数据库的密码。
# '123' 是数据库用户 'cowrie' 的密码。
password = 123
# MySQL 数据库服务器监听的端口号。
# 默认的 MySQL 端口号是 3306。
port = 3306
启动蜜罐
# 切换到cowrie用户
su - cowrie
# 激活虚拟python环境
source cowrie-env/bin/activate
# 切换目录
cd /opt/cowrie/bin
# 启动蜜罐
/opt/cowrie/bin/cowrie start
# 查看蜜罐状态
/opt/cowrie/bin/cowrie status
# 停止蜜罐服务
/opt/cowrie/bin/cowrie stop
查看攻击者信息和攻击方式
# 查看攻击者的攻击信息和攻击方式
mysql -ucowrie -p
# 使用sql查询攻击者信息和攻击方式
查看日志
tail ./var/log/cowrie/cowrie.log
# 查看json日志
tail ./var/log/cowrie/cowrie.json
# 登录失败
cat ./var/log/cowrie/cowrie.json | grep cowrie.login.failed
# 登录成功
cat ./var/log/cowrie/cowrie.json | grep cowrie.login.success
# 登陆蜜罐后.命令.输入
cat ./var/log/cowrie/cowrie.json | grep cowrie.command.input