php - FreeBSD 中的简单反 DDoS 保护

标签 php bash freebsd ddos ipfw

<分区>

我有很多从数据中心到 FreeBSD 上的网络服务器的请求,有时我的网络项目有很多性能问题。将所有 IP 的数据中心添加到 IPFW 列表是不可能的。

我不想使用大型 Anti-DDoS 系统,而是想创建 bash 脚本来连接到我的服务器,按 IP 过滤并添加到 IPFW 表 IP 地址,这些 IP 地址现在连接超过 5 个线程。或者可能在 IPFW 上创建多个表,并按表添加:

  • 0 < 5: - 没有
  • 5 < 10:- 表 1(禁赛 15 分钟)
  • 10 < 15: - 表 2(禁赛 30 分钟)
  • 15 < 20:- 表 3(禁赛 60 分钟)
  • 更多 20:- 表 4(禁赛 1 天)

按 IP 过滤应该跳过 Google IP 和其他搜索引擎按主机名的 ip。

这是我的 grep 连接和排序脚本:

netstat -nptcp | egrep -v 'Active|Address' | awk '{print $5}' | cut -d. -f 1-4 | sort | uniq -c | sort -n | tail -n 30

解析日志文件是个糟糕的主意,因为日志文件有时很大,我必须到额外的资源 web 服务器来解析和排序。

所以,我想过,也许可以在 PHP 上创建这个脚本?但如果 PHP 崩溃,服务器将不 protected 。

我还需要注意其他注意事项吗?

最佳答案

用 PHP 完成这项工作将不是一个好主意;如果您对下面提到的脚本接口(interface)有任何经验,我强烈建议您这样做;否则你别无选择,只能在 PHP 中轻松完成。

与下面列出的问题相比,PHP 脚本崩溃并不是什么大问题。

  1. 您必须向您的 PHP 脚本授予 super 用户权限,以便它可以访问系统资源,如果您的服务器是面向 Web 的,这可能会非常糟糕。
  2. PHP 将无法执行系统级任务,例如访问网络连接列表、过滤并将它们添加到防火墙配置以进行阻止等;这样做会非常痛苦。

您可能想尝试 BASH/Perl/Python,无论您喜欢哪个,并在沙盒模型中创建一个单独的脚本(创建一个用户并在 sudoers 中为其添加仅执行所需任务的权限,并使其远离运行网络服务器或互联网上任何其他任务的用户)

关于php - FreeBSD 中的简单反 DDoS 保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33054796/

相关文章:

linux - 使用 bash 创建一个具有 2 个独立 View 部分的窗口

bash - 获取目录树中的文件深度

php - 有什么方法可以在 Android 上运行 PHP

具有内容分组的 PHP 动态表

javascript - AJAX 将变量从 javascript 传递到 PHP

android - adb pull 在 bash 脚本中的奇怪行为

php - 如何为树结构开发数据库模式(有向无环图)

linux - 如何创建新文件并自动选择其名称?

c - 在 C 中连接到 TCP 堆栈

sockets - FreeBSD jail 和套接字