一个基于Netfilter、Netlink的Linux传输层状态检测防火墙,核心代码不到2000行,使用红黑树实现状态检测,内核模块代码通过读写锁几乎全面实现并发安全。
仅用于学习与交流,一定程度上可以放心使用。
支持的功能:
- 按源目的IP、端口、协议过滤报文
- 掩码
- 并发安全
- 通过命令行应用新增、删除、查看过滤规则,更改默认动作
- 记录报文过滤日志及通过命令行应用查看
- 连接状态检测与记录
- 通过命令行应用查看已建立的所有连接
- NAT
- 配置NAT规则
-
图形化界面 防火墙还写啥GUI
我所采用的环境为Ubuntu 16.04,Linux内核版本4.15,所有功能测试正常。
一般而言,所有Linux内核版本 > 4.9的系统皆可使用。
安装时需要gcc以及make包,若未安装,请预先安装:
sudo apt install gcc make
首先,下载本项目源码至任意目录:
unzip RJFireWall.zip
cd RJFireWall
随后,编译源码:
sudo make
最后,安装:
sudo make install
在安装时,内核模块已经加载至Linux内核中,此时,只需使用上层应用uapp来对防火墙进行控制即可。
新增一条过滤规则:
./uapp rule add
随后依据命令行提示设定规则即可。
删除一条过滤规则:
./uapp rule del 所需删除规则的名称
设置默认动作为Drop(防火墙初始时默认动作为Accept):
./uapp rule default drop
展示已有规则:
./uapp ls rule
展示所有过滤日志:
./uapp ls log
展示最后100条过滤日志:
./uapp ls log 100
展示当前已有连接:
./uapp ls connect
新增一条NAT规则:
./uapp nat add
随后依据命令行提示设定规则即可。
删除一条NAT规则:
./uapp nat del 所需删除NAT规则的序号
展示已有NAT规则:
./uapp ls nat