前往 2FA(ASA SSL VPN 的雙重認證)

無論是您的使用者還是合作夥伴需要存取組織中的特定伺服器,提供對企業環境的遠端存取的需求越來越頻繁地出現。

出於這些目的,大多數公司都使用 VPN 技術,該技術已被證明是提供對組織本地資源的存取的可靠保護方式。

我的公司也不例外,我們和許多其他公司一樣使用這項技術。 而且,與許多其他公司一樣,我們使用 Cisco ASA 55xx 作為遠端存取網關。

隨著遠端使用者數量的增加,需要簡化頒發憑證的程序。 但同時,這必須在不影響安全的情況下完成。

對於我們自己來說,我們找到了一種解決方案,使用雙重認證透過 Cisco SSL VPN 進行連接,並使用一次性密碼。 本出版品將告訴您如何以最短的時間和零成本建立這樣的解決方案(前提是您的基礎架構中已經有 Cisco ASA)。

市場上充斥著用於產生一次性密碼的盒裝解決方案,同時提供了許多獲取密碼的選項,無論是透過簡訊發送密碼還是使用硬體和軟體令牌(例如,在手機上)。 但在當前的危機中,為了省錢和為雇主省錢的願望,迫使我尋找一種免費的方式來實現產生一次性密碼的服務。 雖然免費,但與商業解決方案相比並不遜色多少(在這裡我們應該預訂,請注意該產品也有商業版本,但我們同意我們的金錢成本將為零)。

所以,我們需要:

