php – FreeBSD中的简单反DDoS保护

我在FreeBSD上从数据中心向我的Web服务器提出了很多请求,有时我的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崩溃,服务器将不受保护.

我还需要注意其他任何考虑因素吗?

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

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

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

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

点赞