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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

