我必须以root身份运行节点以发送用于ping的icmp echo包 - 如何使其安全?

时间:2014-01-31 13:46:36

标签: linux node.js security

我使用node的net-ping通过websockets连接到节点来启用我的前端ping。因为linux只会让root用户发出ping请求,所以我必须通过sudo运行脚本。我一点也不舒服,但我认为我没有多少选择。

我想知道的是有没有其他方法可以获得发送ping请求的权限,或者如果没有,我应该采取哪些措施使其尽可能安全?

开发服务器是Ubuntu Desktop 13.10x64,生产服务器是ubuntu服务器12.04x64

编辑:

我有一个运行脚本的节点,该脚本设置了一个sockets.io套接字服务器,并侦听来自前端(网站)的请求,以便在主机上执行ping操作。然后它通过net-ping运行ping,并在结果进入客户端时将结果发送回客户端。通过这种方式,我可以通过网站运行几乎实时的ping。 websockets本身不会运行ping,他们只是让ping服务器"和客户沟通。

2 个答案:

答案 0 :(得分:3)

访问端口< 1024在Linux上受到保护。我同意:以root身份运行node.js可能不是一个明智的想法。

尝试执行命令/bin/ping。这是一个SUID命令,这意味着只有发送ping才会成为root。

另一种解决方案是运行2个node.js进程。一个从网络接收命令,另一个发送ping。外部服务器成为受保护的ping服务器的一种智能防火墙,它以root身份运行,只接受来自localhost的连接。

答案 1 :(得分:0)

您可以使用raw-socket模块编写自己的ping实现。 Hear是一篇很好的文章,解释了如何做到这一点。

这可能是一个过度杀戮,但另一方面,你将完全控制如何执行ping,以及如何处理所有事情。

我希望这会有所帮助。