Hfish Docker蜜罐部署

安装准备

实验环境:物理机 Apple M1芯片,2020. macOS Monterey

Docker版本:

Hfish的介绍

GitHub项目:https://github.com/hacklcx/HFish

项目介绍的很清楚了,我就不赘述了

Hfish的部署

Docker的安装步骤可以参考之前的blog:
sql靶场搭建

获取镜像

docker pull imdevops/hfish 

容器部署

docker run -d --name hfish -p 21:21 -p 22:22 -p 23:23 -p 69:69 -p 3306:3306 -p 5900:5900 -p 6379:6379 -p 8080:8080 -p 8081:8081 -p 8989:8989 -p 9000:9000 -p 9001:9001 -p 9200:9200 -p 11211:11211 --restart=always imdevops/hfish:latest

在物理机访问

http://[本机IP]:9001

初始账户密码: admin admin

修改配置文件

docker exec -it [容器名] sh

修改管理员账户密码

vi HFish/config.ini

做个测试,用kali去nmap扫描本机,查看会不会有蜜罐那边的告警

蜜罐搭建成功

最新版本安装 2.8.0

官方安装文档:https://hfish.io/#/2-1-docker?id=docker%e5%ae%89%e8%a3%85%e8%af%b4%e6%98%8e

步骤1:确认已安装并启动Docker

docker version

步骤2:拉取最新版本的镜像

 docker pull threatbook/hfish-server:latest

步骤3:端口映射、容器部署

docker run -d -p 22:22 -p 9090:9090 -p 6379:6379 -p 135:135 -p 139:139 -p 3389:3389 -p 4433:4433 -p 9093:9093 -p 9194:9194 -p 9099:9099 -p 23:23 -p 3307:3307 --name hfish -v /usr/share/hfish:/usr/share/hfish --restart=always --privileged=true threatbook/hfish-server:latest



docker run -d --name hfish -p 22:22 -p 9090:9090 -p 6379:6379 -p 135:135 -p 139:139 -p 3389:3389 -p 4433:4433 -p 9093:9093 -p 9194:9194 -p 9099:9099 -p 23:23 -p 3307:3307 -v /usr/share/hfish:/usr/share/hfish --restart=always --privileged=true threatbook/hfish-server:latest

【数据持久化:在宿主机/usr/share/hfish目录下建立data目录用于存放攻击数据,建立logs目录用于存放日志。】

步骤4:配置后续自动升级(框内全部复制,粘贴,执行即可)

docker run -d    \
 --name watchtower \
 --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock  \
  --label=com.centurylinklabs.watchtower.enable=false \
--privileged=true \
  containrrr/watchtower  \
  --cleanup  \
  hfish \
  --interval 3600

【自动升级:每小时请求最新镜像进行升级,升级不会丢失数据。】

步骤5:登陆HFish

登陆地址:https://ip:4433/web/

初始用户名:admin

初始密码:HFish2021

docker的Hfish连接数据库

我们将数据库搭建在宿主机中,而非docker中,这样为了保护数据安全

dokcer容器内连接宿主机Mysql

mac安装mysql

社区版mysql-ARM架构8.0.28

mysql客户端dbeaver

修改配置文件

vim ~/.bash_profile

在配置文件中输入

export PATH=${PATH}:/usr/local/mysql/bin

执行修改后的文件

source .bash_profile

解决mac重新启动终端source .bash_profile就要输入执行一下.
在终端输入:vim ~/.zshrc
在文件中输入: source ~/.bash_profile

这样在重新启动终端mysql命令就可以直接执行。

设置宿主机mysql允许docker的虚拟网卡ip访问

在宿主机的终端创建mysql数据库,并允许远程访问

 mysql -uroot -p
# 创建一个叫hfish的数据库
create database hfish;

在mysql客户端,进一步创建并设计数据库

-- ----------------------------
--  Table structure for `hfish_info`
-- ----------------------------
DROP TABLE IF EXISTS `hfish_info`;
CREATE TABLE `hfish_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` varchar(20) NOT NULL DEFAULT '',
  `project_name` varchar(20) NOT NULL DEFAULT '',
  `agent` varchar(20) NOT NULL DEFAULT '',
  `ip` varchar(20) NOT NULL DEFAULT '',
  `country` varchar(10) NOT NULL DEFAULT '',
  `region` varchar(10) NOT NULL DEFAULT '',
  `city` varchar(10) NOT NULL,
  `info` text NOT NULL,
  `create_time` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
SET FOREIGN_KEY_CHECKS = 1;
-- ----------------------------
--  Table structure for `hfish_colony`
-- ----------------------------
DROP TABLE IF EXISTS `hfish_colony`;
CREATE TABLE `hfish_colony` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `agent_name` varchar(20) NOT NULL DEFAULT '',
  `agent_ip` varchar(20) NOT NULL DEFAULT '',
  `web_status` int(2) NOT NULL DEFAULT '0',
  `deep_status` int(2) NOT NULL DEFAULT '0',
  `ssh_status` int(2) NOT NULL DEFAULT '0',
  `redis_status` int(2) NOT NULL DEFAULT '0',
  `mysql_status` int(2) NOT NULL DEFAULT '0',
  `http_status` int(2) NOT NULL DEFAULT '0',
  `telnet_status` int(2) NOT NULL DEFAULT '0',
  `ftp_status` int(2) NOT NULL DEFAULT '0',
  `mem_cache_status` int(2) NOT NULL DEFAULT '0',
  `plug_status` int(2) NOT NULL DEFAULT '0',
  `last_update_time` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `un_agent` (`agent_name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
SET FOREIGN_KEY_CHECKS = 1;
-- ----------------------------
--  Table structure for `hfish_setting`
-- ----------------------------
DROP TABLE IF EXISTS `hfish_setting`;
CREATE TABLE `hfish_setting` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` varchar(50) NOT NULL DEFAULT '',
  `info` varchar(50) NOT NULL DEFAULT '',
  `update_time` datetime NOT NULL,
  `status` int(2) NOT NULL DEFAULT '0',
  `setting_name` varchar(50) NOT NULL DEFAULT '',
  `setting_dis` varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `index_key` (`type`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;
-- ----------------------------
--  Records of `hfish_setting`
-- ----------------------------
BEGIN;
INSERT INTO `hfish_setting` VALUES ('1', 'mail', '', '2019-09-02 20:15:00', '0', 'E-mail 群发', '群发邮件SMTP服务器配置'), ('2', 'alertMail', '', '2019-09-02 18:58:12', '0', 'E-mail 通知', '蜜罐告警会通过邮件告知信息'), ('3', 'webHook', '', '2019-09-03 11:49:00', '0', 'WebHook 通知', '蜜罐告警会请求指定API告知信息'), ('4', 'whiteIp', '', '2019-09-02 20:15:00', '0', 'IP 白名单', '蜜罐上钩会过滤掉白名单IP');
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;

![Screen Shot 2022-03-08 at 4.45.33 PM](/Users/gryffinbit/Desktop/Screen Shot 2022-03-08 at 4.45.33 PM.png)

修改宿主机mysql配置,允许外部访问

1,登进MySQL之后,

2,输入以下语句,进入mysql库:

use mysql

3,更新域属性,’%’表示允许外部访问:

update user set host='%' where user ='root';

4,执行以上语句之后再执行:

FLUSH PRIVILEGES;

z

Hfish连接宿主机mysql数据库

连接成功

参考文章

蜜罐搭建踩坑

docker compose官方文档

docker compose菜鸟教程

评论