端口碰撞Port Knocking和单数据包授权SPA
端口碰撞技术 Port knocking
从网络安全的角度,服务器开启的端口越多就越不安全,因此系统安全加固服务中最常用的方式,就是先关闭无用端口,再对提供服务的端口做访问控制。而作为远程管理与维护的人员通常需要开启一些服务端口,如FTP和SSH,这些服务使用大家熟悉的一些端口,长时间开启这些端口,往往是严重的安全隐患。所以需要在必要的时候才开启服务,并只对特定的人提供服务,服务完毕端口恢复关闭状态,才能让攻击者难以利用安全隐患,端口碰撞技术提供了这个问题的解决方案。
端口碰撞技术是一种允许服务设备在用户按照约定的序列碰撞后,打开一个约定的服务端口提供服务的技术。所谓碰撞是由一个尝试访问系统中关闭端口的序列组成,也就是特定端口的连接请求
- 开启固定的端口服务
如在服务器上设置为:服务器接收到同一个用户的对端口2048、2049、2055、2058连接序列尝试后,则服务器打开TCP服务端口号28,该用户可以通过该端口进行远程工作,连接结束后自动关闭该服务端口。若是防火墙等网关类设备,则在截获该序列的尝试后,在访问列表中增加一条规则来放行该用户的TCP28数据包,使该连接可以通过防火墙。收到连接关闭命令后,再删除该规则,恢复对该端口的拒绝服务。 - 动态开启端口服务
若需要使用端口碰撞技术打开的服务端口有多个,或者动态变化服务的端口,在设计服务器上的碰撞序列时,可以采用在序列中“指定”端口,在序列某个位置上“告之”希望打开的服务端口。如设定规则为,最后的一个端口减2000为服务端口好,则碰撞序列为2048、2049、2055、2058、2443时,就是希望开启443端口的服务。
参考资料
http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html
Single Packet Authorization A Comprehensive Guide to Strong Service Concealment with fwknop - Michael Rash
An Analysis of Port Knocking and Single Packet Authorization - MSc Thesis, September 9, 2006