loamok/sf2security-bundle

该包已被弃用且不再维护。未建议替代包。

用于将 symfony 连接到 fail2ban 安全应用的插件包

安装数: 9,669

依赖者: 0

建议者: 0

安全: 0

星标: 5

关注者: 5

分叉: 0

开放问题: 0

类型:symfony-bundle

3.2 2018-02-09 09:32 UTC

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,则必须

  1. 升级到版本 3 或 dev-master
  2. 根据此文档调整您的 logrotate 脚本
  3. 根据此文档调整您的 fail2ban 文档

如果您没有移动日志文件,并且仍然在 app/logs 中保留它们,那么您不需要做任何事情。最终,将此包升级到版本 2,以确保您不会意外升级到版本 3。

第一步:轮换日志

首先,在您的 Web 服务器上配置日志轮换。

所需条件

  1. 应用程序日志的完整路径
  2. 系统 Web 服务器用户名
  3. root 或 sudo 权限
  4. 您的应用程序名称

在 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