Linux Ubuntu系统fwknop单包授权认证(SPA)流程
最近在做零信任相关软件的验证,单包授权认证流程中最核心最基础的软件就是iptables,所以研究一下iptables和基于iptables的软件fwknop。(由于此文主要留给自己看,暂时省略fwknop的安装流程,不过参考文章中都有。)
在两台liunx虚拟机中分别安装好fwknop-server和fwknop-client以后,先对两台机子进行初始化设置。
server服务器ip地址为:192.168.224.130
client客户端ip地址为:192.168.224.128
涉及到的命令基本都需要root权限,可以先sudo -i暂时进入root权限,不需要时logout退出。
在客户端中执行如下命令,建立针对22端口的敲门机制:
[root@localhost ~]# sudo fwknop -A tcp/22 -a 192.168.224.128 -D 192.168.224.130 --key-gen --use-hmac --save-rc-stanza
然后执行如下命令,获取获取KEY_BASE64以及HMAC_KEY_BASE64的信息。
[root@localhost ~]# sudo grep KEY /root/.fwknoprc
获得如下信息:
KEY_BASE64 cYhgo4jZUCMCGQBPHWRBL0R9Aeq8Mj8CXojMNdW1oyA=
HMAC_KEY_BASE64 UqByGDKSjzm0ZRnABLztW2k8EPAjGUnVgszfRo6XkRyvDYHMUCs81MddWwqlxT8btlkkFXq4XwenQkDjeROctA==
将这些信息复制到服务器中,以便服务器确认客户端“敲门”行为的合法性。
在服务器端执行如下命令:
sudo vim /etc/fwknop/access.conf
进入配置文件后,输入i,插入
SOURCE ANY
DESTINATION ANY
REQUIRE_SOURCE_ADDRESS Y
OPEN_PORTS tcp/22,tcp/80,udp/1194,tcp/4432
KEY_BASE64 cYhgo4jZUCMCGQBPHWRBL0R9Aeq8Mj8CXojMNdW1oyA=
HMAC_KEY_BASE64 UqByGDKSjzm0ZRnABLztW2k8EPAjGUnVgszfRo6XkRyvDYHMUCs81MddWwqlxT8btlkkFXq4XwenQkDjeROctA==
点击Esc,退出插入模式,输入:wq,退出并保存配置文件。
继续执行命令:
[root@localhost ~]# sudo vim /etc/fwknopd/fwknopd.conf
使用 ip a命令查询目前使用的网卡名称,如:ens32。进入服务器配置文件,将其中关键字PCAP_INTF 定义为服务器当前使用的网卡,如:
PCAP_INTF ens32
使用iptables进行端口22的控制
[root@localhost ~]# sudo iptables -I INPUT 1 -i ens32 -p tcp --dport 22 -j DROP
[root@localhost ~]# sudo iptables -I INPUT 1 -i ens32 -p tcp --dport 22 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
配置完成后,打开fwknopd
[root@localhost ~]# fwknopd
查看iptables结果
[root@localhost ~]# fwknopd --fw-list
配置结束
接着进行SPA测试,客户端中使用如下命令进行端口敲门:
[root@localhost ~]# fwknop -n 192.168.224.130
服务器中使用如下命令查看敲门结果:
[root@localhost ~]# fwknopd --fw-list
出现如下信息则敲门成功
Chain FWKNOP_INPUT (1 references)
num target prot opt source destination
1 ACCEPT tcp -- 192.168.224.128 0.0.0.0/0 tcp dpt:22 /* _exp_1605597903 */
客户端使用nmap命令扫描服务器,则结果为:
PORT STATE SERVICE
22/tcp open ssh
SPA验证完成!
使用tcpdump对服务器接收到的数据包进行监听,发现在fwknop敲门行为前后,客户端通过udp协议向服务器的62201端口发送一个验证包,但是此项行为涉及的端口和协议都可以使用–server-port参数进行修改。
没找到如何修改–server-port默认参数,但每次敲门行为都可以指定端口,操作命令如下
fwknop -n 192.168.224.130:12345
端口号范围再10000-65535之间。同时可能要修改服务器的/etc/fwknop/fwknopd.conf中的PCAP_FILTER字段。
PCAP_FILTER udp port 62201;
本文主要参考文章:
1、https://blog.csdn.net/he_tao225/article/details/106425229
Linux Ubuntu系统fwknop单包授权认证(SPA)流程相关推荐
- 授权服务器文件包,单包授权认证(SPA)fwknop之安装和演示
单包授权认证(SPA)fwknop之安装和演示 单包授权认证(SPA)简介 环境介绍 操作系统准备 安装部署fwknop 设置fwknop 测试fwknop的SPA效果 参考 单包授权认证(SPA)简 ...
- 实现SPA实现单包授权技术的方案Fwknop
端口保护--从端口敲门到单包授权 - 知乎 目前,开源社区中发布了一个实现SPA实现单包授权技术的方案Fwknop. https://github.com/mrash/fwknop 基于零信任的软件定 ...
- 第一篇:linux(ubuntu)系统实操学习
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 一.linux的认识 1.Linux的应用领域 2.Linux学习建 ...
- 【 I.MX6U-ALPHA 】嵌入式Linux Ubuntu系统入门系列(二)Ubuntu 系统入门
目录 1.Ubuntu系统初体验 1.1.开启Ubuntu虚拟机 1.2.系统设置 1.3.中文输入法 1.4.Ubuntu终端操作 2.Shell操作 2.1 Shell基本操作 2.2.常用She ...
- Linux / Ubuntu系统查看磁盘空间及目录容量
Linux / Ubuntu系统查看磁盘空间及目录容量 常用命令: df -hl 查看磁盘剩余空间 df -h 查看每个根路径的分区大小 参考:https://blog.csdn.net/dta050 ...
- linux ubuntu系统 ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)数据
linux ubuntu系统 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)数据 ...
- Ubuntu系统利用snap包管理的使用
Ubuntu系统利用snap包管理的使用 snap包管理工具的好处: 在apt软件管理工具中,在安装软件的同时会把所有的依赖包进行安装,如果出现这样的情况是没有办法解决的.如果在办公的过程中需要不同的 ...
- Linux ubuntu系统在线安装、启动、卸载MongoDB 5.0
mongodb 5.0只支持64位系统,官网地址:https://www.mongodb.com/ 在线安装 1.导入MongoDB公共GPG Key wget -qO - https://www.m ...
- 安卓9.0刷linux,Ubuntu系统下编译Android 9.0系统
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 前言 在Ubuntu系统下编译Android系统.哎呀不知道是不是换了新电脑的缘故,这次编译居然从安装JDK和配置环境下 ...
- Linux Ubuntu系统台式电脑安装外置USB无线网卡驱动(以net-core磊科NW392无线网卡为例)
前言 最近想让自己的台式电脑也能连上WiFi,台式电脑没有无线网卡,所以使用了一个外置USB无线网卡,就像下面这两个 这个直接插在电脑上就能使用,对于Windows系统来说,使用这个网卡操作非常简单, ...
最新文章
- 速度快到飞起 如何跟蜻蜓的大脑学习计算?
- ETSI MEC — 容灾组网模型
- 如何使用.NET配置文件(一)
- adb linux 权限更改,使用命令chmod修改android文件权限
- 线程池和线程详细教程
- [导入]C#中TextBox只能输入数字的代码
- 【2017年第3期】开放政府环境下医药公司与医生之间的价值转移
- C语言32个关键字总结
- 一杯“咸水”的人生哲理
- STL 中的容器们 (二)
- Rotate List leetcode
- Navicat12.0 激活
- 嵩天python笔记_嵩天Python学习笔记-01
- 基于javaweb+springboot的学生学科竞赛管理管理系统设计和实现(java+springboot+ssm+maven)
- CAD两条曲线如何连接成平滑的波浪线?
- [计算机毕业设计]深度学习的图标型验证码识别系统
- git cherry-pick使用总结
- php扩展 sockets,php sockets扩展安装配置详解
- 最新配资系统源码完美运行版+策略买点/A股系统
- 多地“摇号购房” 开发商迎来了良机?
热门文章
- 开始启程, 你的第一行前端代码
- Reliance Jio 4G网速最快 超过沃达丰及Idea
- 【原创】登录和注册页推荐 尊重原创 记得点赞
- 99计数器c语言,数字显示00-99计数器
- 使用ArrayList集合,对其添加10个不同的元素,并使用Iterator遍历该集合
- 为小米4与小米3 Mi3 Mi4编译Cyanogenmod 12.1与13.0 (CM12与CM13) 的步骤以及错误解决
- 机房动环监控解决方案!
- XCOM2中敌对生物设计分析(ADVENT篇)
- 注释全 新手可懂 可复用式复数计算器C++实现
- “匠心之韵,数据之美”之数字营销专访【友盟+】一周年:不忘初心,从整合到融合,从合并到合力...