单包授权与端口试探工具Fwknop介绍

2024-03-23 18:32

本文主要是介绍单包授权与端口试探工具Fwknop介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

fwknop实现了一种称为单包授权(SPA)的授权方案,用于隐藏服务。SPA将单个数据包经过加密,不可重放,并通过HMAC进行身份验证,以便在传达到隐藏在防火墙后面的服务。

SPA的主要应用场景是防火墙来过滤一切SSH等服务流量,从而使漏洞的利用(包括0day的和未打补丁)变得更加困难。由于没有开放端口,因此无法使用Nmap扫描SPA隐藏的任何服务。

fwknop项目支持四种不同的防火墙:Linux,OpenBSD,FreeBSD和Mac OS X上的iptables,firewalld,PF和ipfw。

SPA基本上是下一代Port Knocking(PK),但在保留其核心优势的同时,解决了PK所表现出的许多限制。PK局限性包括难以防止重放攻击,不对称密码和HMAC计划,通常不可能可靠地支持,这是非常简单的挂载一个DoS攻击PK服务器通过欺骗一个额外的包成PK顺序遍历网络(因此令人信服的PK服务器客户端不知道正确的序列)。所有这些缺点都通过SPA得到了解决。

同时,SPA将服务隐藏在默认的drop防火墙策略后面,被动地获取SPA数据(通常通过libpcap或其他方法),并为SPA包身份验证和加密/解密实现标准的加密操作。

由fwknop生成的SPA数据包利用HMAC在加密然后验证模型中进行身份验证加密。虽然HMAC的使用目前是可选的(通过–use-hmac命令行开关启用),但有三个原因强烈建议使用:

1.如果没有HMAC,除非使用GnuPG,否则fwknop不可能进行加密的强身份验证,但即使这样,仍然应该应用HMAC。

2.加密后应用的HMAC可防止密码分析CBC模式填充oracle攻击,例如Vaudenay攻击和相关欺骗(如最近的针对SSL的“Lucky 13”攻击)。

3.wknopd守护进程验证HMAC所需的代码比解密SPA包所需的代码要简单得多,因此没有正确的HMAC的SPA包甚至不会通过解密例程发送。

上面的最后一个原因是,即使SPA数据包使用GnuPG加密,仍然应该使用HMAC,因为SPA数据不是通过libgpgme函数发送的,除非HMAC首先检出。GnuPG和libgpgme是相对复杂的代码体,因此限制潜在攻击者通过HMAC操作与此代码交互的能力有助于保持更强的安全性。生成用于SPA通信的HMAC除了普通加密密钥之外还需要专用密钥,并且可以使用该–key-gen选项生成两者。

fwknop使用Rijndael分组密码或通过GnuPG和相关的非对称密码对SPA数据包进行加密。如果选择了对称加密方法,则通常在客户端和服务器之间共享加密密钥(/etc/fwknop/access.conf有关详细信息,请参阅文件)。用于Rijndael加密的实际加密密钥是通过标准PBKDF1密钥导出算法生成的,并且设置了CBC模式。如果选择GnuPG方法,则加密密钥从GnuPG密钥环导出。

用例
使用单数据包授权(SPA)或安全性受到挑战的同类端口 Knocking(PK)的人通常访问在部署SPA / PK软件的同一系统上运行的SSHD。也就是说,在主机上运行的防火墙对所有传入的SSH连接都有一个默认删除策略,这样就不能扫描SSHD,但是SPA守护进程会重新配置防火墙,暂时授予对被动认证的SPA客户机的访问权:

fwknop支持上述内容,但也更加牛批,并且使用NAT(对于iptables / firewalld防火墙)。毕竟,重要的防火墙通常是网络之间的网关,而不是仅部署在独立主机上。NAT通常用于此类防火墙(至少用于IPv4通信),以便为RFC 1918地址空间上的内部网络提供Internet访问,并允许外部主机访问内部系统上托管的服务。

由于fwknop与NAT集成,因此可以利用SPA 通过外部Internet上的用户通过防火墙访问内部服务。虽然这在现代传统网络上有很多应用,但它也允许fwknop支持亚马逊的AWS等云计算环境:

