關于SYNwall
SYNwall是一款功能強大的零配置物聯網防火墻,該項目是一個以Linux內核模塊構建的項目,可以幫助廣大研究人員實現一個透明的零配置/零維護的物聯網防火墻。
通常情況下,物聯網設備是不具備中央控制特性的,而且硬件配置不搞,環境條件也惡劣。廣大研究人員并沒有多少時間去專門維護物聯網設備的安全,因此,我們可能無法及時修復物聯網基礎設施中的安全問題,并且很難去維持“類似防火墻”的訪問控制。
SYNwall是思想是創建一個非集中式的單向一次性密碼,以使網絡能夠訪問設備,所有不包含OTP的流量都將被丟棄。我們不需要事先知道誰需要訪問,我們只需要一個預共享密鑰來部署。安全保護機制將對應用層完全透明,因為它是在網絡協議級別(TCP和UDP)實現的。
工具安裝
這個項目庫中包含了Linux內核模塊,并且已經在X86_64、ARM、MIPS以及AARCH64架構上測試了3.x、4.x和5.x版本。
該工具要求使用當前內核Header進行編譯,這里可以使用對應的包管理器來進行安裝。比如說,在Debian發行版系統上可以運行下列命令:
sudo apt-get install linux-headers-$(uname -r)
接下來,我們就可以運行編譯命令了:
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的冪來表示:
... ?????9 ??-> ??1 second ?????10 ?-> ??8 seconds ?????...
工具使用樣例
下列命令將刪除所有流向目標設備的通信流量:
sudo insmod SYNwall.ko psk=123456789012345678901234567890123 precision=10 portk=12,13,14,15,16 load_delay=5000 enable_udp=1
在命令行終端中測試兩個網絡連接:
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
或者使用一個配置文件:
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開源許可證協議。
來源:FreeBuf.COM