好的,我们可以将脚本修改为将分析结果输出到名为 printnginx.txt
的文件中。这样做可以方便地记录和查看所有潜在的可疑活动。这里是更新后的脚本:
import re
# 定义日志文件路径
log_file_path = 'nginx_logs.txt'
output_file_path = 'printnginx.txt'
# 正则表达式用于解析Nginx日志
log_pattern = re.compile(r'(\d+\.\d+\.\d+\.\d+) - - \[(.*?)\] "(.*?) (.*?) HTTP/(.*?)" (\d+) (\d+) "(.*?)" "(.*?)"')
# 分析日志查找攻击路径和接口
def analyze_logs(file_path, output_path):
with open(file_path, 'r') as file, open(output_path, 'w') as output:
for line in file:
match = log_pattern.match(line)
if match:
ip, datetime, method, url, protocol, status, length, referrer, user_agent = match.groups()
# 只关注状态为200的可疑请求
if status == '200' and (method in ['POST', 'GET']):
# 可疑URL的简单示例,可根据实际情况调整
if 'admin' in url or 'passwd' in url or 'cgi' in url:
suspicious_activity = (
f"Suspicious activity detected from {ip} at {datetime}\n"
f"Method: {method}, URL: {url}, Status: {status}, User-Agent: {user_agent}\n\n"
)
output.write(suspicious_activity)
# 调用函数
analyze_logs(log_file_path, output_file_path)
脚本的新特性和使用说明:
- 输出文件:所有检测到的可疑活动将被写入
printnginx.txt
文件中,该文件在脚本的同一目录下。 - 日志分析:脚本继续分析名为
nginx_logs.txt
的日志文件,并将分析结果保存在指定的输出文件中。 - 定制化检测:你可以根据需要调整用于检测可疑活动的URL关键词。
这样修改后,你可以直接运行脚本,所有的输出都将被重定向到 printnginx.txt
文件中,便于后续的审计和分析。