介绍
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

测试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上运行。