如何保护Node HTTP服务器免受SYN Flood攻击?

xqkwcwgp  于 2023-04-20  发布在  Node.js
关注(0)|答案(1)|浏览(116)

此问题是来自Information Security Stack Exchange的migrated,因为它可以在Stack Overflow. Migrated上回答5天前。
当你在Node.js中使用http.createServer时,它是否提供了针对SYN洪水攻击的任何保护?
Node的入门指南提供了一个易于理解的代码,它给了你一个请求对象,但是发生的TCP握手呢?

const http = require('http');
    
    const hostname = '127.0.0.1';
    const port = 3000;
    
    const server = http.createServer((req, res) => {
      res.statusCode = 200;
      res.setHeader('Content-Type', 'text/plain');
      res.end('Hello World');
    });
    
    server.listen(port, hostname, () => {
      console.log(`Server running at http://${hostname}:${port}/`);
    });
kuarbcqp

kuarbcqp1#

默认情况下,http模块是否保护您免受SYN DoS攻击?不。默认情况下,http模块几乎不做什么,只是抽象了一些细节(主要可以在net模块和其他较低级别的模块中找到)。这就是为什么任何构建真实世界的Web服务器的人都可能使用Express,Koa,Restify等框架的原因。然后通常在反向代理和/或负载均衡器之后。
你能在普通Node中添加针对SYN flood或其他类型的DoS的保护吗?当然,可能是这样的,比如在net.Server中使用一个带有缓存的worker来跟踪连接地址。这种实现在真实的世界中会很混乱,而且大多数都是无用的(因为我前面提到的几点)。

相关问题