fwknop研究

1,205 阅读3分钟

介绍

Fwknop:单包授权与端口试探工具

​ fwknop实现了一种称为单包授权(SPA)的授权方案,用于隐藏服务。SPA将单个数据包经过加密,不可重放,并通过HMAC进行身份验证,以便在传达到隐藏在防火墙后面的服务。

​ SPA的主要应用场景是防火墙来过滤一切SSH等服务流量,从而使漏洞的利用(包括0day的和未打补丁)变得更加困难。由于没有开放端口,因此无法使用Nmap扫描SPA隐藏的任何服务。

​ fwknop在Linux上支持iptables和firewalld,在FreeBSD和Mac OS X上支持 ipfw,在OpenBSD上支持PF和libpcap。

流程

fwknop结合单包认证(SPA)隐藏SSH后台进程大体分为以下步骤,前置条件是安装了SPA客户端(主机名:192.168.88.28)、安装了fwknopd服务的SPA服务端(域名:192.168.88.29)、后台SSH进程处在监听状态:

    1.使用fwknop --key-gen命令生成密码和HMAC 密钥。

    2.把刚刚生成密钥发送给安装了fwknopd服务的服务端(SSHD处于监听状态)。

    3.启动fwknopd服务然后开启配置了默认丢弃策略的防火墙来拦截所有入站的SSH连接。

    4.在外网利用fwknop客户端发送SPA数据包给服务端并且让fwknopd服务打开服务端的防火墙。

   5.使用你手头上常用的ssh客户端去连接服务端。此时,其他人发现不了服务端的SSHD服务处在监听状态。

fwknop安装部署

1、服务器安装

在服务端执行安装命令,进行服务端的安装

sudo apt-get install fwknop-server

安装完成后,查看版本,如果能够看到版本则表明安装成功

sudo fwknopd -V

2、客户端安装

在客户机上执行安装命令,进行客户端的安装

sudo apt-get install fwknop-client

安装完成后,查看版本,如果能够看到版本则表明安装成功

sudo fwknop -V

设置fwknop

1、客户端设置

在客户机上执行如下命令,建立针对22端口的敲门机制

sudo fwknop -A tcp/22 -a 192.168.88.29  -D 192.168.88.28  --key-gen --use-hmac --save-rc-stanza

执行

grep KEY /home/wudun/.fwknoprc

执行后,得到如下信息

KEY_BASE64                  1t02U3X5ZJ9BR8J9hBWUTahjXdr+AuBoB2jea7xKqCc=
HMAC_KEY_BASE64             ZK3EepW9x0zyOc+Jh1JVo9KCpIvtUbhWEmVgMO1vLSHZtOKs1upJxqIlW7hDn3gbQ2Kq13UJJ+2IytuShPXHqA==

2、服务端设置

进入服务器,编辑/etc/fwknop/access.conf 将之前复制的客户端生成的KEY_BASE64以及HMAC_KEY_BASE64信息复制到文件中。 包含如下内容:

SOURCE              ANY
REQUIRE_SOURCE_ADDRESS        Y
KEY_BASE64                  1t02U3X5ZJ9BR8J9hBWUTahjXdr+AuBoB2jea7xKqCc=
HMAC_KEY_BASE64             ZK3EepW9x0zyOc+Jh1JVo9KCpIvtUbhWEmVgMO1vLSHZtOKs1upJxqIlW7hDn3gbQ2Kq13UJJ+2IytuShPXHqA==

打开文件/etc/fwknopd/fwknopd.conf 将关键字"PCAP_INTF",定义为你当前主机实际使用的网卡名称。 fwknop需要知道在那张网卡上进行监听。通过ifconfig查询目前网卡,如下:

PCAP_INTF                   ens160;

配置iptables进行端口22的控制:

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

执行第一条命令后,ssh就断开了。因此这个配置需要直接在服务器上进行。

正常运行后可以查看iptables结果

sudo fwknopd --fw-list-all

![image-20210422172029724](/Users/zhaowang/Library/Application Support/typora-user-images/image-20210422172029724.png)

测试fwknop的SPA效果

1、fwknop客户端使用方法

在客户端机上,使用如下命令可以进行敲门实现开启端口。

sudo fwknop -n  192.168.88.28

2、使用nmap扫描

安装nmap。ubuntu默认没有nmap,使用命令进行安装

sudo apt-get install nmap

扫描端口

sudo nmap 192.168.88.28

Fwknop-gui

​ 官方跨平台fwknop客户端用户界面fwknop-gui 由Jonathan Bennett开发。支持大多数主要的客户端SPA模式,包括NAT请求,HMAC和Rijndael密钥(尚不支持GnuPG),fwknoprc节点保存等。目前fwknop-gui在Linux,Mac OS X和Windows上运行。

fwknop-gui下载

fwknop综合教程

www.cipherdyne.org/fwknop/docs…

www.cipherdyne.org/https://inc…)