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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值