FreeBSD 中的简单反 DDoS 保护
Simple anti DDoS protection in FreeBSD
我在 FreeBSD 上有很多从数据中心到我的网络服务器的请求,有时我的网络项目有很多性能问题。将所有 IP 的数据中心添加到 IPFW 列表是不可能的。
我不想使用大型反 DDoS 系统,而是想创建 bash 脚本来连接到我的服务器,按 IP 过滤并添加到 IPFW table IP 地址现在连接超过 5 个线程。或者也许在 IPFW 上创建几个 tables,然后添加 table:
- 0 < 5: - 没有
- 5 < 10:- table 1(禁赛 15 分钟)
- 10 < 15:- table 2(禁赛 30 分钟)
- 15 < 20:- table 3(禁赛 60 分钟)
- 更多 20:- table 4(1 天禁令)
按 IP 过滤应跳过 Google IP 和其他按主机名搜索引擎的 IP。
这是我的 grep 连接和排序脚本:
netstat -nptcp | egrep -v 'Active|Address' | awk '{print }' | cut -d. -f 1-4 | sort | uniq -c | sort -n | tail -n 30
解析日志文件实在是太糟糕了,因为日志文件有时很大,我必须到额外的资源web服务器来解析和排序。
所以,我想过,也许在 PHP 上创建这个脚本?但是如果PHP crashES,服务器将不受保护。
还有其他我需要注意的事项吗?
在 PHP 做这项工作不是一个好主意;如果您对下面提到的脚本接口有任何经验,我强烈建议您这样做;否则你别无选择,只能 PHP 可以轻松完成。
与下面列出的问题相比,PHP 脚本崩溃并不是什么大问题。
- 您必须向您的 PHP 脚本授予超级用户权限,以便它可以访问系统资源,如果您的服务器面向 Web,这可能会非常糟糕。
- PHP 将无法执行系统级任务,例如访问网络连接列表、过滤并将它们添加到防火墙配置以进行阻止等;这样做会很痛苦。
您可能想尝试,BASH/Perl/Python 无论您喜欢哪个,都可以在沙盒模型中创建一个单独的脚本(创建一个用户并在 sudoers 中为其添加权限,仅执行所需的任务并将其保留来自用户 运行 网络服务器或互联网上的任何其他任务)
我在 FreeBSD 上有很多从数据中心到我的网络服务器的请求,有时我的网络项目有很多性能问题。将所有 IP 的数据中心添加到 IPFW 列表是不可能的。
我不想使用大型反 DDoS 系统,而是想创建 bash 脚本来连接到我的服务器,按 IP 过滤并添加到 IPFW table IP 地址现在连接超过 5 个线程。或者也许在 IPFW 上创建几个 tables,然后添加 table:
- 0 < 5: - 没有
- 5 < 10:- table 1(禁赛 15 分钟)
- 10 < 15:- table 2(禁赛 30 分钟)
- 15 < 20:- table 3(禁赛 60 分钟)
- 更多 20:- table 4(1 天禁令)
按 IP 过滤应跳过 Google IP 和其他按主机名搜索引擎的 IP。
这是我的 grep 连接和排序脚本:
netstat -nptcp | egrep -v 'Active|Address' | awk '{print }' | cut -d. -f 1-4 | sort | uniq -c | sort -n | tail -n 30
解析日志文件实在是太糟糕了,因为日志文件有时很大,我必须到额外的资源web服务器来解析和排序。
所以,我想过,也许在 PHP 上创建这个脚本?但是如果PHP crashES,服务器将不受保护。
还有其他我需要注意的事项吗?
在 PHP 做这项工作不是一个好主意;如果您对下面提到的脚本接口有任何经验,我强烈建议您这样做;否则你别无选择,只能 PHP 可以轻松完成。
与下面列出的问题相比,PHP 脚本崩溃并不是什么大问题。
- 您必须向您的 PHP 脚本授予超级用户权限,以便它可以访问系统资源,如果您的服务器面向 Web,这可能会非常糟糕。
- PHP 将无法执行系统级任务,例如访问网络连接列表、过滤并将它们添加到防火墙配置以进行阻止等;这样做会很痛苦。
您可能想尝试,BASH/Perl/Python 无论您喜欢哪个,都可以在沙盒模型中创建一个单独的脚本(创建一个用户并在 sudoers 中为其添加权限,仅执行所需的任务并将其保留来自用户 运行 网络服务器或互联网上的任何其他任务)