在日志文件中找到bot ips以对其进行防火墙
find2den的Python项目详细描述
从(apache)日志文件列表中为ufw构建防火墙命令的工具。
它创建一个文件block ip.sh,其中包含用于阻止IP网络的Linux UWF命令,但是 不更改计算机上的任何防火墙规则。
安装
要在PyPI上安装最新版本, 只需运行:
pip install find2deny
或者要安装最新的开发版本,请运行:
git clone [TODO] cd find2deny python setup.py install
快速教程
例如,在目录apache2中有一组apache日志文件,如
- access.log
- access.log.1,
- access.log.2.gz,
- …
python脚本find2deny-cli可以创建一个shell脚本block-ip.sh,其中包含诸如
#!/bin/bash ufw deny from 1.2.3.4/0 to any ufw deny from 1.2.3.4/1 to any ...
生成配置文件:简单地将此配置复制到文件,例如config.toml:
verbosity = "INFO" # Path to apache log files in system log_files = ["apache2/access.log.*"] # Log Pattern log_pattern = '%h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"' # temporary sqlite database database_path="./blocked-ip.sqlite" [[judgment]] name = "path-based-judgment" [judgment.rules] bot_request = [ "/?XDEBUG_SESSION_START=phpstorm", "/phpMyAdmin/", "/pma/", "/myadmin/", "/MyAdmin/", "/mahua/", "/wp-login", "/webdav/", "/help.php", "/java.php", "/db_pma.php", "/logon.php", "/help-e.php", "/hell.php", "/defect.php", "/webslee.php", "http://www.123cha.com/", "http://www.wujieliulan.com/", "http://www.epochtimes.com/", "http://www.ip.cn/", "www.baidu.com:443" ] [[judgment]] name = "time-based-judgment" [judgment.rules] max_request = 501 interval_seconds = 10 [[execution]] name = "ufw_cmd_script" [execution.rules] script = "./block-ip.sh"
运行脚本:
find2deny-init-db blocked-ip.sqlite
在文件blocked-ip.sqlite中创建sqlite数据库。文件名必须与配置匹配 database_path在文件config.toml中。
运行:
find2deny-cli config.toml
创建文件block-ip.sh。然后可以检查文件block-ip.sh,并从shell运行它 更新防火墙。
配置
配置文件中使用的语法是Toml。有三个 配置文件中的节,如上所示
公共配置
本节定义了常见的配置,例如应该在控制台上打印多少信息等。
判断
本节定义判断列表。它们是用名字来标识的。现在只有两个 判决:path-based-judgment和time-based-judgment。每个判断都有自己的配置。
判断是类,它使用配置中定义的规则来决定哪些IP应该被阻止。 它们扩展了类AbstractIpJudgment。
执行
本节定义执行列表。现在只有一次处决。执行是类 创建防火墙规则或执行某些内容,这些内容可能会阻止IP,或者在本实现中, 阻止IP所属的网络。