This commit is contained in:
2024-10-29 10:49:41 +08:00
parent ddb8297bc3
commit 782debcd74

139
README.md
View File

@@ -1,53 +1,106 @@
# denyip
# DenyIP: 拒绝非大陆IP访问的Linux服务器防火墙工具
针对非国际业务的Linux服务器构建防火墙策略
## 概述
利用 libpcap 抓取网络包从中提取源IP地址。
使用 libipset 实现IP黑名单管理将不符合访问条件的IP添加至黑名单集合。
结合 ip2region 库进行初步的IP地域判定筛选大陆以外的IP地址。
通过 Go ipquery 进一步精准识别IP地理位置将确认的非大陆IP加入到 ipset 集合,严格限制非大陆来源的访问。
此方案能有效保护大陆服务器免受非本地业务访问,提高访问控制的精度与效率。
`DenyIP` 是一个用于保护大陆服务器免受非本地业务访问的防火墙工具。通过结合 `libpcap``libipset``ip2region``Go ipquery`该工具能够高效地捕获网络数据包、提取源IP地址、进行地理位置判断并将非大陆IP地址添加到IP黑名单中从而严格限制非大陆来源的访问。
## Build
## 特点
~~~bash
# Debian System
apt install build-essential
apt install golang
apt install libpcap-dev libcap-dev libsystemd-dev
- **数据包捕获**:使用 `libpcap` 捕获网络数据包提取源IP地址。
- **IP黑名单管理**:使用 `libipset` 管理IP黑名单高效存储和匹配IP地址。
- **初步IP地域判定**:使用 `ip2region` 库进行初步的IP地理位置判断。
- **精确IP地理位置判断**:使用 `Go ipquery` 进一步精准识别IP地理位置。
- **灵活的命令行选项**:支持守护进程模式、指定网络接口、启用/禁用Iptables规则等。
root@NIUYULING:/mnt/c/Users/root/Desktop/git.aixiao.me/DenyIP# make clean; make
rm -rf a.out ipquery
rm -rf cap.o common.o ip2region/ip2region.o ip2region/xdb_searcher.o libipset.o
gcc -g -Wall -Iip2region -c cap.c -o cap.o
gcc -g -Wall -Iip2region -c common.c -o common.o
gcc -g -Wall -Iip2region -c ip2region/ip2region.c -o ip2region/ip2region.o
gcc -g -Wall -Iip2region -c ip2region/xdb_searcher.c -o ip2region/xdb_searcher.o
gcc -g -Wall -Iip2region -c libipset.c -o libipset.o
gcc -g -Wall -Iip2region -o a.out cap.o common.o ip2region/ip2region.o ip2region/xdb_searcher.o libipset.o -lpcap -ldbus-1 -lsystemd -L/usr/lib64 -lcap -lipset -lmnl
root@NIUYULING:/mnt/c/Users/root/Desktop/git.aixiao.me/DenyIP#
~~~
## 安装
### Help
### 依赖项
~~~bash
在 Debian 系统上安装所需的开发工具和库:
root@NIUYULING:/mnt/c/Users/root/Desktop/git.aixiao.me/DenyIP# ./a.out -h
DenyIP version 0.2
拒绝Linux服务器非大陆IP工具
MAIL: aixiao@aixiao.me
Date: 20241024
Usage: denyip [-d] [-i <interface>] [-s <start|stop>] [-h|-?]
-d Daemon mode
-i interface (default eth0)
-s regular signal (default start|stop)
start Enable Iptables rule
stop Disable Iptables rule
-h|-? Help Information
```bash
sudo apt update
sudo apt install build-essential golang libpcap-dev libcap-dev libsystemd-dev
```
### 下载项目
克隆项目仓库:
```bash
git clone https://git.aixiao.me/DenyIP.git
cd DenyIP
```
## 构建
编译项目:
```bash
make clean
make
```
## 使用方法
### 命令行选项
```bash
Usage: denyip [-d] [-i <interface>] [-s <start|stop>] [-h|-?]
-d Daemon mode
-i interface (default eth0)
-s regular signal (default start|stop)
start Enable Iptables rule
stop Disable Iptables rule
-h|-? Help Information
```
### 示例命令
- **启动守护进程**
```bash
./denyip -d -i eth0
```
- **启用Iptables规则**
```bash
./denyip -s start
```
- **禁用Iptables规则**
```bash
./denyip -s stop
```
- **查看帮助信息**
```bash
./denyip -h
```
- **关闭守护进程**
```bash
killall -15 denyip
```
root@niuyuling:~/DenyIP# killall -15 denyip # 关闭
root@niuyuling:~/DenyIP# ./denyip -i eth0 # 启动
root@niuyuling:~/DenyIP# ./denyip -s start # Iptables 规则打开
root@niuyuling:~/DenyIP# ./denyip -s stop # Iptables 规则关闭
~~~
## 贡献
欢迎贡献代码和提出改进建议!请通过 Pull Request 或 Issue 的方式提交。
## 联系信息
- **邮箱**<aixiao@aixiao.me>
- **日期**20241024
## 许可证
本项目遵循 MIT 许可证,详情参见 [LICENSE](LICENSE) 文件。
---
希望这个 `README.md` 文件能够帮助您更好地介绍和使用 `DenyIP` 项目。如果有任何其他需求或修改,请随时告知。