我听说这是一个安全功能,但它通常看起来像一个安全问题.如果我想编写一个使用特权端口的服务器,我不仅要担心我的代码有多安全,我还要特别担心我是否正在使用setuid和删除权限.
jim*_*imw 62
真正.但这也意味着任何与您交谈的人都知道您必须拥有root权限才能运行该服务器.当您在端口22(例如)上登录服务器时,您知道您正在与root运行的进程(除了安全问题)进行通信,因此您可以信任该系统的密码或其他信息.不信任在该系统上拥有用户帐户的任何人.
参考:http://www.w3.org/Daemon/User/Installation/PrivilegedPorts.html.
编辑以详细说明推理:许多最重要的网络服务 - telnet(是的,它仍然使用 - 经常令人惊讶),SSH,许多HTTP服务,FTP等等 - 涉及通过网络发送密码等重要数据.在安全设置中,某种加密,无论是协议中固有的(SSH)还是包裹它(stunnel,IPSec),都可以保护数据不被窃听,但所有这些保护都在服务器上结束.
为了正确保护您的数据,您需要确保与"真实"服务器通信.今天的安全证书是这样做的网站上(和其他地方)的最重要的方法:你认为只有"真正的"服务器访问证书,所以如果你确认你正在谈话的服务器有一个证书你我会相信它.
特权端口以非常类似的方式工作:只有root可以访问特权端口,因此如果您正在与特权端口通信,那么您知道您正在与root通话.这在现代网络上并不是很有用:重要的是服务器的身份,而不是IP.在其他类型的网络中,情况并非如此:例如,在学术网络中,服务器通常由安全房间中受信任的工作人员进行物理控制,但学生和工作人员可以作为用户自由访问.在这种情况下,通常可以安全地假设您始终可以信任root,因此您可以安全地登录并将私有数据发送到特权端口.如果普通用户可以监听所有端口,则需要一个额外的层来验证特定程序是否受某些数据信任.
你没有说你正在使用什么平台,但在Linux上至少你可以使用功能(特别是CAP_NET_BIND_SERVICE)来允许非root进程侦听小于1024的端口.例如,参见,有没有办法在Linux上绑定到"特权"端口的非root进程?
另一种方法是设置iptables规则以将流量从特权端口转发到非特权端口(我在生产中使用过它,它非常简单且运行良好).它也在上面的链接中描述.
| 归档时间: |
|
| 查看次数: |
33584 次 |
| 最近记录: |