bitslip6/bitfire

企业级防火墙,阻止所有机器人/垃圾邮件和手动攻击。OWASP top 10,机器人在2毫秒内开启白名单

2.2.2 2022-11-16 04:58 UTC

README

License Issues Maintainability PHP Ver Slack Chat


Logo

BitFire RASP防火墙,适用于PHP

为每个人提供企业级安全
BitFire 安装指南

报告错误 · 请求功能

目录
  1. 关于BitFire
  2. 文件系统保护RASP
  3. 数据库保护RASP
  4. 自动化机器人保护RASP
  5. 入门
  6. 附加信息

PHP运行时应用程序自我保护防火墙

BitFire是一个基于PHP服务器的运行时应用程序自我保护(RASP)防火墙。与传统的Web应用程序防火墙(WAF)不同,BitFire通过为所有数据库和文件系统访问提供一个安全沙盒,可以防止恶意软件感染以及受漏洞插件、主题和自定义PHP代码的账户接管,无论是什么栈。

视频演示

BitFire Intro Video

文件系统RASP

考虑以下PHP漏洞:此漏洞允许上传或覆盖任何PHP文件。

<?php
file_put_contents($_GET['filename'], $_GET['content']);

BitFire的RASP文件系统沙盒运行于所有非管理员用户,并将拦截此文件写入,并检查$_GET['filename']$_GET['content']是否有尝试访问PHP文件的任何尝试。当检测到恶意软件感染时,恶意软件感染将失败,并立即显示阻止页面。

BitFire原生支持WordPress管理员,您可以通过实现此简单函数来添加对任何CMS的支持

namespace BitFire\Plugin

function is_admin() : bool {
  if (my_custom_acl_check($_COOKIE)) { 
    return true;
  }
  return false;

  // OR simply: 
  return my_custom_acl_check();
}

数据库RASP

黑客利用安全漏洞创建后门管理员账户。然后,这些账户被用于安装恶意软件或其他垃圾邮件内容。BitFire通过检查所有数据库更新并检查权限提升来确保这一漏洞。

考虑以下WordPress漏洞:此漏洞允许攻击者设置任何权限级别,包括“管理员”,而无需任何验证。

$user = get_current_user();
$user->setRole($_GET['user_role']);

当BitFire数据库沙盒检查底层数据库更新时,它将比较正在设置的用户的权限与更改权限的用户权限。如果用户没有授予管理员访问权限的权限,则拒绝数据库写入,并给用户提供阻止页面。

BitFire预先配置了包括WordPress、Joomla和Drupal在内的流行CMS。

您也可以实现自己的数据库检查

QueryBlockList::new("table_name", "insert/update/delete", ["matching", "query", "criteria"], 'privilege_check_function');

这将触发对table_name表的任何更新,匹配标准以使用PHP函数privilege_check_function()验证SQL查询。

被阻止的查询示例

UPDATE table_name SET wp_capabilities = 'a:1:{s:13:"administrator";b:1;}' WHERE umeta_id = 20;

机器人保护RASP

99%的Web攻击来自自动化脚本。BitFire RASP以两种方式保护您的网站免受自动化攻击。首先,它通过验证其网络来源允许好的机器人,如google和bing。Google机器人仅从google拥有的IP地址连接,而bing从Microsoft。BitFire有一个超过150个已知和批准的机器人、SEO工具及其起源网络的列表。

其次,对于Chrome、Safari等浏览器,BitFire会发送一个透明的JavaScript挑战。这个JavaScript挑战只需毫秒即可完成,并验证客户端是一个真正的浏览器,而不是黑客工具。这样,您的网站只能看到经过验证的浏览器流量。这与Cloudflare的超级机器人对抗模式类似。

BitFire Screen Shot

以下是BitFire的不同之处

  • speed 速度。<2毫秒的阻止时间 - BitFire比最受欢迎的PHP防火墙快100倍
  • bot 机器人认证。通过源网络认证像谷歌、Facebook、必应、ahrefs等好机器人
  • browser 浏览器验证。透明的JavaScript浏览器验证确保用户是真实的
  • browser 客户端完整性。自动生成浏览器策略,防止浏览器被接管
  • browser 服务器完整性。经过验证的文件访问可防止服务器代码修改
  • browser 基于语法的防火墙。解析SQL、HTTP、HTML以实现最精确的阻止

