Python - 在 authlog 中创建超过 5 次失败登录尝试的 IP 地址的黑名单文件

Posted

技术标签:

【中文标题】Python - 在 authlog 中创建超过 5 次失败登录尝试的 IP 地址的黑名单文件【英文标题】:Python - create blacklist file of IP addresses that have more than 5 failed login attempts in the authlog 【发布时间】:2010-03-24 17:51:47 【问题描述】:

基本上我有一个 authlog/syslog 文件,其中包含登录尝试和 IP 地址的列表 - 我需要制作一个 Python 程序,该程序将创建一个 txt 文件,其中包含超过 5 次失败登录尝试的所有 IP 地址 - 一个有点像“黑名单”。

所以基本上是这样的:

如果“uniqueipaddress”和“authentication failure”出现5次以上,则将uniqueipaddress添加到txt文件中。

任何帮助将不胜感激 - 请尽量简化,因为我在 Python 编程方面非常非常缺乏经验!谢谢。

【问题讨论】:

【参考方案1】:

对于每一行:

读取 IP 并尝试状态 按 IP 保存失败尝试次数的字典

然后翻查字典:

打印以归档 5 次或更多尝试的所有 IP

Python 提示:

逐行读取文件:for line in open(filename) 解析日志行完全取决于其格式。一些有用的 Python 工具是字符串的 split 方法和正则表达式 保留字典,即ips[ip] 是尝试次数

【讨论】:

谢谢,这有帮助 - 任何示例代码都有机会在实践中展示这一点吗?非常感谢。【参考方案2】:

以下代码应执行与您要查找的内容类似的操作。它并不完美,但它是一个很好的起点。

ips = 
for line in open('your_log.txt'):
    parts = line.split(' ') #assuming this is a good place to split
    if parts[1] == "AuthenticationFailure":
        if parts[0] in ips:
            ips[parts[0]] += 1
        else:
            ips[parts[0]] = 0

for ip in [k for k,v in ips.iteritems() if v >= 5]:
    #WRITE TO FILE HERE

这假设您的日志文件的结构如下:

1.1.1.1 LoginSuccess
2.2.2.2 LoginSuccess
3.3.3.3 AuthenticationFailure

【讨论】:

以上是关于Python - 在 authlog 中创建超过 5 次失败登录尝试的 IP 地址的黑名单文件的主要内容,如果未能解决你的问题,请参考以下文章

在 python 源文件中创建列注释

为啥我不能使用 `section .data:` 和 `section .text:` 在 C 中创建一个长度超过 61 个字符的 char 数组? [复制]

如何在NetLogo中创建2个滑块值不能超过定义值的条件?

我无法在 Microsoft SQL Server 2014 中创建正确的触发器

从包含新操作的python中创建的pb图在c ++中创建图

在 Python 中创建点类