单包授权认证(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之安装和演示相关推荐

  1. 服务器文件传输抓包,服务端的抓包

    如果不会在Linux命令行方式下抓包,永远不会成为服务端开发的高手: 当一个技术系统变得越来越庞大复杂的时候,用抓包的方式来掌握和理解其中的网络交互,就变得尤为重要: 抓包是掌握生产系统的一种方式,这 ...

  2. 微软认证授权服务器,oauth 2.0到微软认证服务器

    需要格式化令牌请求的帮助.我搜索了一遍,看了很多文档.提琴手的回应是关于"grant_type"的大喊,但它包括在内.oauth 2.0到微软认证服务器 POST http://l ...

  3. springCloud 授权服务器

    之前弄好了非常非常简单的限流,现在就是登陆进来的用户,我们需要对他进行认证.这个时候就要用到我们的授权服务器了. 什么是授权服务器,就是给客户端一个身份,一个token.让我们的服务器认识他. spr ...

  4. Golang LicenseServer授权服务器的设计 与 RSA 密钥对的应用

    目录: 1.为什么要写授权服务器 LicenseServer 2.授权服务器的设计思路 3.授权服务器所使用到的加密技术 1.为什么要写授权服务器 为了防止别人拿到二进制后,自己搭建服务器,制作私服而 ...

  5. win7 ftp服务器文件访问权限,win7 ftp服务器 文件夹权限

    win7 ftp服务器 文件夹权限 内容精选 换一换 DDK_HOME:为ddk安装目录,默认为../../che/ddk/ddk,请根据实际情况修改为 DDK安装目录/ddk/.CC_PATTERN ...

  6. 对服务器文件夹写,服务器文件夹写入权限设置

    服务器文件夹写入权限设置 内容精选 换一换 Linux x86-64(64位)服务器,常见的有EulerOS.Ubuntu.Debian.CentOS.OpenSUSE等.Windows 7及以上版本 ...

  7. 实现SPA实现单包授权技术的方案Fwknop

    端口保护--从端口敲门到单包授权 - 知乎 目前,开源社区中发布了一个实现SPA实现单包授权技术的方案Fwknop. https://github.com/mrash/fwknop 基于零信任的软件定 ...

  8. 使用Owin中间件搭建OAuth2.0认证授权服务器

    前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...

  9. 零信任实践之单包认证(SPA)

    概况 随着零信任概念的越来越火热,产业界也都在考虑如何将零信任的理念落地到实践中.这其中SDP推动零信任的实践路上走出了一大步,所谓SDP又称软件定义边界,理论上来说可以替代传统的物理边界.SDP边界 ...

最新文章

  1. python怎样给对象赋值_Python对象赋值、浅拷贝和深拷贝
  2. 你知道铅酸蓄电池的常见失效模式吗?
  3. 【数据结构】ArrayList原理及实现学习总结
  4. 《Linux内核设计与实现》读书笔记 - 目录 (完结)【转】
  5. python是个啥玩意儿_Pythonic到底是什么玩意儿?
  6. mysql 安装在路由器_MySQL如何安装?安装MySQL数据库的三种方法
  7. 常用的webservice接口(转)
  8. android 太阳系布局,Solar Walk太阳系模型软件-三维太阳系模型下载2.4.49安卓版-西西软件下载...
  9. 英尺、英寸、磅和厘米的换算
  10. 优秀后端架构师必会知识:史上最全MySQL大表优化方案总结...
  11. 甲骨文称将出示李艾科犯罪证据 与惠普较劲
  12. 被关在寝室的某个下午
  13. JAVA导出EXCEL实现
  14. Word2vec原理与应用
  15. JS逆向 --- 易盾有感滑块
  16. 海思SD3403开发板学习(三)
  17. 【MM32F5270开发板试用】六、如何用 星辰内核 + 国产RTOS 通过I2S播放 “星辰大海”
  18. 【Crypto】BUGKU-抄错的字符
  19. Appium搭建MacOS环境下的iOS App自动化测试环境(Windows搭个MacOS虚拟机就行,亦无须iPhone)
  20. nexus7二代升级android8,添横屏模式 Nexus7升级至Android4.1.2

热门文章

  1. 10——Filter过滤器
  2. 广电网络电视怎么服务器连接中断,怎么解决广电网络看电视卡
  3. 程序员,这些跨年姿势已就位,请查收~
  4. 人工势场法路径规划算法(APF)
  5. spi通讯不需要地线吗_SPI通信时是不是主机和从机的MISO、MOSI两根线应该交叉接呀?...
  6. 奇迹控制器证实配置登录器详解
  7. druid 查条数_Druid.io查询分析
  8. OSPF单区域配置实验
  9. SQL Server 简单模式下,误删除堆表记录如何恢复(绕过页眉校验) (转)
  10. Speedoffice(word)如何添加文字水印