在日志文件中找到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
...
  1. 生成配置文件:简单地将此配置复制到文件,例如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"
    
  2. 运行脚本:

    find2deny-init-db blocked-ip.sqlite
    

    在文件blocked-ip.sqlite中创建sqlite数据库。文件名必须与配置匹配 database_path在文件config.toml中。

  3. 运行:

    find2deny-cli config.toml
    

    创建文件block-ip.sh。然后可以检查文件block-ip.sh,并从shell运行它 更新防火墙。

配置

配置文件中使用的语法是Toml。有三个 配置文件中的节,如上所示

公共配置

本节定义了常见的配置,例如应该在控制台上打印多少信息等。

判断

本节定义判断列表。它们是用名字来标识的。现在只有两个 判决:path-based-judgmenttime-based-judgment。每个判断都有自己的配置。

判断是类,它使用配置中定义的规则来决定哪些IP应该被阻止。 它们扩展了类AbstractIpJudgment

执行

本节定义执行列表。现在只有一次处决。执行是类 创建防火墙规则或执行某些内容,这些内容可能会阻止IP,或者在本实现中, 阻止IP所属的网络。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
从类访问属性时发生java编译错误   性能更好的Java序列化替代方案   java EhCache Spring XML集成命名空间   java如何使用表达式在JSP中检索新生成的图像   Java neo4j,REST和内存   java如何在mouseListener中删除和创建对象?   java在Hibernate中使用预定义前缀填充Id列   java无法从Elastic Beanstalk连接到Amazon SimpleDB   多线程通过单击JavaSwing中的按钮创建具有新名称的类的新对象   java如何在Kotlin中实现Memento模式   Android系列。对java进行排序。lang.NullPointerException   方法中的java重载构造函数内部类