要使用GnuPG加密和标记一个SPA包,你可以使用下面的fwknop命令,在这个例子中,fwknop服务器的密钥ID通过在命令后加上--gpg-recipient参数来指定,通过参数—gpg-signing-key来用密钥ID给SPA包做上标记(下面的输出经过简化处理了):
[spa_client]$ fwknop -A tcp/22 --gpg-recipient ABCD1234 \ --gpg-signing-key 5678DEFG -w -k 16.2.2.2 [+] Sending 1010 byte message to 16.2.2.2 over udp/62201 |
正如你所看到的,SPA包的长度已经增长到超过1000字节了,而Rijndael例子中只有150字节,这是因为GnuPG密钥的长度(在本例中是2048 bits)和非对称加密密码的特性倾向于在加密后增大小数据块的大小,在明文和密文之间数据没有严格的一致限制。
在spa_server系统上,fwknop为我们添加了ACCEPT规则,此时fwknopd报告显示SPA包已经过GnuPG加密,并为密钥ID 5678DEFG提供了一个有效的数字签名:
Feb 10 14:38:26 spa_server fwknopd: received valid GnuPG encrypted packet (signed with required key ID: "5678DEFG") from: 15.1.1.1, remote user: mbr Feb 10 14:38:26 spa_server fwknopd: adding FWKNOP_INPUT ACCEPT rule for 15.1.1.1 -> tcp/22 (30 seconds) |
阻止重放攻击
假设上面的第一个例子的SPA包被攻击者在图1中标识为attacker的系统上嗅探到,SPA原始包是可以被替换并重新放回线路上的—这就是着名的重放攻击,有多种办法获取包数据并进行重放,最常用的方法之一就是用tcpdump产生一个pcap文件(在本例中tcpdump –i eth0 –l –nn –s 0 –w SPA.pcap,端口62201),然后用tcpreplay(查看http://tcpreplay.synfin.net/trac)将SPA包重新放回通讯线路上,另一个方法,在包被捕获后,用netca与echo命令一起:
[attacker]$ echo "U2FsdGVkX1+BvzxXj5Zv6gvfCFXwJ+iJGKP \ qe2whdYzyigkerSp2WtvON/xTd8t6V6saxbg1v4zsK+YNt53BE8EI \ nxVCgpD7y/gEBIg8sd+AvU1ekQh9vwJJduseVx \ DxjmAHx3oNnClo2wckBqd8zA" |nc -u 16.2.2.2 62201 |
在fwknopd服务器上,复制SPA包是被监视的,但是MD5校验和值与原始SPA包是一致的,访问是不会被允许的,并且在spa_server系统上会写入下面的系统日志:
Feb 10 14:14:24 spa_server fwknopd: attempted \ message replay from: 18.3.3.3 |
结论
单数据包授权为服务如SSHD提供了一层额外的安全保护,当攻击者在尝试攻击的第一步(侦查)就收到了打击,用默认删除策略的iptables和fwknop嗅探特定构造的数据包(加密且非重放的)线路,这会非常困难甚至不能弄清楚是什么服务在监听,最终结果是要给受到保护的服务开发一个漏洞攻击程序更困难了。
相关专题
- Windows中IIS内FTP服务器高级配置 (37次浏览)
- Exchange 命令行管理程序入门 (32次浏览)
- eMule电驴“代理服务器”的作用讲解 (32次浏览)
- 轻量级Web服务器 (31次浏览)
- 备份和还原Exchange 2007邮箱存储组 (26次浏览)
- 整合apache tomcat服务器 (24次浏览)
- 45纳米王者降临 Xeon5482服务器评测 (19次浏览)
- FreeBSD 6.2快速架设网站服务器教程 (17次浏览)
- 统计分析apache服务器日志 (16次浏览)
- 下一代服务器操作系统对Exchange Sever的兼容 (16次浏览)



