【问题标题】:Node.JS Server SYN flood DoS attack vulnerability?Node.JS Server SYN flood DoS 攻击漏洞?
【发布时间】:2016-04-18 07:15:07
【问题描述】:

我有两台 VPS Ubuntu 服务器受到 SYN Flood DoS 攻击的危害。

服务器环境是运行在端口:3000 上的 Node.js 服务器,我以 root 用户身份开始使用 pm2 守护进程。

我还有 LAMP(Apache Web 服务器、PHP、MySQL 和 phpMyAdmin)在同一个 VPS(默认端口:80)上运行 MySQL 和 phpMyAdmin,它们都是安全的。

我的问题是,以 root 用户身份通过​​ pm2 在端口:3000 上运行我的节点服务器脚本是否安全?我已经在多个网站上阅读过它的安全性,除非它在端口:80 上运行。 - 显然,Web 服务器文件夹(位于外部)无法访问节点服务器脚本。

我还阅读了以 root 用户身份登录时运行“node server.js”是不安全的。设置一个“安全用户”(要求输入密码)会更安全。 > source(1) 或这样做> source(2)

有人对如何锁定 Node.js 有任何提示吗?

【问题讨论】:

  • 不以 root 身份运行节点服务器是最安全的。然后,服务器所做的任何事情都不会公开只能作为 root 使用的东西。我的服务器以普通用户(而不是 root)在 8081 上运行,并且我将端口 80 转发到 8081,因此来自外部的所有 Web 流量似乎都在端口 80 上,但我不必以 root 身份运行为端口 80 提供服务。这需要您编写服务器,因此它不需要 root 权限(无论如何,这通常是一件好事)。
  • @jfriend00 谢谢!所以您的服务器无法从外部从端口访问:8081?我不需要通过端口运行的节点服务器:80 - 我只将它与 socket.io 一起使用,所以我可以连接到任何端口号。您还使用普通用户来运行 pm2 和您的节点服务器吗?
  • 我正在使用一个普通用户来运行我的节点服务器。如果您可以在高端口号上运行您的服务器,那么您不需要端口转发 - 我只需要能够在端口 80 上运行。
  • @jfriend00 感谢您确认!将尝试以普通用户身份运行,希望能够解决这些攻击..

标签: node.js security ubuntu lamp


【解决方案1】:

我的 NodeJS 服务器仍然被黑!!在使用"safe user" 锁定pm2 用户后,不以root 用户身份运行node

所以我开始四处寻找这些害虫进入的其他方式。我遇到了节点客户端/服务器通信的身份验证方法。这是一种使用唯一键/代码查询服务器的简单方法。如果服务器在查询参数中没有收到正确的密钥/代码,它会拒绝客户端的连接。

客户端:

var socket = io("http://127.0.0.1:3000/", { query: "foo=bar" });

服务器端:

io.use(function(socket, next){
    console.log("Query: ", socket.handshake.query);
    if (socket.handshake.query.foo == "bar") {
        return next();
    }
    next(new Error('Authentication error'));
});

到目前为止一切顺利.. 如果它不起作用,将报告。

【讨论】:

    猜你喜欢
    • 2019-04-29
    • 1970-01-01
    • 2014-09-14
    • 2015-04-16
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多