From 1e231274cce241e9188368a9cc629c84d582ba88 Mon Sep 17 00:00:00 2001 From: sushen339 Date: Tue, 18 Nov 2025 18:26:32 +0800 Subject: [PATCH] --- blockip/Makefile | 2 +- blockip/README.md | 99 +++++++++++++++++++++++++++++++-------- blockip/bip | Bin 51832 -> 51832 bytes blockip/include/common.h | 2 +- blockip/src/install.c | 2 +- 5 files changed, 82 insertions(+), 23 deletions(-) diff --git a/blockip/Makefile b/blockip/Makefile index 15ae467..1de7a63 100644 --- a/blockip/Makefile +++ b/blockip/Makefile @@ -75,7 +75,7 @@ clean: # 清理所有文件(包括配置) distclean: clean - rm -rf /etc/blockip + rm -rf /etc/bip rm -f /var/log/bip.log /var/log/bip.log.1 @echo "深度清理完成" diff --git a/blockip/README.md b/blockip/README.md index 25d0a90..91241ee 100644 --- a/blockip/README.md +++ b/blockip/README.md @@ -4,6 +4,16 @@ ## 特性 +- **PAM集成**:自动监控SSH登录失败尝试 +- **双栈支持**:完整支持IPv4/IPv6和CIDR网段 +- **智能聚合**:自动检测并聚合为更大网段,减少规则数量 +- **白名单保护**:白名单规则优先级高于黑名单,保护信任IP +- **地理位置**:显示IP归属国家/地区 +- **实时统计**:树状层级显示聚合统计,包含散落IP计数 +- **灵活配置**:支持动态修改封禁时长和重试次数 +- **高性能**:C11实现,nftables集合优化,52K stripped binary +- **Watch模式**:2秒自动刷新监控界面 + ## 模块划分 @@ -38,6 +48,12 @@ blockip/ ## 系统要求 +- **操作系统**:Linux (Debian/Ubuntu/CentOS/RHEL) +- **内核**:nftables 支持 (>= 3.13) +- **编译器**:GCC (支持 C11 标准) +- **PAM开发库**:libpam0g-dev (Debian/Ubuntu) 或 pam-devel (CentOS/RHEL) +- **权限**:安装和运行需要root权限 + ## 编译安装 @@ -62,6 +78,12 @@ sudo bip install 这将自动完成以下配置: +- 创建配置目录 `/etc/bip` +- 初始化nftables表和规则集(`inet bip`表) +- 配置PAM模块(修改`/etc/pam.d/sshd`) +- 设置systemd服务自动启动 +- 从持久化文件恢复黑白名单 + ## 使用方法 ### 查看状态和统计 @@ -134,7 +156,7 @@ bip uninstall ### 动态配置(无需重新编译) -使用配置文件 `/etc/blockip/config` 灵活修改封禁时间: +使用配置文件 `/etc/bip/config` 灵活修改封禁时间: ```bash # 查看当前配置 @@ -154,25 +176,29 @@ bip config retries 5 ``` 支持的配置参数: - - `24h` - 24小时 - - `12h` - 12小时 - - `1h` - 1小时 - - `30m` - 30分钟 - - `""` - 永久封禁(空字符串) - - - 范围:1-10 次 - - 默认:3 次 - - 说明:SSH登录失败达到此次数后自动封禁 -配置文件位置:`/etc/blockip/config` +**封禁时间 (time)** +- `24h` - 24小时 +- `12h` - 12小时 +- `1h` - 1小时 +- `30m` - 30分钟 +- `""` - 永久封禁(空字符串) + +**最大重试次数 (retries)** +- 范围:1-10 次 +- 默认:3 次 +- 说明:SSH登录失败达到此次数后自动封禁 + +配置文件位置:`/etc/bip/config` ### 静态配置(需要重新编译) 在 `include/common.h` 中可以修改以下默认参数: ```c -#define MAX_RETRIES 3 // 默认最大失败次数 -#define DEFAULT_BAN_TIME "24h" // 默认封禁时长 +#define DEFAULT_MAX_RETRIES 3 // 默认最大失败次数 +#define DEFAULT_BAN_TIME "24h" // 默认封禁时长 +#define NFT_TABLE "inet bip" // nftables表名 ``` 修改后需要重新编译: @@ -185,10 +211,14 @@ sudo make install ## 文件说明 - - `config` - 配置文件(封禁时间等) - - `blacklist` - 封禁IP列表(持久化) - - `whitelist` - 白名单列表 - - `counts/` - 失败次数记录目录 +`/etc/bip/` 目录结构: + +- `config` - 配置文件(封禁时间、重试次数) +- `blacklist` - 封禁IP列表(持久化存储) +- `whitelist` - 白名单列表(持久化存储) +- `counts/` - 失败次数记录目录 + +日志文件:`/var/log/bip.log`(自动轮转,最大10MB) ## 卸载 @@ -225,6 +255,12 @@ make distclean ## 性能优化 +- **nftables集合**:使用集合(set)数据结构,O(1)查询效率,支持超大规模IP封禁 +- **智能聚合**:自动检测/24和/64网段,减少规则数量,提升匹配速度 +- **异步处理**:fork子进程执行封禁和地理查询,不阻塞SSH登录 +- **内存优化**:静态缓冲区,避免频繁malloc/free +- **编译优化**:`-O2` 优化级别,自动strip符号表,二进制仅52KB + ## 注意事项 @@ -249,14 +285,23 @@ A: 执行 `bip list` 查看统计信息 ### Q: 封禁时间可以永久吗? -A: 修改 `include/common.h` 中的 `BAN_TIME` 为空字符串 `""`,然后重新编译 +A: 使用命令 `bip config time ""` 设置永久封禁,无需重新编译 ### Q: 支持自定义失败次数吗? -A: 修改 `include/common.h` 中的 `MAX_RETRIES` 值,然后重新编译 +A: 使用命令 `bip config retries <次数>` 动态修改,范围1-10次 ## 技术特点 +- **C11标准**:现代C语言实现,高性能低资源消耗 +- **模块化设计**:头文件与源文件分离,职责清晰 +- **POSIX兼容**:遵循POSIX标准,跨Linux发行版可移植 +- **PAM集成**:标准PAM接口,无侵入式监控 +- **nftables优化**:使用集合(set)而非单条规则,支持timeout自动过期 +- **日志轮转**:日志文件自动轮转,避免磁盘占用过大 +- **零依赖**:除PAM库外无额外依赖,部署简单 +- **安全性**:白名单规则优先,root权限检查,防止误封 + ## 贡献 @@ -273,7 +318,21 @@ C语言重构:GitHub Copilot ## 更新日志 -### v16.2-C (2025-11-18) +### v25.11.18 (2025-11-18) + +**完整C语言重构版本** + +- 从Shell脚本完全重写为C11代码 +- 实现PAM模块集成,自动监控SSH登录 +- nftables集合优化,支持IPv4/IPv6双栈 +- 智能网段聚合算法(/24和/64) +- 树状层级显示,包含散落IP统计 +- 动态配置系统(封禁时长、重试次数) +- 地理位置查询(IP归属国家/地区) +- 白名单优先规则(accept before drop) +- Watch模式实时监控(2秒刷新) +- 数字IP排序(同数量按IP第一段排序) +- Makefile自动strip优化(52KB二进制) **享受更安全的服务器环境! 🛡️** diff --git a/blockip/bip b/blockip/bip index c08e051803c2af6744c586bf8dde1f1158af37e7..ce715017f964901422c61fc9b4c10c16dd41057b 100644 GIT binary patch delta 6603 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 delta 6579 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 diff --git a/blockip/include/common.h b/blockip/include/common.h index 5a70b2b..c600b89 100644 --- a/blockip/include/common.h +++ b/blockip/include/common.h @@ -15,7 +15,7 @@ /* 配置常量 */ #define BIP_VERSION "v25.11.18" -#define CONFIG_DIR "/etc/blockip" +#define CONFIG_DIR "/etc/bip" #define CONFIG_FILE CONFIG_DIR "/config" #define LOG_FILE "/var/log/bip.log" #define MAX_LOG_SIZE 10485760 // 10MB diff --git a/blockip/src/install.c b/blockip/src/install.c index ce465d7..8dc9c15 100644 --- a/blockip/src/install.c +++ b/blockip/src/install.c @@ -9,7 +9,7 @@ int setup_pam_hooks(void) { /* 备份原文件 */ char backup_cmd[MAX_COMMAND_LEN]; - snprintf(backup_cmd, sizeof(backup_cmd), "cp -f %s %s.bak.blockip", pam_file, pam_file); + snprintf(backup_cmd, sizeof(backup_cmd), "cp -f %s %s.bak.bip", pam_file, pam_file); system(backup_cmd); /* 移除旧的钩子 */