最近在做零信任相关软件的验证,单包授权认证流程中最核心最基础的软件就是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)流程相关推荐

  1. 授权服务器文件包,单包授权认证(SPA)fwknop之安装和演示

    单包授权认证(SPA)fwknop之安装和演示 单包授权认证(SPA)简介 环境介绍 操作系统准备 安装部署fwknop 设置fwknop 测试fwknop的SPA效果 参考 单包授权认证(SPA)简 ...

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

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

  3. 第一篇:linux(ubuntu)系统实操学习

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 一.linux的认识 1.Linux的应用领域 2.Linux学习建 ...

  4. 【 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 ...

  5. Linux / Ubuntu系统查看磁盘空间及目录容量

    Linux / Ubuntu系统查看磁盘空间及目录容量 常用命令: df -hl 查看磁盘剩余空间 df -h 查看每个根路径的分区大小 参考:https://blog.csdn.net/dta050 ...

  6. 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)数据 ...

  7. Ubuntu系统利用snap包管理的使用

    Ubuntu系统利用snap包管理的使用 snap包管理工具的好处: 在apt软件管理工具中,在安装软件的同时会把所有的依赖包进行安装,如果出现这样的情况是没有办法解决的.如果在办公的过程中需要不同的 ...

  8. Linux ubuntu系统在线安装、启动、卸载MongoDB 5.0

    mongodb 5.0只支持64位系统,官网地址:https://www.mongodb.com/ 在线安装 1.导入MongoDB公共GPG Key wget -qO - https://www.m ...

  9. 安卓9.0刷linux,Ubuntu系统下编译Android 9.0系统

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 前言 在Ubuntu系统下编译Android系统.哎呀不知道是不是换了新电脑的缘故,这次编译居然从安装JDK和配置环境下 ...

  10. Linux Ubuntu系统台式电脑安装外置USB无线网卡驱动(以net-core磊科NW392无线网卡为例)

    前言 最近想让自己的台式电脑也能连上WiFi,台式电脑没有无线网卡,所以使用了一个外置USB无线网卡,就像下面这两个 这个直接插在电脑上就能使用,对于Windows系统来说,使用这个网卡操作非常简单, ...

最新文章

  1. 速度快到飞起 如何跟蜻蜓的大脑学习计算?
  2. ETSI MEC — 容灾组网模型
  3. 如何使用.NET配置文件(一)
  4. adb linux 权限更改,使用命令chmod修改android文件权限
  5. 线程池和线程详细教程
  6. [导入]C#中TextBox只能输入数字的代码
  7. 【2017年第3期】开放政府环境下医药公司与医生之间的价值转移
  8. C语言32个关键字总结
  9. 一杯“咸水”的人生哲理
  10. STL 中的容器们 (二)
  11. Rotate List leetcode
  12. Navicat12.0 激活
  13. 嵩天python笔记_嵩天Python学习笔记-01
  14. 基于javaweb+springboot的学生学科竞赛管理管理系统设计和实现(java+springboot+ssm+maven)
  15. CAD两条曲线如何连接成平滑的波浪线?
  16. [计算机毕业设计]深度学习的图标型验证码识别系统
  17. git cherry-pick使用总结
  18. php扩展 sockets,php sockets扩展安装配置详解
  19. 最新配资系统源码完美运行版+策略买点/A股系统
  20. 多地“摇号购房” 开发商迎来了良机?

热门文章

  1. 开始启程, 你的第一行前端代码
  2. Reliance Jio 4G网速最快 超过沃达丰及Idea
  3. 【原创】登录和注册页推荐 尊重原创 记得点赞
  4. 99计数器c语言,数字显示00-99计数器
  5. 使用ArrayList集合,对其添加10个不同的元素,并使用Iterator遍历该集合
  6. 为小米4与小米3 Mi3 Mi4编译Cyanogenmod 12.1与13.0 (CM12与CM13) 的步骤以及错误解决
  7. 机房动环监控解决方案!
  8. XCOM2中敌对生物设计分析(ADVENT篇)
  9. 注释全 新手可懂 可复用式复数计算器C++实现
  10. “匠心之韵,数据之美”之数字营销专访【友盟+】一周年:不忘初心,从整合到融合,从合并到合力...