SYNwall:一款功能强大的零配置物联网防火墙

2021-04-29 10:24:59 浏览数 (1)

关于SYNwall

SYNwall是一款功能强大的零配置物联网防火墙,该项目是一个以Linux内核模块构建的项目,可以帮助广大研究人员实现一个透明的零配置/零维护的物联网防火墙。

通常情况下,物联网设备是不具备中央控制特性的,而且硬件配置不搞,环境条件也恶劣。广大研究人员并没有多少时间去专门维护物联网设备的安全,因此,我们可能无法及时修复物联网基础设施中的安全问题,并且很难去维持“类似防火墙”的访问控制。

SYNwall是思想是创建一个非集中式的单向一次性密码,以使网络能够访问设备,所有不包含OTP的流量都将被丢弃。我们不需要事先知道谁需要访问,我们只需要一个预共享密钥来部署。安全保护机制将对应用层完全透明,因为它是在网络协议级别(TCP和UDP)实现的。

工具安装

这个项目库中包含了Linux内核模块,并且已经在X86_64、ARM、MIPS以及AARCH64架构上测试了3.x、4.x和5.x版本。

该工具要求使用当前内核Header进行编译,这里可以使用对应的包管理器来进行安装。比如说,在Debian发行版系统上可以运行下列命令:

代码语言:javascript复制
sudo apt-get install linux-headers-$(uname -r)

接下来,我们就可以运行编译命令了:

代码语言:javascript复制
make

SYNwall配置

功能模块可以使用insmod或modprobe进行加载。

工具还提供了一些参数来帮助我们实现自定义行为:

1、用于一次性密码的预共享密钥-PSK

这个PSK必须是一个长度为32到1024的字节序列。它将是OTP的一部分,因此它的长度将影响OTP注入包的大小。如果没有此参数,模块将无法加载。

2、启用UDP-enable_udp: 0

针对UDP协议启用或禁用OTP。默认配置下是禁用的,设置为1即可启用。UDP上的OTP要求模块在两个通信设备上都处于活动状态,因为在将数据包转发到应用层之前,必须(由模块)删除OTP。UDP连接跟踪依赖于conntrack模块,因此必须插入它才能使用此功能(这取决于安装)。

3、精度参数-precision: 10

OTP使用了当前设备时间进行计算,由于不同设备上的日期时间可能不同,因此我们可以设置一个允许的时间偏移量,默认值为10。这里的精度需要使用2的幂来表示:

代码语言:javascript复制
...

     9   ->   1 second

     10  ->   8 seconds

     ...

工具使用样例

下列命令将删除所有流向目标设备的通信流量:

代码语言:javascript复制
sudo insmod SYNwall.ko psk=123456789012345678901234567890123 precision=10 portk=12,13,14,15,16 load_delay=5000 enable_udp=1

在命令行终端中测试两个网络连接:

代码语言:javascript复制
sudo insmod SYNgate.ko dstnet_list=10.1.1.0/24,198.168.10.0/24 psk_list=d41d8cd98f00b204e9800998ecf8427e,efebceec0de382839cd38bffcdc6bf0c enable_udp_list=0,0 precision_list=10,9 enable_antispoof_list=0,1

或者使用一个配置文件:

代码语言:javascript复制
sudo cat /etc/modprobe.d/SYNgate.conf

# SYNgate config file

# Keep it safe!!

options SYNgate dstnet_list=10.1.1.0/24,198.168.10.0/24

options SYNgate psk_list=d41d8cd98f00b204e9800998ecf8427e,efebceec0de382839cd38bffcdc6bf0c

options SYNgate enable_udp_list=0,0

options SYNgate precision_list=10,9

options SYNgate enable_antispoof_list=0,1

性能分析

SYNwall支持在低端设备上使用,并且消耗的资源非常少,这也是我们为什么选择使用Quark哈希作为加密机制的原因。OTP计算增加的开销在常规使用中可以忽略不计:

当大量流量发送到设备时,您可以看到CPU的资源消耗情况:

项目地址

SYNwall:https://github.com/SYNwall/SYNwall

许可证协议

本项目的开发与发布遵循GPL-3.0开源许可证协议。

0 人点赞