本篇文章小編主要是想和大家分享一下使用Python實現openvpn的登錄次數限制方法,文章中會有代碼列出,對Python開發感興趣的小夥伴就隨著小編一起來了解一下吧。
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的登錄次數限制方法,希望對小夥伴們有所幫助。想要了解更多內容的小夥伴可以登錄扣丁學堂官網諮詢,扣丁學堂是專業的Python培訓機構,不僅有專業的老師和與時俱進的課程體系,還有大量的供學員觀看學習,想要學習Python開發的小夥伴快快行動吧。