banner
B1ueD0g

BlueDog's Home

上班使我怨气比鬼重!
x
telegram
email

開源單包授權工具fwknop環境搭建

FWKNOP 介紹#

SDP 架構下保護的業務服務只允許被認為合法的報文進行訪問,丟棄 “非法” 報文,從而實現了業務服務隱身。SDP 架構分為三個部分:SDP Client、Controller、Gateway。所有的 Client 在訪問資源之前,都要通過 Controller 服務對 SPA 單包驗證和訪問控制,由 Gateway 對應用進行業務處理。如下圖所示:

image-20240120160830753

本文中提到的 fwknop 實現了一種稱為單包授權(SPA)的授權方案,用於隱藏服務。SPA 將單個數據包經過加密,不可重放,並通過 HMAC 進行身份驗證,以便在傳達到隱藏在防火牆後面的 SPA 的主要應用場景是防火牆來過濾一切 SSH 等服務流量,從而使漏洞的利用 (包括 0day 的和未打補丁) 變得更加困難。由於沒有開放端口,因此無法使用 Nmap 掃描 SPA 隱藏的任何服務。fwknop 在 Linux 上支持 iptables 和 firewalld,在 FreeBSD 和 Mac OS X 上支持 ipfw,在 OpenBSD 上支持 PF 和 libpcap。

SPA 通過減少暴露的服務端口,以及使用動態、單一數據包進行授權,增加了安全性,使得攻擊者更難以發現和利用潛在的漏洞。這與零信任模型的理念相符,即不信任任何內外網絡,通過有效的身份驗證和授權來保護資源。

環境介紹 & 配置#

使用Ubuntu 20.04環境進行搭建ubuntu 鏡像下載地址 點擊下載,依賴源為清華源鏡像

網絡地址規劃 & 系統密碼:

主機地址
Server192.168.31.211
Client192.168.31.37

Ubuntu 換源

sudo su 
sudo vim /etc/apt/source.list
#將下文寫入 並保存
# 默認註釋了源碼鏡像以提高 apt update 速度,如有需要可自行取消註釋
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse

# 預發布軟件源,不建議啟用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
sudo apt update 

fwknop 源碼下載 & 編譯 & 安裝#

從 github 下載程序,首先安裝前置工具

sudo apt install git make gcc libpcap gawk mawk libpcap-dev

使用 git 命令將代碼下載到本地

git clone https://github.com/mrash/fwknop.git 
cd fwknop
chmod +x configure 
./configure --prefix=/usr --sysconfdir=/etc --disable-client # 這一步用來檢查依賴安裝是否完整

如圖這一步即為成功

image-20240117171211729

繼續編譯程序,注意需要使用root權限來運行程序

sudo make
sudo make install
which fwknopd #如果能成功找到文件代表安裝成功

配置 fwknop 服務端#

fwknopd.conf需要配置的信息為網卡名稱 在 40 行的位置

PCAP_INTF ens33

access.conf需要配置的敲門規則,以及客戶端的 token,生效時間等等

key 之類的東西先不管,會在客戶端進行生成

SOURCE              ANY
OPEN_PORTS	tcp/22
KEY_BASE64          TxpMVCiWRxc6IUR0rmABy2jKTDnI3SFa1MRD8fuOtgc=
HMAC_KEY_BASE64     mm+lPMq6WY8QHOcZdJ80XmDlNbWw+7zOJB87uw5wf9ShkgPiykxXDgPUeA+X6UlUF6Oa3MTEcSR0GMUZjm6sJQ==
FW_ACCESS_TIMEOUT	20
# If you want to use GnuPG keys then define the following variables
#
#GPG_HOME_DIR           /homedir/path/.gnupg
#GPG_DECRYPT_ID         ABCD1234
#GPG_DECRYPT_PW         __CHANGEME__

FW_ACCESS_TIMEOUT 設置 20 表示敲門,門開會保持 20s,20s 過了以後,門關閉

開啟與關閉

sudo fwknopd start 啟動服務
sudo fwknopd -S	查看服務運行PID
kill -9 [pid] 結束進程

安裝客戶端驗證服務成功#

sudo apt install fwknop-client

成功安裝之後 使用如下命令生成驗證信息

fwknop -A tcp/22 -a 192.168.31.37 -D 192.168.31.211 -p 62201 -P udp --key-gen --use-hmac --save-rc-stanza

-a 後為客戶端 ip,-D 後面為服務器 ip,-p 後為服務器監聽 SPA 包的端口,-P 後為發送的 SPA 包的協議,一般採用 UDP 包。

執行後生成了文件.fwknoprc文件中有 key,將 key 放入access.conf配置信息

通過iptales封禁 22 端口,這一步的意義是手動關閉 22 端口,在敲門之後程序會創建一條 iptables 規則,放行 22 端口

sudo iptables -I INPUT 1 -i ens33 -p tcp --dport 22 -j DROP
sudo iptables -I INPUT 1 -i ens33 -p tcp --dport 22 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

使用端口掃描工具進行測試,效果如下圖

image-20240117184454361

打開客戶端工具進行敲門

wknop -n 192.168.31.211

image-20240117184547172

驗證成功

觀察 iptables 的變化 敲門前

image-20240117191450209

敲門後

image-20240117191513591

可以看到客戶機的用戶名 以及創建一條 iptables 規則放行 ssh 端口

總結與展望#

本文檔詳細介紹了 fwknop 環境搭建的過程,從解釋 fwknop 單包授權(SPA)的概念開始,闡釋了其在安全動態端口敲門(SDP)架構中的重要作用。文中詳盡指導了如何在 Ubuntu 20.04 系統上進行環境配置,包括網絡規劃和軟件包源的更新。同時,還介紹了如何從 GitHub 下載 fwknop 源代碼並進行編譯安裝,以及如何配置 fwknop 服務端,包括設置網絡接口、敲門規則和客戶端令牌,最後還涉及了客戶端的安裝和服務運行的驗證過程。

然而,fwknop 作為網絡安全工具存在問題。截至最新版本 2.6.11-pre1(2019 年 12 月發布)後,代碼長期未更新。由於使用 C 語言,Fwknop 其面臨跨平台能力不足、兼容性問題和內存漏洞風險,如 CVE-2012-4434、CVE-2012-4435、CVE-2012-4436 所示。同時美國國家安全局已建議避免使用 C/C++ 軟件,強調更安全編程語言的需求。

2031705993018_.pic

image-20240123153436937

展望未來,網絡安全領域的發展有望引入更先進的技術,如自主可控的零信任網絡隱身技術 NHP(Network Hiding Protocol)。NHP 技術通過更加嚴密的安全機制和智能化的管理,能夠有效地提高網絡的隱蔽性和抵禦攻擊的能力。這種技術在未來可能會成為網絡安全的重要發展方向,尤其是在應對日益複雜的網絡威脅和提升系統的整體安全性方面,NHP 展現出巨大的潛力。通過引入這樣的技術,我們可以期待一個更加安全、可靠的網絡環境。

附錄#

[1] Fwknop 的 Github 倉庫地址:https://github.com/mrash/fwknop

[2] Fwknop 的官方支持文檔:http://www.cipherdyne.org/fwknop/

[3]CVE-2012-4436:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-4436

[4]CVE-2012-4435https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-4435

[5]CVE-2012-4434:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-4434

[6] Fwknop 相關 CVE 漏洞分析文章:https://ioactive.com/wp-content/uploads/2018/05/Multiple_Security_Vulnerabilities_in_Fwknop.pdf

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。