HTTP 服务器、SYN 泛洪和 DoS 攻击问题

HTTP 服务器、SYN 泛洪和 DoS 攻击问题

我正在用 C 语言制作一个 http 服务器。它处于预 alpha 阶段,但似乎足够稳定,可以部署在我的服务器上并运行 4 个最小网站。它已经无缝运行了两天,直到今天早上。守护进程没有运行,也没有干净地退出。我查看了日志,发现大约有 10 行连续的内容:

[815259.230706] possible SYN flooding on port 80. Sending cookies.

然后,http 服务器不再记录任何消息,因此我假设服务器死机了。我不确定它收到了什么信号导致其死机,因此我假设是 SIGKILL、SIGSEGV 或 SIGABRT,因为它们没有被捕获,而且 SIGKILL 无论如何也无法被捕获。我查了一下 SYN 泛洪,它是一种 DoS 攻击。我不确定服务器是否真的受到了攻击,但我的 4 个网站收到的最多请求数大约每秒最多 1 个……远不足以被错误地指控为 DoS 攻击。

我的问题是:

这是一次 DoS 攻击的可能性有多大?

内核(linux)会因此而终止 http 服务器吗?或者它自己会终止吗?

如果内核杀死了它,我该如何防止这种情况发生,我不能让它意外死亡?

如果内核没有杀死它,那么死亡是否可能是由 SYN 泛滥引起的,我该如何调试它,或者更可能是不相关的编程错误?

我应该采取什么安全措施来防止可能发生的 SYN 洪泛?

编辑:http 服务器现在已经崩溃 3 次,并且发生相同的情况。

答案1

Linux 内核正在向可能发起攻击的远程机器发送 SYN cookie,但不会向您的 Web 服务器发送攻击。

你可以阅读加强 TCP/IP 堆栈以抵御 SYN 攻击了解有关 SYN 洪水攻击的更多信息。

也许你想读本指南关于 apache 调试并应用一些想法来调试您自己的服务器。

答案2

运行 netstat 并查看连接的状态。如果您看到很多 SYN_RECV 套接字都在那里,则很有可能您处于 DOS 下。如果所有连接都来自同一个 ip,则修复很简单。

您的网站也可能变得很受欢迎,或者被编码不良的搜索机器人抓取,导致大量连接,而您的服务器无法处理。在您最喜欢的搜索引擎中搜索“Linux tcp 调整”,会出现大量关于调整服务器 tcp 堆栈的提示/技巧/方法。

相关内容