使用python实现openvpn的登录次数限制方法
程序员文章站
2022-04-27 23:26:04
linux上搭建的openvpn
openvpn使用mysql进行用户的验证
通过对openvpn日志的监控,实现对openvpn登录失败5次的用户进行锁定,一天后自动...
linux上搭建的openvpn
openvpn使用mysql进行用户的验证
通过对openvpn日志的监控,实现对openvpn登录失败5次的用户进行锁定,一天后自动解锁
#!/usr/bin/env python3 #-*- coding:utf8 -*- '''脚本对登录VPN失败次数超过5次的用户进行锁定''' import time import re import os file = open('/etc/openvpn/openvpn.log', 'r') failname = {} #使用字典对登录失败用户次数进行统计 def get_blackname(line): blackname = [] e = r"\'([\s\S]*)\'" #过滤出登录失败的用户名 fail_name = re.findall(e, line) for i in fail_name: if i not in failname: failname[i] = 1 else: failname[i] += 1 if failname[i] >= 5: #登录失败次数超过5次使用mysql_ban函数进行处理 mysql_ban(i) failname.clear() #禁用后清空字典 #定义处理登录失败用户处理函数 def mysql_ban(blackname): cmd = 'mysql -uroot -pmysql -h 127.0.0.1 -P 4045 -e ' \ '"update vpnuser set active=0 where name=\'%s\'" vpn ' % blackname os.system(cmd) while 1: #监控openvpn的日志文件 where = file.tell() line = file.readline() if not line: time.sleep(1) file.seek(where) elif 'AUTH-PAM' in line: get_blackname(line)
需要配合crontab执行shell脚本才能实现自动解锁,shell脚本如下
然后根据需要设置每天几点解锁
> /etc/openvpn/openvpn.log mysql -uroot -pmysql -h 127.0.0.1 -P 4045 -e "update vpnuser set active=1 where active=0" vpn
以上这篇使用python实现openvpn的登录次数限制方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
推荐阅读
-
ASP.NET MVC使用ActionFilterAttribute实现权限限制的方法(附demo源码下载)
-
Laravel5.4框架使用socialite实现github登录的方法
-
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
-
ASP.NET MVC使用ActionFilterAttribute实现权限限制的方法(附demo源码下载)
-
真正实现限制SSH单用户登录的方法
-
Python单元测试_使用装饰器实现测试跳过和预期故障的方法
-
python判断字符串编码的简单实现方法(使用chardet)
-
Laravel5.4框架使用socialite实现github登录的方法
-
Python实现模拟登录及表单提交的方法
-
iOS中使用UISearchBar控件限制输入字数的实现方法