利用Python实时读取fast.log或eve.json,对级别 <=2 级的预警进行主动响应,调用iptables封禁ip
时间: 2023-12-03 14:47:10 浏览: 143
基于Python实现的iptables【100011456】
可以使用Python的`tail`模块来实时读取`fast.log`文件,或者使用`watchdog`模块来监听`eve.json`文件变化。
以下是一个示例代码,用于读取`fast.log`文件并对级别小于等于2的预警进行主动响应:
```python
import subprocess
import tail
def block_ip(ip):
# 调用iptables命令封禁IP
subprocess.call(['iptables', '-A', 'INPUT', '-s', ip, '-j', 'DROP'])
# 实时读取fast.log文件
t = tail.Tail('fast.log')
t.register_callback(lambda x: block_ip(x.split()[0]) if int(x.split()[1]) <= 2 else None)
t.follow()
```
如果要监听`eve.json`文件变化,则可以使用`watchdog`模块:
```python
import json
import subprocess
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class MyEventHandler(FileSystemEventHandler):
def on_modified(self, event):
if event.src_path.endswith('.json'):
with open(event.src_path, 'r') as f:
data = json.load(f)
if data['level'] <= 2:
subprocess.call(['iptables', '-A', 'INPUT', '-s', data['src_ip'], '-j', 'DROP'])
# 监听eve.json文件变化
observer = Observer()
observer.schedule(MyEventHandler(), '.', recursive=True)
observer.start()
```
以上代码仅供参考,具体实现需要根据实际需求进行调整。同时,请注意iptables的使用规则,不当的使用可能会导致系统不稳定或者无法访问。
阅读全文