loamok / sf2security-bundle
用于将 symfony 连接到 fail2ban 安全应用的插件包
This package is auto-updated.
Last update: 2021-08-17 19:44:35 UTC
README
灵感来自 https://inuits.eu/blog/getting-fail2ban-work-symfony2-proper-way
感谢 Kalman Olah 撰写的优秀文章。
用于将 symfony 连接到 Linux fail2ban 安全应用的插件包
关于版本的重要说明
版本 2 是为 Symfony 2.x 设计的,版本 3 是为 Symfony 3.x 设计的。版本 3 已合并到 dev-master 和 develop 中。
因此,如果您使用的是 Symfony 2.8,您必须使用此包的版本 2。
关于版本的重要说明
从 sf 2.8 迁移到 sf 3.3
所有情况
- 从 security.yml 中删除行 "csrf_provider: form.csrf_provider"
如果您已将日志文件移动到 var/logs 而不是 app/logs,则必须
- 升级到版本 3 或 dev-master
- 根据此文档调整您的 logrotate 脚本
- 根据此文档调整您的 fail2ban 文档
如果您没有移动日志文件,并且仍然在 app/logs 中保留它们,那么您不需要做任何事情。最终,将此包升级到版本 2,以确保您不会意外升级到版本 3。
第一步:轮换日志
首先,在您的 Web 服务器上配置日志轮换。
所需条件
- 应用程序日志的完整路径
- 系统 Web 服务器用户名
- root 或 sudo 权限
- 您的应用程序名称
在 logrotate 配置目录中创建一个空文件,其模式如下
$ sudo vim /etc/logrotate.d/sf2-appName
在您的文件中写入以下内容(用好的值替换)
/var/www/appName/var/logs/prod.log {
su www-data www-data
daily
missingok
rotate 14
compress
}
然后(如果您的应用程序已经开始运行并记录日志),强制首次轮换
$ sudo logrotate --force /etc/logrotate.d/sf2_appName
将此包安装到您的应用程序中
Composer.json
"require": {
[...],
"loamok/sf2security-bundle": "^3"
并运行 composer update。
将其添加到您的内核文件 AppKernel.php
$bundles = array(
[...],
\Loamok\Sf2securityBundle\Sf2securityBundle(),
修改您的安全配置文件
# app/config/security.yml
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
failure_handler: sf2security.authenticationfailurehandler
logout: true
anonymous: true
连接到 fail2ban
从 filter.conf 文件创建到 /etc/fail2ban/filter 的符号链接
$ sudo ln -s /var/www/appName/vendor/loamok/sf2security-bundle/Loamok/Sf2securityBundle/Resources/filter/sf2security.conf /etc/fail2ban/filter/sf2security.conf
为 fail2ban 添加 jail 定义(/etc/fail2ban/jail.conf)(样本在 filter 文件中)
[sf2security]
enabled = true
filter = sf2security
logpath = /var/www/appName/var/logs/prod.log
port = http,https
bantime = 600
banaction = iptables-multiport
maxretry = 3
重新启动 fail2ban 服务,这样就完成了,您已经保护了您的 symfony2 应用程序免受暴力破解。
$ sudo service fail2ban restart