- 具有一組內建工具的 Linux 映像 - multiOTP、FreeRADIUS 和 nginx,用於透過 Web 存取伺服器(http://download.multiotp.net/ - 我使用了 VMware 的現成映像)
— 活動目錄伺服器
— Cisco ASA 本身(為了方便起見,我使用 ASDM)
— 任何支援 TOTP 機制的軟體令牌(例如,我使用 Google Authenticator,但同樣的 FreeOTP 也可以)

我不會詳細介紹圖像如何展開。 因此,您將收到已安裝並設定為協同工作的 multiOTP 和 FreeRADIUS 的 Debian Linux,以及用於 OTP 管理的 Web 介面。

步驟 1. 我們啟動系統並針對您的網路進行配置
預設情況下,系統附帶 root root 憑證。 我想每個人都猜到在第一次登入後更改 root 使用者密碼是個好主意。 您還需要更改網路設定(預設為“192.168.1.44”,網關為“192.168.1.1”)。 之後您可以重新啟動系統。

讓我們在 Active Directory 中建立一個用戶 OTP,有密碼 我的超級密碼.

步驟 2. 設定連線並匯入 Active Directory 用戶
為此,我們需要訪問控制台並直接存取文件 多點處理.php,我們將使用它來配置 Active Directory 的連線設定。

轉到目錄 /usr/local/bin/multiotp/ 並依序執行以下命令:

./multiotp.php -config default-request-prefix-pin=0

確定輸入一次性 pin(0 或 1)時是否需要附加(永久)pin

./multiotp.php -config default-request-ldap-pwd=0

確定輸入一次性 PIN 碼時是否需要網域密碼(0 或 1)

./multiotp.php -config ldap-server-type=1

指示 LDAP 伺服器的類型(0 = 常規 LDAP 伺服器,在我們的範例中 1 = Active Directory)

./multiotp.php -config ldap-cn-identifier="sAMAccountName"

指定顯示使用者名稱的格式(此值將僅顯示名稱,不顯示網域)

./multiotp.php -config ldap-group-cn-identifier="sAMAccountName"

同樣的事情,只適用於一組

./multiotp.php -config ldap-group-attribute="memberOf"

指定判斷使用者是否屬於某個群組的方法

./multiotp.php -config ldap-ssl=1

我是否應該使用與 LDAP 伺服器的安全連線(當然,是的!)

./multiotp.php -config ldap-port=636

連接LDAP伺服器的連接埠

./multiotp.php -config ldap-domain-controllers=adSRV.domain.local

您的 Active Directory 伺服器位址

./multiotp.php -config ldap-base-dn="CN=Users,DC=domain,DC=local"

我們指示從哪裡開始搜尋網域中的用戶

./multiotp.php -config ldap-bind-dn="[email protected]"

指定在 Active Directory 中具有搜尋權限的用戶

./multiotp.php -config ldap-server-password="MySuperPassword"

指定連線到 Active Directory 的使用者密碼

./multiotp.php -config ldap-network-timeout=10

設定連接到 Active Directory 的逾時

./multiotp.php -config ldap-time-limit=30

我們為使用者導入操作設定了時間限制

./multiotp.php -config ldap-activated=1

啟動 Active Directory 連線配置

./multiotp.php -debug -display-log -ldap-users-sync

我們從 Active Directory 匯入用戶

步驟 3. 產生令牌的二維碼
這裡的一切都極為簡單。 在瀏覽器中開啟 OTP 伺服器的 Web 介面,登入(不要忘記更改管理員的預設密碼!),然後按一下「列印」按鈕:

前往 2FA(ASA SSL VPN 的雙重認證)
此操作的結果將是包含兩個 QR 程式碼的頁面。 我們大膽地忽略其中的第一個(儘管有吸引人的銘文 Google Authenticator / Authenticator / 2 Steps Authenticator),並且我們再次大膽地將第二個代碼掃描到手機上的軟體令牌中:

前往 2FA(ASA SSL VPN 的雙重認證)
(是的,我故意破壞了二維碼以使其無法讀取)。

完成這些操作後,您的應用程式將開始每三十秒產生一個六位數的密碼。

當然,您可以在同一介面中檢查它:

前往 2FA(ASA SSL VPN 的雙重認證)
透過在手機上的應用程式中輸入您的用戶名和一次性密碼。 您收到正面的回應了嗎? 所以我們繼續前進。

步驟 4. FreeRADIUS 操作的附加設定和測試
正如我上面提到的,multiOTP 已經配置為與 FreeRADIUS 一起使用,剩下的就是運行測試並將有關 VPN 網關的資訊添加到 FreeRADIUS 設定檔中。

我們回到伺服器控制台,到目錄 /usr/local/bin/multiotp/, 進入:

./multiotp.php -config debug=1
./multiotp.php -config display-log=1

包括更詳細的日誌記錄。

在 FreeRADIUS 用戶端設定檔中 (/etc/freeradius/clinets.conf) 註解掉所有相關行 本地 並新增兩個條目:

client localhost {
        ipaddr = 127.0.0.1
        secret          = testing321
        require_message_authenticator = no
}

- 用於測試

client 192.168.1.254/32 {
        shortname =     CiscoASA
        secret =        ConnectToRADIUSSecret
}

— 用於我們的 VPN 閘道。

重新啟動 FreeRADIUS 並嘗試登入:

radtest username 100110 localhost 1812 testing321

哪裡 用戶名 = 使用者名稱, 100110 = 手機上的應用程式提供給我們的密碼, 本地 = RADIUS 伺服器位址, 1812 — RADIUS 伺服器端口, testing321 — RADIUS 伺服器客戶端密碼(我們在設定中指定)。

該命令的輸出結果大約如下:

Sending Access-Request of id 44 to 127.0.0.1 port 1812
        User-Name = "username"
        User-Password = "100110"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1812
        Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=44, length=20

現在我們需要確保用戶已成功通過身份驗證。 為此,我們將查看 multiotp 本身的日誌:

tail /var/log/multiotp/multiotp.log

如果最後一個條目是:

2016-09-01 08:58:17     notice  username  User    OK: User username successfully logged in from 127.0.0.1
2016-09-01 08:58:17     debug           Debug   Debug: 0 OK: Token accepted from 127.0.0.1

然後一切順利,我們可以完成

步驟 5:設定 Cisco ASA
我們同意,我們已經配置了透過 SLL VPN 進行存取的群組和策略,並與 Active Directory 一起配置,並且我們需要為此設定檔添加雙重認證。

1. 新增的 AAA 伺服器群組:

前往 2FA(ASA SSL VPN 的雙重認證)
2. 將我們的 multiOTP 伺服器加入到群組中:

前往 2FA(ASA SSL VPN 的雙重認證)
3. 規則 連線設定檔,將Active Directory伺服器群組設定為主認證伺服器:

前往 2FA(ASA SSL VPN 的雙重認證)
4. 在選項卡中 高級 -> 身份驗證 我們也選擇 Active Directory 伺服器群組:

前往 2FA(ASA SSL VPN 的雙重認證)
5. 在選項卡中 高級 -> 二級 身份驗證,選擇已建立的註冊了 multiOTP 伺服器的伺服器群組。 請注意,會話使用者名稱是從主 AAA 伺服器群組繼承的:

前往 2FA(ASA SSL VPN 的雙重認證)
應用設定並

第 6 步,也就是最後一步
讓我們檢查一下雙重認證是否適用於 SLL VPN:

前往 2FA(ASA SSL VPN 的雙重認證)
瞧! 透過 Cisco AnyConnect VPN 用戶端連線時,系統也會要求您輸入第二個一次性密碼。

我希望這篇文章能夠對某人有所幫助,並且能夠給人們思考如何使用它, 免費 OTP 伺服器,用於其他任務。 如果您願意,請在評論中分享。

來源: www.habr.com

添加評論