FreeBSD中的简单防DDoS保护

时间:2015-10-10 14:01:52

标签: php bash freebsd ddos ipfw

我在FreeBSD上从数据中心向我的Web服务器提出了很多要求,有时我的网络项目存在很多性能问题。添加到IPFW列表中所有IP数据中心都是不可能的。

我不想使用大型Anti-DDoS系统,而是想创建bash脚本以获取与我的服务器的连接,按IP过滤并添加到IPFW表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

解析日志文件实在太糟糕了,因为日志文件有时很大,而且我必须对其他资源进行解析和排序。

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

我需要注意哪些其他注意事项?

1 个答案:

答案 0 :(得分:1)

在PHP中完成这项工作将是一个坏主意;如果您对下面提到的脚本接口有任何经验,我强烈推荐;否则你除了PHP之外别无选择,只需要一点点麻烦就可以了。

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

  1. 您必须向您的PHP脚本授予超级用户权限,以便它可以访问系统资源,如果您的服务器面向Web,这可能非常糟糕。
  2. PHP无法完成系统级任务,例如访问网络连接列表,过滤并将它们添加到防火墙配置中以进行阻止等等;这样做会非常痛苦。
  3. 您可能想尝试使用BASH / Perl / Python,并在沙盒模型中创建单独的脚本(创建用户并在sudoers中为所需任务添加权限,并使其远离用户运行网络服务器或互联网上的任何其他任务)