本文介绍了如何设置 OpenVPN 服务器,以通过 Telegram 机器人启用双因素身份验证,该机器人在连接时会发送确认请求。
OpenVPN 是一款著名的免费开源 VPN 服务器,广泛用于组织员工对内部组织资源的安全访问。
作为连接到 VPN 服务器的身份验证,通常使用密钥和用户登录名/密码的组合。 同时,存储在客户端上的密码将整个集合变成一个单一因素,无法提供适当的安全级别。 攻击者在获得对客户端计算机的访问权限后,也获得了对 VPN 服务器的访问权限。 对于来自运行 Windows 的计算机的连接尤其如此。
使用第二个因素可将未经授权访问的风险降低 99%,并且根本不会使用户的连接过程变得复杂。
让我立即进行预订:为了实施,您需要连接第三方身份验证服务器 multifactor.ru,您可以在其中使用免费关税来满足您的需求。
的操作原理
- OpenVPN 使用 openvpn-plugin-auth-pam 插件进行身份验证
- 该插件检查服务器上的用户密码,并通过 Multifactor 服务中的 RADIUS 协议请求第二个因素
- Multifactor 通过 Telegram 机器人向用户发送消息以确认访问
- 用户在 Telegram 聊天中确认访问请求并连接到 VPN
安装 OpenVPN 服务器
网上有很多文章介绍安装和配置OpenVPN的过程,我们就不重复了。 如果您需要帮助,文章末尾有几个教程链接。
设置多因素
去
创建后,您将有两个可用选项: NAS 标识符 и 共享秘密,后续配置将需要它们。
在“组”部分中,转到“所有用户”组设置并删除“所有资源”标志,以便只有特定组的用户才能连接到 VPN 服务器。
创建一个新组“VPN 用户”,禁用除 Telegram 之外的所有身份验证方法,并指示用户有权访问创建的 VPN 资源。
在“用户”部分中,创建有权访问 VPN 的用户,将其添加到“VPN 用户”组并向他们发送链接以配置第二个身份验证因素。 用户登录名必须与 VPN 服务器上的登录名匹配。
设置 OpenVPN 服务器
打开文件 /etc/openvpn/server.conf 并添加使用 PAM 模块进行身份验证的插件
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn
该插件可以位于目录中 /usr/lib/openvpn/插件/ или /usr/lib64/openvpn/插件/ 取决于您的系统。
接下来需要安装 pam_radius_auth 模块
$ sudo yum install pam_radius
打开文件进行编辑 /etc/pam_radius.conf 并指定 Multifactor 的 RADIUS 服务器地址
radius.multifactor.ru shared_secret 40
其中:
- radius.multifactor.ru — 服务器地址
- shared_secret - 从相应的 VPN 设置参数复制
- 40秒-等待大margin请求超时
其余服务器必须删除或注释掉(开头加分号)
接下来,创建服务类型openvpn的文件
$ sudo vi /etc/pam.d/openvpn
并写在
auth required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier]
auth substack password-auth
account substack password-auth
第一行使用参数连接 PAM 模块 pam_radius_auth:
- Skip_passwd - 禁用将用户密码传输到 RADIUS Multifactor 服务器(他不需要知道它)。
- client_id — 将 [NAS-Identifier] 替换为 VPN 资源设置中的相应参数。
所有可能的参数在中描述模块的文档 .
第二行和第三行包括服务器上的登录名、密码和用户权限的系统验证以及第二个身份验证因素。
重新启动 OpenVPN
$ sudo systemctl restart openvpn@server
客户端设置
在客户端配置文件中包含对用户登录名和密码的请求
auth-user-pass
Проверка
启动 OpenVPN 客户端,连接到服务器,输入您的用户名和密码。 Telegram 机器人将发送带有两个按钮的访问请求
一个按钮允许访问,第二个按钮阻止访问。
现在您可以安全地将密码保存在客户端上;第二个因素将可靠地保护您的 OpenVPN 服务器免遭未经授权的访问。
如果有什么不起作用
依次检查您是否错过了任何内容:
- 服务器上有一个使用 OpenVPN 并设置了密码的用户
- 服务器可以通过 UDP 端口 1812 访问地址 radius.multifactor.ru
- NAS-Identifier 和 Shared Secret 参数指定正确
- 已在 Multifactor 系统中创建具有相同登录名的用户,并已被授予访问 VPN 用户组的权限
- 用户已通过 Telegram 配置身份验证方法
如果您之前没有设置过 OpenVPN,请阅读
这些说明是在 CentOS 7 上以示例进行的。
来源: habr.com