使用python实现openvpn的登录次数限制方法

系统 1848 0

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的登录次数限制方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论