Python实现的基于日志的入侵检测系统
以下是一个基本的Python实现的基于日志的入侵检测系统的示例代码:
import re # 读取日志文件 with open('access.log', 'r') as f: log_data = f.readlines() # 正则表达式匹配 pattern = re.compile(r'(\d+\.\d+\.\d+\.\d+)\s+\[(.*)\]\s+"(.*)"\s+(\d+)\s+(\d+)\s+"(.*)"') logs = [] for line in log_data: match = pattern.match(line) if match: logs.append({ 'ip': match.group(1), 'time': match.group(2), 'request': match.group(3), 'status': match.group(4), 'size': match.group(5), 'user_agent': match.group(6) }) # 检测异常请求 def check_request(log): malicious = False if 'pidancode.com' in log['request']: malicious = True if '皮蛋编程' in log['user_agent']: malicious = True return malicious # 分析日志 for log in logs: if check_request(log): print('发现异常请求:', log['request'], log['ip'], log['time'])
上面的代码将读取一个名为access.log
的日志文件,并使用正则表达式将每个日志条目转换为一个包含IP地址、时间戳、请求内容、状态码、响应大小和用户代理的字典。然后,它将使用一个名为check_request()
的函数来检测每个请求是否可能是恶意的。在这种情况下,检查是否包含特定的字符串“pidancode.com”和“皮蛋编程”。最后,如果在日志中发现了异常请求,它将输出该请求的详细信息。
请注意,这只是入侵检测系统的基本实现,实际的入侵检测系统需要更复杂的算法来检测更复杂的攻击模式。
相关文章