利用Python实时读取fast.log或eve.json,对级别 <=2 级的预警进行主动响应,调用iptables封禁ip
时间: 2023-12-03 12:47:10 浏览: 60
可以使用Python的`tail`模块实现实时读取fast.log或eve.json的功能,然后使用`json`模块解析日志文件内容,并判断预警级别是否小于等于2,如果是,则调用`subprocess`模块执行`iptables`命令进行封禁。
以下是一个简单的代码示例:
```python
import os
import json
import subprocess
from tail import Tail # 需要安装tail模块
log_file = 'fast.log' # 日志文件路径
# log_file = 'eve.json'
def process_log(line):
# 解析日志内容
try:
log = json.loads(line)
except:
return
# 判断预警级别是否小于等于2
if 'severity' in log and log['severity'] <= 2:
# 获取IP地址
if 'src_ip' in log:
ip = log['src_ip']
elif 'destination_ip' in log:
ip = log['destination_ip']
else:
return
# 调用iptables命令进行封禁
cmd = ['iptables', '-A', 'INPUT', '-s', ip, '-j', 'DROP']
subprocess.call(cmd)
if __name__ == '__main__':
# 实时读取日志文件
tail = Tail(log_file)
for line in tail:
process_log(line)
```
需要注意的是,以上代码只是一个简单的示例,实际情况中可能需要根据具体的日志格式和iptables规则进行修改。另外,为了防止恶意攻击者利用该功能进行攻击,建议在代码中添加安全措施,例如只允许特定用户或IP地址调用该功能。
阅读全文