【问题标题】:How to implement auth-user-pass-verify in OpenVPN?如何在 OpenVPN 中实现 auth-user-pass-verify?
【发布时间】:2022-01-13 02:25:35
【问题描述】:

我想为我的 OpenVPN 用户实施用户名和密码验证。那么会有多个用户,所有这些用户名和密码存储在哪里以及如何验证它们?

【问题讨论】:

    标签: openvpn


    【解决方案1】:

    我使用了一个自定义的 python 脚本和数据库来验证用户名和密码。

    #!/usr/bin/env python3
    
    import sys
    import sqlite3
    DB_FILE = 'openvpn_dashboard/db.sqlite3'
    
    
    def main():
        # First arg is a tmp file with 2 lines: username and password
        with open(sys.argv[1], 'r') as tmpfile:
            username = tmpfile.readline().rstrip('\n')
            password = tmpfile.readline().rstrip('\n')
    
        creds = get_password(username)
        if not creds:
            print(f'>> user {username} not defined.')
            sys.exit(2)
    
        # Verify password.
        if password != creds[0][1]:
            print(f'>> Bad password provided by user {username}.')
            sys.exit(3)
    
        sys.exit(0)
    
    
    def get_password(username):
        db = sqlite3.connect(DB_FILE)
        cursor = db.cursor()
        cursor.execute('''select username, password from openvpn_openvpnuser where username=?''', (username,))
        creds = cursor.fetchall()
        db.close()
        return creds
    
    
    if __name__ == '__main__':
        main()
    
    

    【讨论】:

    • 如果有人想了解有关实施的更多详细信息,请联系我
    【解决方案2】:

    auth-user-pass-verify 的重点是您可以选择想要验证您的用户的任何方式。以下是一些更受欢迎的答案:

    1. 在安装了 openvpn (pam) 的系统上使用用户/用户通行证
    2. 使用 ldap 并连接到 Windows 公司域
    3. Okta 或 google 等第三方身份验证服务。

    编写您喜欢的任何脚本来获取您收到的用户名/密码信息并执行相关的身份验证步骤。

    【讨论】:

      猜你喜欢
      • 2016-01-06
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 2021-11-28
      相关资源
      最近更新 更多