Node.JS服务器SYN flood DoS攻击漏洞?

Node.JS服务器SYN flood DoS攻击漏洞?,node.js,security,ubuntu,lamp,Node.js,Security,Ubuntu,Lamp,我有两台VPS Ubuntu服务器受到SYN flood DoS攻击 服务器环境是在端口3000上运行的Node.js服务器,我开始使用pm2守护进程作为根用户 我还有LAMP(apacheweb服务器、PHP、MySQL和phpMyAdmin)在相同的VPS(默认端口:80)MySQL和phpMyAdmin上运行,它们都是安全的 我的问题是,在端口3000上以root用户身份通过pm2运行节点服务器脚本安全吗?我在多个网站上看到过它的保险箱,除非它在端口80上运行。-显然,web服务器文件夹(

我有两台VPS Ubuntu服务器受到SYN flood DoS攻击

服务器环境是在端口3000上运行的Node.js服务器,我开始使用pm2守护进程作为根用户

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

我的问题是,在端口3000上以root用户身份通过pm2运行节点服务器脚本安全吗?我在多个网站上看到过它的保险箱,除非它在端口80上运行。-显然,web服务器文件夹(位于外部)无法访问节点服务器脚本

我还了解到,以root用户身份登录时运行“
node server.js
”是不安全的。设置“安全用户”(要求输入密码)会更安全。或者这样做


有人知道如何锁定Node.js吗?

我的NodeJS服务器仍然被黑客攻击!!通过使用
安全用户
锁定
pm2
用户后,不以
root
用户身份运行
节点

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

客户端:

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'));
});
服务器端:

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'));
});

到目前为止还不错。。如果它不起作用,我会向你汇报

最好不要以root用户身份运行节点服务器。然后,服务器所做的任何事情都不会公开仅作为root用户可用的内容。我的服务器作为普通用户(而不是root用户)运行在8081上,我将端口80转发到8081,因此所有来自外部的web流量似乎都在端口80上,但我不必以root用户身份运行来服务端口80。这要求您编写服务器,这样它就不需要root权限(无论如何,这通常是一件好事)。@jfriend00谢谢!所以您的服务器无法从端口8081从外部访问?我不需要节点服务器通过端口80运行-我只将其与socket.io一起使用,这样我就可以连接到任何端口号。您是否使用普通用户运行pm2和您的节点服务器?我使用普通用户永远运行我的节点服务器。如果您可以在高端口号上运行服务器,则不需要端口转发-我只需要它就可以在端口80上运行。@jfriend00谢谢您的确认!!将尝试作为普通用户运行,希望能够解决这些攻击。。