授权服务器文件包,单包授权认证(SPA)fwknop之安装和演示
单包授权认证(SPA)fwknop之安装和演示
单包授权认证(SPA)简介
环境介绍
操作系统准备
安装部署fwknop
设置fwknop
测试fwknop的SPA效果
参考
单包授权认证(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 https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/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/fwktop/access.conf 将之前复制的客户端生成的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/fwknopd/fwknopd.conf
将关键字"PCAP_INTF",定义为你当前主机实际使用的网卡名称。
fwknop需要知道在那张网卡上进行监听。如下:
PCAP_INTF ens32
这里的 ens32 就是我这台主机的网卡名称。
查看网卡名称可以使用命令 ip address
sudo ip address
得到如下内容:
1: lo: 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: 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/fwknopd/fwknopd.conf 文件中。
2、使用nmap扫描
安装nmap。ubuntu默认没有nmap,使用命令进行安装
sudo apt-get install nmap
扫描端口
sudo nmap 172.24.128.247 -p22
你可以按照自己的想法去进一步验证SPA的效果,或者抓包进一步分析交互过程。
参考
参考了以下内容,特此表示感谢
[1]零信任实践之单包认证(SPA).
[2]fwknop 命令介绍
[3]Ubuntu 更新软件源
[4]Ubuntu 18.04及其他版本Linux 下 Nmap 网络扫描工具的安装与使用
[5]linux如何进入root文件夹
[6]Ubuntu 18.04 网卡配置IP
授权服务器文件包,单包授权认证(SPA)fwknop之安装和演示相关推荐
- 服务器文件传输抓包,服务端的抓包
如果不会在Linux命令行方式下抓包,永远不会成为服务端开发的高手: 当一个技术系统变得越来越庞大复杂的时候,用抓包的方式来掌握和理解其中的网络交互,就变得尤为重要: 抓包是掌握生产系统的一种方式,这 ...
- 微软认证授权服务器,oauth 2.0到微软认证服务器
需要格式化令牌请求的帮助.我搜索了一遍,看了很多文档.提琴手的回应是关于"grant_type"的大喊,但它包括在内.oauth 2.0到微软认证服务器 POST http://l ...
- springCloud 授权服务器
之前弄好了非常非常简单的限流,现在就是登陆进来的用户,我们需要对他进行认证.这个时候就要用到我们的授权服务器了. 什么是授权服务器,就是给客户端一个身份,一个token.让我们的服务器认识他. spr ...
- Golang LicenseServer授权服务器的设计 与 RSA 密钥对的应用
目录: 1.为什么要写授权服务器 LicenseServer 2.授权服务器的设计思路 3.授权服务器所使用到的加密技术 1.为什么要写授权服务器 为了防止别人拿到二进制后,自己搭建服务器,制作私服而 ...
- win7 ftp服务器文件访问权限,win7 ftp服务器 文件夹权限
win7 ftp服务器 文件夹权限 内容精选 换一换 DDK_HOME:为ddk安装目录,默认为../../che/ddk/ddk,请根据实际情况修改为 DDK安装目录/ddk/.CC_PATTERN ...
- 对服务器文件夹写,服务器文件夹写入权限设置
服务器文件夹写入权限设置 内容精选 换一换 Linux x86-64(64位)服务器,常见的有EulerOS.Ubuntu.Debian.CentOS.OpenSUSE等.Windows 7及以上版本 ...
- 实现SPA实现单包授权技术的方案Fwknop
端口保护--从端口敲门到单包授权 - 知乎 目前,开源社区中发布了一个实现SPA实现单包授权技术的方案Fwknop. https://github.com/mrash/fwknop 基于零信任的软件定 ...
- 使用Owin中间件搭建OAuth2.0认证授权服务器
前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...
- 零信任实践之单包认证(SPA)
概况 随着零信任概念的越来越火热,产业界也都在考虑如何将零信任的理念落地到实践中.这其中SDP推动零信任的实践路上走出了一大步,所谓SDP又称软件定义边界,理论上来说可以替代传统的物理边界.SDP边界 ...
最新文章
- python怎样给对象赋值_Python对象赋值、浅拷贝和深拷贝
- 你知道铅酸蓄电池的常见失效模式吗?
- 【数据结构】ArrayList原理及实现学习总结
- 《Linux内核设计与实现》读书笔记 - 目录 (完结)【转】
- python是个啥玩意儿_Pythonic到底是什么玩意儿?
- mysql 安装在路由器_MySQL如何安装?安装MySQL数据库的三种方法
- 常用的webservice接口(转)
- android 太阳系布局,Solar Walk太阳系模型软件-三维太阳系模型下载2.4.49安卓版-西西软件下载...
- 英尺、英寸、磅和厘米的换算
- 优秀后端架构师必会知识:史上最全MySQL大表优化方案总结...
- 甲骨文称将出示李艾科犯罪证据 与惠普较劲
- 被关在寝室的某个下午
- JAVA导出EXCEL实现
- Word2vec原理与应用
- JS逆向 --- 易盾有感滑块
- 海思SD3403开发板学习(三)
- 【MM32F5270开发板试用】六、如何用 星辰内核 + 国产RTOS 通过I2S播放 “星辰大海”
- 【Crypto】BUGKU-抄错的字符
- Appium搭建MacOS环境下的iOS App自动化测试环境(Windows搭个MacOS虚拟机就行,亦无须iPhone)
- nexus7二代升级android8,添横屏模式 Nexus7升级至Android4.1.2