端口敲门与单包授权:网络安全认证方案对比
在网络安全领域,端口敲门(Port Knocking)和单包授权(Single Packet Authorization,SPA)是两种重要的认证机制,它们在保护网络服务免受未授权访问方面发挥着关键作用。下面我们将详细介绍这两种机制的特点、优缺点以及如何解决相关问题。
端口敲门机制
端口敲门是一种通过特定的数据包序列来临时打开防火墙端口的技术。它的基本原理是,客户端发送一系列特定端口的数据包,服务器根据这些数据包的顺序和内容来判断是否临时打开相应的端口,从而允许客户端访问受保护的服务。
加密端口敲门序列
端口敲门序列可以使用对称加密算法进行加密,例如美国国家标准与技术研究院(NIST)选定的高级加密标准Rijndael算法。为了保护敏感信息,应尽可能将更多信息编码到加密的端口敲门序列中。至少应将允许通过数据包过滤器访问的源IP地址、协议和端口号编码在加密负载中。
以下是一个具体的示例,假设要为IP地址207.44.10.34打开TCP端口22:
1.
确定所需信息
:
- IP地址:207.44.10.34,可表示为四个8位值:0xcf、0x2c、0x10、0x22。
- 协议:TCP,用8位值表示为0x06。
- 端口号:22,可表示为两个8位值:0x00和0x16。
2.
填充数据
:
- 由于Rijndael算法的最小块大小为16字节,还需要填充9个字节。这里使用8个字节作为用户名(例如“mbr”,十六进制表示为0x6d、0x62、0x72,后面填充5个0),1个字节作为校验和。
3.
计算校验和
:
- 校验和为所有值的总和对256取模:(0x06 + 0x16 + 0xcf + 0x2c + 0x10 + 0x22 + 0x6d + 0x62 + 0x72) % 256 = 0x96。
4.
生成未加密的端口敲门序列
:
0x06 (TCP)
0x00 (Port 22 upper bits)
0x16 (Port 22 lower bits)
0xcf (207)
0x2c (44)
0x10 (10)
0x22 (34)
0x6d (m)
0x62 (b)
0x72 (r)
0x00 (repeated five times)
0x96
-
选择端口范围
:
- 为了避免干扰正常服务,不将端口敲门数据包发送到TCP端口22或其他知名端口。将端口范围64400 - 64650指定为敲门序列的端口范围,即给加密序列中的每个端口值加上64400。
-
生成最终序列
:
- 使用以下Perl程序生成最终的加密端口敲门序列:
#!/usr/bin/perl -w
use Crypt::CBC;
use strict;
my @clearvals = (0x06, 0x00, 0x16, 0xcf, 0x2c, 0x10, 0x22, 0x6d,
0x62, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96);
my $key = 'knockingtest';
$key .= '0' while length $key < 32;
my $cipher = Crypt::CBC->new({
'key' => $key,
'cipher' => 'Rijndael',
'header' => 'none',
'iv' => 'testinitvectorab',
'literal_key' => 1,
});
my $cleartext = '';
$cleartext .= chr($_) for @clearvals;
my $ciphertext = $cipher->encrypt($cleartext);
my @arr = split //, $ciphertext;
print 64400 + ord($_), ',' for @arr;
print "\n";
exit 0;
运行该程序将输出加密后的端口敲门序列,示例输出如下:
64591,64613,64641,64614,64434,64436,64514,64620,64498,64401,64482,64631,64565,
64440,64482,64643,64624,64561,64471,64462,64426,64493,64413,64476,64423,64484,
64457,64567,64623,64548,64599,64495
端口敲门的架构局限性
尽管端口敲门可以为可能存在未发现安全漏洞的网络服务提供额外的保护,但它也存在一些架构上的局限性,这些局限性主要源于使用数据包头部作为数据传输机制,而不是应用层负载。
1.
序列重放问题
:
- 攻击者可以截获端口敲门序列,并在稍后的时间向同一目标发送相同的序列,从而进行重放攻击。由于端口敲门仅使用数据包头部,很难在敲门序列中引入足够的变化来阻止重放攻击。
- 一些端口敲门实现使用哈希函数的连续迭代(类似于RFC 1760中定义的S/Key认证)来阻止重放攻击,但这些方法需要客户端和服务器存储一些状态信息。另一种方法是在授予访问权限后更改共享的端口敲门序列或每个加密序列的解密密码,但这对于大量用户来说既繁琐又难以扩展。
2.
最小数据传输速率
:
- 由于TCP和UDP头部的端口字段为16位宽,如果端口敲门实现仅使用敲门序列中每个数据包的目的端口号,则每个数据包只能传输两个字节的信息。
- 此外,端口敲门没有像TCP那样的保证有序交付和数据包重传机制,因此在发送完整的端口敲门序列时需要在每个连续数据包之间添加时间延迟,以确保正确的顺序。对于使用128位块大小对称加密的端口敲门序列,至少需要8个数据包,每个数据包之间添加0.5秒的延迟,仅传输序列就需要4秒。如果需要发送更多数据,每增加两个数据包就需要增加1秒。这种冗长的传输时间使得构建发送多于几个字节的端口敲门序列变得不切实际。
- 由于端口敲门的数据传输能力有限,使用非对称加密算法对端口敲门序列进行加密是不可行的。例如,使用GnuPG和2048位密钥的Elgamal算法对10字节的信息进行加密将产生数百字节的加密信息。
3.
敲门序列与端口扫描
:
- 端口扫描是指在短时间内对目标系统的多个端口进行一系列连接。从网络上观察,端口敲门序列符合端口扫描的定义,尽管端口扫描和敲门序列的目标不同。任何监控端口扫描的入侵检测系统(IDS)都无法区分这两种活动,会对两者都发出警报,这可能会给使用端口敲门进行远程服务认证的用户带来不必要的关注。
4.
使用伪造数据包破坏敲门序列
:
- 由于端口敲门仅在数据包头部编码信息,攻击者很容易伪造数据包,使其看起来像是合法敲门序列的一部分。如果攻击者在端口敲门序列传输过程中伪造一个重复的数据包,敲门服务器无法判断这个额外的数据包不是来自合法端口敲门客户端的真实序列,结果是客户端看起来不知道有效的敲门序列,这是对敲门服务器的拒绝服务(DoS)攻击。
以下是一个使用
hping
命令进行伪造数据包攻击的示例:
[root@attacker ~]# hping -S -p 5005 -c 1 -a 123.4.3.2 231.1.2.3
HPING 231.1.2.3 (eth0 231.1.2.3): S set, 40 headers + 0 data bytes
--- 231.1.2.3 hping statistic ---
1 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
单包授权机制
单包授权(SPA)是一种结合了默认丢弃数据包过滤器和被动监控数据包嗅探器的认证机制,类似于端口敲门实现,但它通过利用数据包的负载数据来证明拥有认证凭据,而不是在数据包头部字段中传输认证数据。
SPA解决端口敲门的局限性
SPA通过使用数据包的负载数据,克服了端口敲门的许多局限性:
1.
解决重放问题
:
- SPA在每个SPA数据包中包含随机数据。每个SPA数据包按照定义良好的明文数据包格式构建(fwknop使用的具体格式将在后续讨论),该格式包含随机数据的空间,构建完成后进行加密。包含随机数据确保没有两个SPA数据包是相同的,即使它们向SPA服务器发出相同的访问请求。通过在服务器端存储每个成功解密的SPA数据包的MD5总和,可以反复发送相同的访问请求,因为没有两个SPA数据包会有相同的MD5总和。通过将任何新SPA数据包的MD5总和与之前监控的数据包的MD5总和进行比较,可以轻松阻止重放攻击。
2.
解决数据传输问题
:
- SPA使用IP数据包的负载部分,类似于TCP封装应用层数据的方式。使用数据包负载便于使用非对称加密算法进行加密,因为数据包负载可以传输比任何仅使用数据包头部的端口敲门实现更多的数据。甚至可以在SPA上构建一个命令通道(即在加密的SPA负载中传输完整的命令)。fwknop支持访问请求和完整的命令通道实现。
3.
避免被误判为端口扫描
:
- SPA仅使用一个数据包来传输认证信息,因此其网络通信不会表现为端口扫描。这样,IDS不会看到对一系列端口的探测。由于SPA负载是加密的,IDS也无法解码SPA消息的内容,任何嗅探者都会将SPA数据包视为无法理解的负载数据。
4.
防止伪造攻击
:
- 使用SPA可以防止伪造攻击,因为攻击者不能仅仅通过从SPA客户端系统向SPA服务器伪造数据包来轻易破坏SPA协议。当然,任何检查网络上数据包数据的系统在受到垃圾数据包数据的洪泛攻击时都可能受到DoS攻击,但这不是SPA协议本身的弱点。
SPA的架构局限性
尽管SPA为减少服务对潜在攻击者的暴露提供了安全优势,但它也有一些局限性:
1.
通过NAT地址进行访问搭便车
:
- 数据包过滤器通常擅长过滤传输层及以下的流量,但在解释应用层方面表现不佳。因此,SPA守护进程在接收到有效的SPA数据包后接受传入连接的过滤标准实际上只能包含源IP地址、请求的互联网协议和端口号。当一个SPA数据包指示SPA服务器“为某个源IP地址打开TCP端口22 30秒”时,SPA服务器会配置数据包过滤器,在这30秒的时间窗口内接受任何可以从源IP地址连接到TCP端口22的数据包。如果SPA数据包中的IP地址是外部NAT地址(如果SPA客户端位于NAT设备后面,这是必要的),那么与合法客户端在同一内部网络上的任何人在允许的时间窗口内都将具有相同的访问权限。
2.
HTTP和短生命周期会话
:
- 当SPA守护进程在数据包过滤器规则集中添加临时规则以允许建立TCP连接时,合法客户端通常有足够的时间完成TCP三次握手。然而,SSH会话通常比将TCP连接推送到已建立状态所需的时间长得多。当规则从规则集中删除时会发生什么?通过使用连接跟踪机制(如Netfilter提供的机制),可以在数据包被捕获之前接受属于已建立连接的数据包。
综上所述,端口敲门和单包授权各有优缺点。在选择使用哪种机制时,需要根据具体的网络环境、安全需求和性能要求进行综合考虑。对于对数据传输要求不高、安全威胁相对较低的环境,端口敲门可能是一个简单有效的选择;而对于对安全性要求较高、需要处理大量数据传输的环境,单包授权可能更合适。同时,在使用这两种机制时,都需要注意它们的局限性,并采取相应的措施来减轻潜在的风险。
端口敲门与单包授权:网络安全认证方案对比
两种机制的对比总结
为了更清晰地对比端口敲门和单包授权,我们可以通过以下表格来总结它们的特点:
| 对比项 | 端口敲门 | 单包授权 |
| — | — | — |
| 数据传输机制 | 数据包头部 | 数据包负载 |
| 重放攻击防范 | 较难,需额外措施且扩展性差 | 容易,通过随机数据和MD5校验 |
| 数据传输能力 | 有限,每个数据包2字节,传输慢 | 强,可使用非对称加密,支持命令通道 |
| 与IDS交互 | 易触发警报 | 不易被误判为端口扫描 |
| 伪造攻击防范 | 弱,易被伪造数据包破坏 | 强,攻击者难以轻易破坏协议 |
| 架构局限性 | 序列重放、数据传输慢、易误判、易被伪造 | NAT地址搭便车、HTTP和短会话问题 |
从这个表格中可以直观地看出,单包授权在多个方面优于端口敲门,但也并非完美无缺。
实际应用场景分析
不同的网络环境和安全需求决定了应该选择哪种认证机制。下面通过一些具体的场景来分析:
1.
小型家庭网络
:
- 安全威胁相对较低,数据传输需求不高。例如,家庭用户想要保护自己的家用服务器(如NAS),防止外部的未授权访问。端口敲门可以作为一个简单有效的解决方案,因为它的实现相对简单,不需要复杂的配置和大量的资源。用户可以设置一个简单的端口敲门序列,在需要访问服务器时发送该序列,临时打开相应的端口。
2.
企业级网络
:
- 安全性要求高,数据传输量大,且需要处理大量的用户访问。例如,企业的远程办公系统,员工需要通过互联网安全地访问企业内部的资源。单包授权更适合这种场景,它可以有效地防止重放攻击、伪造攻击,并且能够处理大量的数据传输,支持复杂的安全认证和命令传输。
3.
公共网络环境
:
- 网络环境复杂,存在各种潜在的安全威胁。例如,在咖啡馆、机场等公共场所,用户连接公共网络访问自己的云服务。单包授权的优势更加明显,它可以避免被入侵检测系统误判,同时提供更高的安全性,防止攻击者的各种攻击手段。
实施建议
无论是选择端口敲门还是单包授权,在实施过程中都需要注意以下几点:
1.
安全策略制定
:
- 根据网络环境和安全需求,制定合理的安全策略。例如,对于端口敲门,确定合适的端口敲门序列和加密方式;对于单包授权,设置有效的过滤规则和连接跟踪机制。
2.
定期更新和维护
:
- 定期更新认证机制的配置和密钥,以防止攻击者通过旧的信息进行攻击。例如,定期更改端口敲门序列或单包授权的加密密钥。
3.
监控和审计
:
- 对网络流量进行监控和审计,及时发现异常行为。例如,通过入侵检测系统监控端口敲门序列和单包授权数据包,检查是否存在重放攻击或伪造攻击的迹象。
未来发展趋势
随着网络技术的不断发展和安全威胁的日益复杂,端口敲门和单包授权也可能会有新的发展趋势:
1.
与其他安全技术的融合
:
- 未来,端口敲门和单包授权可能会与其他安全技术(如多因素认证、人工智能安全检测)相结合,提供更强大的安全保护。例如,在端口敲门或单包授权的基础上,增加生物识别技术进行额外的身份验证。
2.
性能优化
:
- 不断优化端口敲门和单包授权的性能,提高数据传输速度和处理效率。例如,通过改进加密算法和数据传输协议,减少单包授权的处理时间。
3.
适应新的网络环境
:
- 随着物联网、5G等新技术的发展,网络环境变得更加复杂。端口敲门和单包授权需要适应这些新的环境,为新的设备和应用提供安全认证服务。例如,为物联网设备提供轻量级的单包授权机制,确保设备之间的安全通信。
总结
端口敲门和单包授权是两种重要的网络安全认证机制,它们各自具有独特的优势和局限性。在实际应用中,我们需要根据具体的网络环境、安全需求和性能要求进行综合考虑,选择合适的机制。同时,要注意它们的局限性,并采取相应的措施来减轻潜在的风险。未来,随着网络技术的发展,这两种机制可能会不断改进和完善,为网络安全提供更可靠的保障。
通过对端口敲门和单包授权的深入了解,我们可以更好地保护网络服务,防止未授权访问,确保网络的安全性和稳定性。希望本文能够为读者在选择和实施网络安全认证机制时提供有价值的参考。
以下是一个简单的mermaid流程图,展示端口敲门和单包授权的选择过程:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B{安全需求高吗?}:::decision
B -- 是 --> C{数据传输量大吗?}:::decision
B -- 否 --> D(考虑端口敲门):::process
C -- 是 --> E(选择单包授权):::process
C -- 否 --> F{是否担心IDS误判?}:::decision
F -- 是 --> E
F -- 否 --> D
这个流程图可以帮助读者根据安全需求和数据传输量等因素,快速判断应该选择端口敲门还是单包授权。
超级会员免费看
5

被折叠的 条评论
为什么被折叠?



