扣丁學堂培訓簡述使用Python實現openvpn的登錄次數限制方法

編程語言 OpenVPN Python 腳本語言 Line 扣丁學堂 2018-12-06

本篇文章小編主要是想和大家分享一下使用Python實現openvpn的登錄次數限制方法,文章中會有代碼列出,對Python開發感興趣的小夥伴就隨著小編一起來了解一下吧。

扣丁學堂培訓簡述使用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開發的小夥伴快快行動吧。

相關推薦

推薦中...