构建

BitFire是用纯PHP构建的,没有外部依赖。BitFire可以利用APCu、SHM、shmop和OpCache等几个PHP共享内存缓存

先决条件

您需要:一个Web服务器(Apache、Nginx)、PHP >= 7.1、一个登录名和一个文本编辑器。

安装

  • 通过GitHub安装

    git clone https://github.com/bitslip6/bitfire.git
    add: auto_prepend_file = "/path/to/bitfire/startup.php" to root .user.ini file
  • 通过Composer安装

    composer require bitslip6/bitfire
    add: auto_prepend_file = "/path/to/bitfire/startup.php" to root .user.ini file
    
  • Bitfire已安装! 在您的浏览器中访问/bitfire/startup.php以打开配置向导,启用防火墙。如果您在web_root外安装了BitFire,您可以通过访问在/bitfire/config.ini中定义的URL /bitfire-admin来访问仪表板。

  • 恭喜!是时候喝啤酒了

有关详细的配置和安装,请参阅我们的 支持中心

设置/配置快速入门

默认配置非常保守,只会阻止自称恶意脚本的机器人。配置存储在BitFire主目录中的config.ini(对于Composer:vendor/bitslip6/bitfire/config.ini)

现在访问您的网站在路径"your_domain.com/bitfire_dashboard",当提示时输入密码,然后点击"设置"并配置您要使用的设置。

在第一次查看第一页时,BitFire将自动为您配置服务器,很少需要调整。

功能标志支持3个值

  • false:禁用功能
  • report:不阻塞流量,但将条目添加到report_file(config.ini设置)
  • block:阻止请求,服务器响应代码(config.ini)从views/block.php,我们建议从report开始,然后在确认不会阻止有效流量后转换为block。有关详细信息,请参阅https://github.com/bitslip6/bitfire/wiki/block_reporting

1。需要完整浏览器。如果您的网站使用JavaScript和cookies(99%的所有网站)您可以要求所有网络浏览器证明它们都支持这两种功能,通过启用require_full_browser。由于>95%的所有漏洞脚本和蠕虫不支持JavaScript或cookies,这是您可以安装的最好的单一保护措施,以防止入侵。此cookie不识别用户,因此完全符合GDPR,无需GDPR通知。

require_full_browser = report | block

2。启用机器人白名单。进一步限制机器人,只允许经过验证的白名单机器人。BitFire附带预配置的常见机器人列表。有关如何添加更多机器人的信息,请参阅我们的维基百科。

whitelist_enable = report | block

3。启用核心网络过滤器。网络过滤器阻止恶意请求,如XSS、LFI、RCE和SQLi以及许多其他请求。整个网络过滤器可以通过web_filter_enabled参数启用或禁用。我们建议以下配置

web_filter_enabled = report | block
xss_block = report | block
web_block = report | block
file_block = report | block
sql_block = report | block

4。启用IP阻止。默认情况下,BitFire不会将IP地址列入黑名单。我们建议您启用此功能,这允许最快地阻止HTTP洪水。

allow_ip_block = true

有关详细文档,请参阅文档

路线图

有关建议的功能(和已知问题)的列表,请参阅公开问题

贡献

对机器人白名单的补充以及额外的攻击签名或绕过方法将受到高度重视。如果您对BitFire Pro的商业许可做出贡献,您将获得折扣。

  1. 分支项目
  2. 创建您的功能分支(git checkout -b feature/AmazingFeature
  3. 提交您的更改(git commit -m 'Add some AmazingFeature'
  4. 将更改推送到分支(git push origin feature/AmazingFeature
  5. 打开拉取请求

许可

根据Apache 2.0许可证分发。有关更多信息,请参阅LICENSE

联系方式

Cory - @bitslip6 - info@bitslip6.com

项目链接:https://github.com/bitslip6/bitfire

致谢