这是一个轻量级的 SSH 蜜罐系统,用于实时记录并可视化展示来自互联网的 SSH 爆破攻击行为。
通过本工具,你可以清晰了解系统正在受到的爆破攻击情况,包括攻击源、使用的用户名和密码等关键信息。
version: '3.8'
services:
ssh_honeypot:
image: yessure/ssh_honeypot:latest
container_name: ssh_honeypot
restart: unless-stopped
environment:
MYSQL_DSN: "root:123456@tcp(172.17.0.1:3306)/honeypot?parseTime=true"
REDIS_DSN: "redis://172.17.0.1:6379" # 可无。 若有密码:redis://:[email protected]:6379
ports:
- "22:22" # SSH 蜜罐监听端口
- "8000:8000" # Web 统计页
network_mode: bridge
请根据实际环境调整
MYSQL_DSN和REDIS_DSN。
请预先在数据库中创建如下表结构:
CREATE TABLE `asncount` (
`asn` varchar(100) NOT NULL,
`count` int(11) DEFAULT 0,
PRIMARY KEY (`asn`),
KEY `idx_count` (`count`)
);
CREATE TABLE `ipcount` (
`ip` varchar(100) NOT NULL,
`count` int(11) DEFAULT 0,
PRIMARY KEY (`ip`),
KEY `idx_count` (`count`)
);
CREATE TABLE `login_attempts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ip` varchar(64) NOT NULL,
`username` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`attempt_time` bigint(20) NOT NULL,
`asn` varchar(10) DEFAULT '',
PRIMARY KEY (`id`),
KEY `asn` (`asn`),
KEY `idx_password` (`password`)
);
CREATE TABLE `passwordcount` (
`password` varchar(100) NOT NULL,
`count` int(11) DEFAULT 0,
PRIMARY KEY (`password`),
KEY `idx_count` (`count`)
);
访问 http://ip:8000 即可查看实时统计页面。实际使用中,建议使用前端 CDN/反代至本页。
为降低并发访问压力,所有展示数据在 Redis 中设置了 30 秒缓存。
建议将本容器部署于公网主机,通过端口映射将 22 端口暴露,以吸引真实 SSH 攻击流量用于分析。
Content type
Image
Digest
sha256:2d1bb87f7…
Size
102.1 MB
Last updated
over 1 year ago
docker pull yessure/ssh_honeypot