mathcontao / ng-apache-firewall-for-contao
这只是关于如何在Contao CMS中配置nG防火墙(由Jeff Starr制作)的一小部分资料。这是一个关于如何在Contao CMS中配置nG防火墙(由Jeff Starr)的小集合。
Requires
- contao/core-bundle: ^4.9
Requires (Dev)
- contao/easy-coding-standard: ^3.0
- contao/manager-plugin: ^2.3
- contao/test-case: ^4.0
- phpunit/phpunit: ^8.4
- symfony/http-client: 4.4.*
- symfony/phpunit-bridge: 4.4.*
README
nG-Apache-Firewall-for-Contao
这只是关于如何在Contao CMS中配置nG防火墙(由Jeff Starr制作)的一小部分资料。
这是一个关于如何在Contao CMS中配置nG防火墙(由Jeff Starr)的小集合。
目标
各种爬虫和机器人定期扫描互联网以寻找漏洞或搜索内容(例如,电子邮件地址)。网站也经常受到影响。网站尝试了各种“家庭疗法”,以将此类爬虫和机器人拒之门外。
为什么不在它们访问网站时就阻止这些爬虫和机器人呢?
nG Apache Firewall/Blacklist
Jeff Starr (https://perishablepress.com/) 多年来一直免费提供易于配置的 "nG Firewall"。
- 6G Firewall
- 7G Firewall(稳定版,2020年1月发布)
许可证
开源且免费供所有人使用(“开源且免费供所有人使用”)。只需在 .htaccess 中保留一个小小的引用即可。
技术要求
- 服务器:Apache 2.0+
- 访问 .htaccess 文件
- 本指南针对与Contao CMS(https://contao.org)一起使用的情况。以下列出了一些已知错误及其解决方案。
7G Firewall 指南
一般
- 所有这些步骤都由您自己承担风险。所有信息仅供参考。
- 但这并不难,实际上只需要基本知识。
- 原始指南用英文写成: https://perishablepress.com/7g-firewall/
别忘了备份
像往常一样:备份总有帮助。特别要记住的是,必须先(!)备份 .htaccess。
步骤 1:下载
- 从 https://perishablepress.com/7g-firewall/#download 下载文件(版本 1.2,11KB,截止到2020年8月,文本文件:7G-Firewall-v1.2.txt)
步骤 2:编辑 .htaccess 文件
- Contao 4.9: /web/.htaccess
- 备份(安全第一!)
- 将 7G 下载文件的內容插入到 .htaccess 文件的开始处(不要覆盖任何之前的内容)
- 保存并在相同位置保存到 Web 服务器上
步骤 3:测试
- 使用例如 "/vbulletin/" 在地址中调用网站(例如: https://domain.tld/vbulletin/)
- 在白色背景上可以看到简短的文本 "Goodbye"
- 服务器返回 403 错误(禁止访问)
附加:了解被阻止的内容
此防火墙可能会阻止过多内容。为此,您可以创建一个日志。更详细的英文描述: https://perishablepress.com/7g-firewall-log-blocked-requests/ 请使用此处的 "问题" 功能 在GitHub上分享您的经验
步骤 5:准备日志功能
- 下载: https://perishablepress.com/7g-firewall-log-blocked-requests/#download(版本 1.1,2KB,截至 2020 年 8 月,ZIP 文件:7G-Log-Blocked-Requests-v1.1.zip)
- 解压 ZIP 文件
- 需要 2 个文件:** 7g_log.php(包含由 .htaccess 调用的工具,并将数据写入日志文件)** 7g_log.txt(日志文件)
- 将这两个文件上传到服务器,放置在 .htaccess 文件旁边(在 Contao 4.9 中:/web/)
- 可能需要调整文件权限(需要:CHMOD 644)
第 6 步:保护日志
- 如果 Apache 服务器版本为 2.3 及以下,则在 .htaccess 文件开头插入以下内容:
<IfModule !mod_authz_core.c>
<Files ~ "7g_log\.txt">
Deny from all
</Files>
</IfModule>
从 Apache 服务器 2.4 开始
<IfModule mod_authz_core.c>
<Files ~ "7g_log\.txt">
Require all denied
</Files>
</IfModule>
- 测试:调用 https://domain.tld/7g_log.txt 产生禁止访问(错误 403)
第 7 步:启用日志记录
- 打开 .htaccess 文件(见上面)
- 多次取消注释
RewriteRule .* - [F,L]
(在前面写上#
),注释掉RewriteRule .* /7g_log.php?....
(移除前面的#
)
示例行 58-60:(之前)
RewriteRule .* - [F,L]
# RewriteRule .* /7g_log.php?log [L,NE,E=7G_QUERY_STRING:%1___%2___%3]
(之后)
# RewriteRule .* - [F,L]
RewriteRule .* /7g_log.php?log [L,NE,E=7G_QUERY_STRING:%1___%2___%3]
其他行:96-98,113-115,126-128,140-142,153-155
第 8 步:查看日志
- 通过 FTP 调用文件 /web/7g_log.txt
- 有关更多详细信息,请参阅文档:https://perishablepress.com/7g-firewall-log-blocked-requests/#reading
常见问题
布局损坏/无法加载 CSS 文件
- 请参阅 Issue#1(包括解决方案):#1
/web/systems 目录被阻止
- 请参阅 Issue#2(包括解决方案):#2
日志配置
在 7g_log.php 中可以调整日志记录
日志目录
define('SEVENGLOGPATH', dirname(__FILE__) .'/');
HTTP 错误代码
define('SEVENGSTATUS', 403); // 403 = 禁止
日志文件名
define('SEVENGLOGFILE', '7g_log.txt');
User Agent 长度
define('SEVENGUALENGTH', 0); // 0 = 所有
显示的阻止文本
define('SEVENGEXIT', 'Goodbye');
更改示例
define('SEVENGEXIT', '7G: 错误 - 403. 再见');
日志时区
date_default_timezone_set('UTC');
更改适用于德国的正确时区的示例
date_default_timezone_set('UTC+2');
经验
2020 年 12 月 3 日
我的网站大约运行了 2 个月(约 70 天)使用 7G。阻止日志大约 1MB 大小(3879 行)。防火墙工作得非常好。阻止的访问
- 1375 次来自 http://www.opensiteexplorer.org/dotbot 的访问
- 122 次来自一个神秘的 "python" 脚本
- 501 次来自 360Spider 的访问
- 62 次来自 Ahref 的访问
- 334 次来自 mj12bot 的访问
- 12 次来自 SeznamBot 的访问
- 甚至抄袭检查软件 Turnitin 也想在这里看看
安全
- 24 次来自试图欺骗您 URL 的神秘网站的访问
- 1403 次尝试通过参数进行选择数据库查询的访问
- 408 次似乎尝试通过 CMD 进行基准查询的访问
- 123 次搜索 wp-content 或 wp-admin 的访问
在 Wiki 中现在可以找到记录已阻止的恶意攻击的示例。
许可证:MIT(见 LICENCE.md)