用户界面
官方跨平台fwknop客户端用户界面fwknop-gui (下载,github)由Jonathan Bennett开发。支持大多数主要的客户端SPA模式,包括NAT请求,HMAC和Rijndael密钥(尚不支持GnuPG),fwknoprc节点保存等。目前fwknop-gui在Linux,Mac OS X和Windows上运行。

教程
有关fwknop的综合教程可以在这里找到:

http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html

特征
以下是fwknop项目支持的完整功能列表:

1.在Linux上的iptables和firewalld防火墙,* BSD和Mac OS X上的ipfw防火墙以及OpenBSD上的PF上实现单个数据包授权。

2.fwknop客户端在Cygwin下的Linux,Mac OS X,* BSD和Windows上运行。此外,还有一个Android应用程序可以生成SPA数据包。

3.支持Rijndael和GnuPG方法用于SPA数据包的加密/解密。

4.支持Rijndael和GnuPG的HMAC认证加密。操作顺序是加密 – 然后验证以避免各种密码分析问题。

5.通过有效传入SPA数据包的SHA-256摘要比较来检测和阻止重播攻击。还支持其他摘要算法,但SHA-256是默认算法。

6.通过libpcap从导线上被动地嗅探SPA包。fwknopd服务器还可以从由单独的以太网嗅探器(例如with tcpdump -w ),iptables ULOG pcap writer或直接通过UDP套接字–udp-server模式写入的文件中获取数据包数据。

7.对于iptables防火墙,fwknop添加的ACCEPT规则在自定义iptables链中添加和删除(在可配置的超时之后),以便fwknop不会干扰可能已经加载到系统上的任何现有iptables策略。

8.支持经过身份验证的SPA通信的入站NAT连接(仅适用于iptables防火墙)。这意味着可以将fwknop配置为创建DNAT规则,以便您可以从开放Internet访问RFC 1918 IP地址上的内部系统上运行的服务(如SSH)。还支持SNAT规则,它实质上将fwknopd转换为SPA验证网关,以从内部网络访问Internet。

9.fwknop服务器支持多个用户,并且可以通过/etc/fwknop/access.conf文件为每个用户分配自己的对称或非对称加密密钥。

10.通过https://www.cipherdyne.org/cgi-bin/myip自动解析外部IP地址 (当从NAT设备后面运行fwknop客户端时,这非常有用)。由于外部IP地址在此模式下在每个SPA数据包内进行加密,因此中间人(MITM)会攻击内联设备拦截SPA数据包并仅从其他IP转发以获取访问权限受到阻碍。

11.SPA数据包的目标端口以及通过iptables NAT功能建立后续连接的端口支持端口随机化。后者适用于转发到内部服务的连接以及授予运行fwknopd的系统上的本地套接字的访问权限。

12.与Tor集成(如本DefCon 14演示文稿中所述)。请注意,由于Tor使用TCP进行传输,因此通过Tor网络发送SPA数据包要求每个SPA数据包都通过已建立的TCP连接发送,因此从技术上讲,这打破了“单数据包授权”的“单一”方面。但是,Tor提供的匿名优势在某些部署中可能超过这一考虑因素。

13.实现SPA通信的版本化协议,因此很容易扩展协议以提供新的SPA消息类型,同时保持与旧的fwknop客户端的向后兼容性。

14.支持代表有效SPA数据包执行shell命令。

15.fwknop服务器可以配置为对入站SPA数据包施加多个限制,超出加密密钥强制执行的限制和重放攻击检测。即,包年龄,源IP地址,远程用户,对请求端口的访问等。

16.捆绑了fwknop是一个全面的测试套件,它发布了一系列测试,旨在验证fwknop的客户端和服务器部分是否正常工作。这些测试涉及通过本地环回接口嗅探SPA数据包,构建临时防火墙规则,根据测试配置检查相应的访问权限,并解析来自fwknop客户端和fwknopd服务器的输出,以获得每个测试的预期标记。测试套件输出可以很容易地匿名化,以便与第三方进行通信以进行分析。

17.fwknop是第一个将端口敲击与被动操作系统指纹识别相结合的程序。但是,单包授权提供了除端口 knocking之外的许多安全优势,因此通常不推荐端口 knocking操作模式。

南昌手牵手科技

这篇关于单包授权与端口试探工具Fwknop介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/839174

相关文章

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行