takerukoushirou / roundcube-security_log
将安全事件记录到可配置的接收器,以便进一步处理,支持反向代理配置。
Requires
- php: >=5.6.0
- roundcube/plugin-installer: >=0.3.0
README
将安全事件记录到可配置的接收器以便进一步处理。
一个常见的用例是在内部网络邮件服务器记录了过多的失败登录尝试后,禁止互联网反向代理服务器上的恶意行为者。
在反向代理配置中,如果请求来自受信任的代理,则解析实际客户端IP。
安全事件
安全事件提供一条消息,并包含以下标准字段
timestamp
文本
事件的ISO-8601格式的时间戳。根据日志接收器,时间戳可能包含在接收器负载中,格式可能不同。client_ip
文本
客户端IP地址(在反向代理配置中解析),或文本UNKNOWN
,如果无法确定客户端IP。
根据事件,还可能记录其他数据。
用户登录失败
每当RoundCube触发login_failed
事件时记录。
事件消息:登录失败
host
文本
用于认证的服务器主机名。user
文本
认证尝试失败的用户的名称。code
整数
RoundCube错误代码。
日志接收器
日志接收器接收安全事件并将这些事件存储起来以供进一步处理。
除非日志接收器是有结构的,否则数据字段以key=value
对的形式附加到消息中,这些对之间用逗号和空格分隔。具有文本数据的值用双引号括起来(现有的双引号被单引号替换)。
文件
非结构化接收器,将安全事件追加到配置的文件中,每行一个事件。
每行以时间戳和客户端IP开头,然后是消息和附加数据字段的键值对。
<ISO-8601 timestamp> <SP> <Client IP> <SP> <Message> ":" <SP> <Additional Data Fields>
Syslog
使用标准系统日志设施的非结构化接收器。时间戳由syslog管理,客户端IP格式化为附加数据字段。
除非在配置中覆盖,否则事件报告给Windows上的LOG_USER
和其他平台上的LOG_AUTHPRIV
或LOG_AUTH
。
安装
该插件可以通过Composer或手动安装。如果网络邮件服务器允许出站请求,那么Composer是更舒适的选择,因为它可以自动解决依赖关系并简化更新。
使用Composer
⚠️ 注意,不建议以root用户运行Composer。插件安装需要启用脚本支持,因为RoundCube安装器需要将下载的插件移动到插件目录,并可选择自动启用插件。
- 获取Composer。
- 在RoundCube网络邮件根目录下,添加一个新依赖项到插件。使用
dev-main
作为最新开发版本的版本约束。php composer.phar require 'takerukoushirou/roundcube-security_log:^1.0'
- Composer可能会询问是否启用插件。使用
y
确认。
要更新已安装的插件到最新版本,只需运行
php composer.phar update --no-dev
手动
- 下载最新版本存档或检出最新版本分支。
- 将内容提取到名为
roundcube_security_log
的文件夹中,该文件夹位于您的RoundCube安装的plugins
目录内。
没有外部依赖。
重复手动安装以更新。建议在单独的文件夹中保留多个插件版本,并从 plugins
目录中创建一个名为 roundcube_security_log
的符号链接到最新版本文件夹。
配置
要启用插件,请在RoundCube配置文件中将 roundcube_security_log
添加到 $config['plugins']
数组中。
当使用Composer时,安装程序将询问是否自动启用插件。
选项
在全新安装中,导航到插件目录,并将 config.inc.php.dist
复制到 config.inc.php
。
当使用Composer时,将自动创建副本。
根据需要编辑插件目录中的 config.inc.php
。
所有选项及其接受的值在 config.inc.php.dist
中有描述。
对安全事件采取行动
此插件在(内部)邮件服务器上生成的安全日志条目可用于,例如,自动禁止不良行为者访问面向互联网的代理服务器。
Fail2Ban
此插件包含Fail2Ban过滤器及其jail定义,可用于在指定时间窗口内自动禁止在一定次数失败的登录尝试之后的主机。
将 fail2ban/filter.d
目录中的过滤器以及 fail2ban/jail.d
目录中的两个jail定义复制到互联网代理服务器上Fail2Ban安装的相应目录。要配置禁止时间、搜索窗口和允许的登录重试次数或执行的动作,请修改 roundcube-security_log.local
并重启Fail2Ban。失败记录在Fail2Ban的 roundcube-security
jail下。
请注意,如果没有使用代理服务器且不需要此插件的其他功能,Fail2Ban中包含默认RoundCube日志的过滤器,可以直接使用而不需要此插件。
反向代理
此插件可用于将失败的登录尝试通知一个或多个反向代理服务器以禁止不良行为者。
此插件包含 rsyslogd
的配置文件示例
roundcube-security-forward.conf
(用于邮件服务器)
一个转发器示例,该示例将此插件生成的所有syslog消息转发到反向代理服务器,使用RELP。根据需要配置目标主机和端口号。roundcube-security-sink.conf
(用于反向代理)
接收转发的安全日志消息并将其写入本地日志文件。根据需要配置端口号和目标日志文件。
在反向代理服务器上,Fail2Ban可用于消费转发的日志消息并自动禁止不良行为者。
许可证
GNU通用公共许可证v3 或更高版本。有关详细信息,请参阅 LICENSE 文件。
本程序是免费软件:您可以按照自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它,无论是许可证的第3版,还是(根据您的选择)任何更高版本。