单包授权认证(SPA)fwknop之安装和演⽰
单包授权认证(SPA)fwknop之安装和演⽰
单包授权认证(SPA)简介
单包授权(SPA)是SDP(软件定义边界)的核⼼功能。主要作⽤是通过默认关闭服务端⼝,使服务实现⽹络隐⾝,从⽹络上⽆法连接、⽆法扫描。如果需要使⽤服务,则通过特定客户端发送认证报⽂信息给服务器,服务器认证该报⽂后,将对该IP地址打开相关的服务。
SPA是⼀种概念化的技术,其前⾝是Port Knocking(敲端⼝)技术。有兴趣的读者可以去了解⼀下。但是不同的是,SPA采⽤了认证加密技术,因此⽐PK更加安全。
项⽬fwknop中实现⼀种SPA⽅案。本⽂详述了如何在两台虚拟机上搭建⼀个模拟环境验证和学习SPA技术。
环境介绍
Server
Ubuntu 20.04 LTS Server版
172.24.128.247
Client
Ubuntu 20.04 LTS Server版
172.24.128.253
操作系统准备
1、操作系统安装: 操作系统就按照各种默认安装就好,注意的是在安装中要打开SSH以便后期直接使⽤。
2、更新源: 为了能够安装最新的fwknop,需要改变更新源,建议使⽤清华源。阿⾥的不是最新版本。
打开sources.list⽂件。ubuntu默认不使⽤root,因此需要加⼊sudo
sudo vim /etc/apt/sources.list
在⽂件末尾增加如下软件源地址
爱人帮帮我##清华源
deb mirrors.tuna.tsinghua.edu/ubuntu/ bionic main restricted universe multiverse
deb-src mirrors.tuna.tsinghua.edu/ubuntu/ bionic main restricted universe multiverse
deb mirrors.tuna.tsinghua.edu/ubuntu/ bionic-updates main restricted universe multiverse
deb-src mirrors.tuna.tsinghua.edu/ubuntu/ bionic-updates main restricted universe multiverse
deb mirrors.tuna.tsinghua.edu/ubuntu/ bionic-backports main restricted universe multiverse
deb-src mirrors.tuna.tsinghua.edu/ubuntu/ bionic-backports main restricted universe multiverse
deb mirrors.tuna.tsinghua.edu/ubuntu/ bionic-security main restricted universe multiverse
deb-src mirrors.tuna.tsinghua.edu/ubuntu/ bionic-security main restricted universe multiverse
deb mirrors.tuna.tsinghua.edu/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src mirrors.tuna.tsinghua.edu/ubuntu/ bionic-proposed main restricted universe multiverse
执⾏命令,更新系统软件源地址
sudo apt-get update
sudo apt-get upgrade
安装部署fwknop
在ubuntu20.04 LTS Server版上,安装fwknop没有需要解决的依赖问题。
1、服务端安装
在服务端执⾏安装命令,进⾏服务端的安装
sudo apt-get install fwknop-server
安装完成后,查看版本,如果能够看到版本则表明安装成功
sudo fwknopd -V
正确显⽰如下:
fwknopd server 2.6.9, compiled for firewall bin: /sbin/iptables
潘阳照片2、客户端安装
在客户机上执⾏安装命令,进⾏客户端的安装
sudo apt-get install fwknop-client
安装完成后,查看版本,如果能够看到版本则表明安装成功
sudo fwknopd -V
正确显⽰如下:
fwknop client 2.6.9, FKO protocol version 3.0.0
设置fwknop
1、客户端设置
在客户机上执⾏如下命令,建⽴针对22端⼝的敲门机制
sudo fwknop -A tcp/22 -a 客户机IP  -D 服务器IP  --key-gen --use-hmac --save-rc-stanza
执⾏
grep KEY /root/.fwknoprc
屠臣夫人
获取KEY_BASE64以及HMAC_KEY_BASE64的信息。
注意这地⽅坑就来了 ,直接执⾏会报权限错误 。原因是ubuntu对root做了显⽰,不是root⽤户是没有办法操作root⽬录的。因此需要先执⾏命令切换到root权限。然后再执⾏grep KEY。
sudo -s
如要退出则执⾏ exit
执⾏后,得到如下信息
KEY_BASE64                  jRd8V3QT02juqJ/3qvMlpqe+4KeLJsFZbx/l3ZTy25g=
HMAC_KEY_BASE64            p+0Fvzh8JdtarjOQdM03AGOCzFV1RpXTaDvQnrDs79x3tzIGFIb3/QW06q3ndsL4K8O6xOk12jbwMuQUB+UCcw==
复制此信息,下⾯将把KEY_BASE64以及HMAC_KEY_BASE64信息复制到服务器上,服务器将会据此来确认“敲门”的合法性。
2、服务器端设置
进⼊服务器,编辑/etc/f 将之前复制的客户端⽣成的KEY_BASE64以及HMAC_KEY_BASE64信息复制到⽂件中。包含如下内容:
SOURCE              ANY
REQUIRE_SOURCE_ADDRESS        Y
KEY_BASE64                  jRd8V3QT02juqJ/3qvMlpqe+4KeLJsFZbx/l3ZTy25g=
HMAC_KEY_BASE64            p+0Fvzh8JdtarjOQdM03AGOCzFV1RpXTaDvQnrDs79x3tzIGFIb3/QW06q3ndsL4K8O6xOk12jbwMuQUB+UCcw==
打开⽂件/etc/f
你快乐吗 蔡依林将关键字"PCAP_INTF",定义为你当前主机实际使⽤的⽹卡名称。
fwknop需要知道在那张⽹卡上进⾏监听。如下:
PCAP_INTF ens32
这⾥的 ens32 就是我这台主机的⽹卡名称。
查看⽹卡名称可以使⽤命令 ip address
sudo ip address
得到如下内容:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host汪苏泷的照片
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:e4:3f:1e brd ff:ff:ff:ff:ff:ff
inet 172.24.128.247/24 brd 172.24.128.255 scope global dynamic ens32
valid_lft 68778sec preferred_lft 68778sec
inet6 fd86:139:7311:4128:20c:29ff:fee4:3f1e/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 2574380sec preferred_lft 587180sec
inet6 fe80::20c:29ff:fee4:3f1e/64 scope link
valid_lft forever preferred_lft forever
配置iptables进⾏端⼝22的控制。
iptables -I INPUT 1 -i ⽹卡名称  -p tcp --dport 22 -j DROP
杨幂旗袍iptables -I INPUT 1 -i ⽹卡名称  -p tcp --dport 22 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
执⾏第⼀条命令后,ssh就断开了。因此这个配置需要直接在服务器上进⾏。
执⾏命令启动fwknopd 服务
sudo fwknopd
查看是否正常运⾏
sudo fwknopd -S
正常则返回如下信息:
Detected fwknopd is running (pid=13080).
如果显⽰没有运⾏,可以运⾏fwknop前台运⾏命令,打印出启动过程中出现了什么问题。
sudo fwknopd -f
正常运⾏后可以查看iptables结果
sudo fwknopd --fw-list-all
如果⼀切顺利配置到此就结束了。
测试fwknop的SPA效果
1、fwknop客户端使⽤⽅法
在客户端机上,使⽤如下命令可以进⾏敲门实现开启端⼝。
sudo fwknop -n  服务器IP
默认打开30s,如果30s没有客户端的任何数据交换则会⾃动关闭。各种参数设置位于服务器上的 /etc/f ⽂件中。