使用 Telegram 機器人在 OpenVPN 中進行雙因素身份驗證

本文介紹如何設定 OpenVPN 伺服器,以透過 Telegram 機器人啟用雙重認證,該機器人在連接時會發送確認請求。

OpenVPN 是一款著名的免費開源 VPN 伺服器,廣泛用於組織員工對內部組織資源的安全存取。

作為連接到 VPN 伺服器的身份驗證,通常使用金鑰和使用者登入名稱/密碼的組合。 同時,儲存在客戶端上的密碼將整個集合變成單一因素,無法提供適當的安全等級。 攻擊者在獲得對客戶端電腦的存取權限後,也獲得了對 VPN 伺服器的存取權限。 對於來自執行 Windows 的電腦的連線尤其如此。

使用第二個因素可將未經授權存取的風險降低 99%,且完全不會使用戶的連線過程變得複雜。

讓我立即進行預訂:為了實施,您需要連接第三方身份驗證伺服器 multifactor.ru,您可以在其中使用免費關稅來滿足您的需求。

的操作原理

  1. OpenVPN 使用 openvpn-plugin-auth-pam 插件進行驗證
  2. 該插件檢查伺服器上的使用者密碼,並透過 Multifactor 服務中的 RADIUS 協定請求第二個因素
  3. Multifactor 透過 Telegram 機器人向用戶發送訊息以確認訪問
  4. 用戶在 Telegram 聊天中確認存取請求並連接到 VPN

安裝 OpenVPN 伺服器

網路上有很多文章介紹安裝和設定OpenVPN的過程,我們就不重複了。 如果您需要幫助,文章末尾有幾個教程連結。

設定多因素

去吧 多因素控制系統,轉到“資源”部分並建立一個新的 VPN。
創建後,您將有兩個可用選項: NAS 標識符 и 共享秘密,後續配置將需要它們。

使用 Telegram 機器人在 OpenVPN 中進行雙因素身份驗證

在「群組」部分中,前往「所有使用者」群組設定並刪除「所有資源」標誌,以便只有特定群組的使用者才能連接到 VPN 伺服器。

建立一個新群組“VPN 使用者”,停用除 Telegram 之外的所有身份驗證方法,並指示使用者有權存取建立的 VPN 資源。

使用 Telegram 機器人在 OpenVPN 中進行雙因素身份驗證

在「用戶」部分中,建立有權存取 VPN 的用戶,將其新增至「VPN 用戶」群組並向他們發送連結以配置第二個身份驗證因素。 使用者登入名稱必須與 VPN 伺服器上的登入名稱相符。

使用 Telegram 機器人在 OpenVPN 中進行雙因素身份驗證

設定 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 機器人將發送帶有兩個按鈕的存取請求

使用 Telegram 機器人在 OpenVPN 中進行雙因素身份驗證

一個按鈕允許訪問,第二個按鈕阻止訪問。

現在您可以安全地將密碼保存在用戶端上;第二個因素將可靠地保護您的 OpenVPN 伺服器免於未經授權的存取。

如果有什麼不起作用

依次檢查您是否錯過了任何內容:

  • 伺服器上有一個使用 OpenVPN 並設定了密碼的用戶
  • 伺服器可以透過 UDP 連接埠 1812 存取位址 radius.multifactor.ru
  • NAS-Identifier 和 Shared Secret 參數指定正確
  • 已在 Multifactor 系統中建立具有相同登入名稱的用戶,並已被授予存取 VPN 用戶群組的權限
  • 使用者已透過 Telegram 設定身份驗證方法

如果您之前沒有設定過 OpenVPN,請閱讀 詳細文章.

這些說明是在 CentOS 7 上以範例進行的。

來源: www.habr.com

添加評論