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

125
README.md
View File

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