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

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。