Netscaler配置OTP

本文中將會介紹如何在Netscaler Gateway中配置多因素認證的方法。其中多因素認證的方法爲otp。
軟件版本:
Netscaler NS13.0 47.24.nc
Citrix_Virtual_Apps_and_Desktops_7_1912

關於otp
OTP的意思是一次性密碼,這是一個開源的密碼生成的算法,它可以根據時間和一個種子文件來生成一個固定的值,只要兩個設備的時間和種子文件一致,他們用otp算法算出的6位數字結果是一樣的。而且這個算法不需要聯網。
這次需要實現的是在gateway上輸入域用戶名和密碼之後,外加上這個otp的token才能登陸。
效果如下:
Netscaler配置OTP
使用起來的方法是這樣的,我們訪問ag的地址,並且在後面加入一個自定義的域名。用於註冊設備,我們會爲一個用戶

爲了完成這個效果,必須先要完成以下準備工作:
1.必須已經完成Gateway的配置

本文參考了:https://www.carlstalhood.com/native-one-time-passwords-otp-citrix-gateway-13/#changelog
配置OTP雙因素認證需要完成,
AAA Vitrual Server
對接LDAP(與域服務器對接,用於註冊OTP保存種子文件,驗證OTP是否正確)
配置nFactor Flows(OTP認證的一個過程,根據配置的策略,訪問網頁之後會顯示不同的界面,不同的界面有不同的認證過程,必須要完成上一個界面的認證才能進入下一個界面的認證,需要通過所有的界面認證才能進入SF界面。)

首先在Netscaler中配置AAA服務,AAA服務在Security-AAA處,如果AAA服務是關閉的,它的右側會有一個黃顏色感嘆號,如果這樣需要右鍵,啓用服務。
Netscaler配置OTP
先創建一個Virtual Server
Netscaler配置OTP
這裏根據圖片照配,首先是爲Authentication Virtual Server配置一個名稱,IP地址選擇Non Addressable。
Netscaler配置OTP
接下來綁證書,由於我在上面一步沒有選IP,這個vitrual server最後將會被用在AG上,所以證書用的也是AG的證書。(我的AG的證書用的就是AG的域名,不過我發現證書申請的時候可以用通配符的,也就是說你可以用*.abc.com來匹配整個域名)
Netscaler配置OTP
選擇證書並且綁定。除了證書之外,還需要配置nFactor Flows,這個配置需要先配置LDAP,所以暫時停止AAA Vitual Server的配置,先完成LDAP的配置。

NetScaler的LDAP配置的路徑是Security / AAA - Application Traffic / Policies / Authentication / Advanced Policies / Actions / Servers。
如果AG配置正確,默認應該已經有一個LDAP配置在其中了,還需要配置兩條。
Netscaler配置OTP
其中第一條存在的,是用於AG登錄時,判斷域賬號密碼是否正確。第二條被稱爲OTPRegisterDevice(實際上可以起任何名字)被用於註冊設備,在後期我們註冊設備的時候,我們會連接到域中,然後在用戶的屬性中修改一些值。實際上這個操作在用戶的屬性中添加了一個種子的值。
OTPAuth用於讀取上面註冊設備時留在域用戶屬性中的值,用於計算token碼。
這些操作需要連接到域,所以需要提供域賬號,而且其中註冊設備的LDAP策略是需要修改域的信息的,所以提供的域賬號必須要有修改域用戶信息的權限。
Netscaler配置OTP

先配置OTPRegisterDevice這條LDAP:
IP Adress填入域服務器的ip地址

下面的的Secutity Type部分我選擇的是明文傳輸,如果有可以選擇加密傳輸。這裏不做討論。
Netscaler配置OTP
再接下來Base DN部分填入的是域的ADSI,你可以在域服務器中找到這個值。

接下來的域賬號,這個域賬號要有修改域賬號屬性的權限,它的格式是<域賬號>@<域名>
右邊部分則填寫域賬號的密碼,然後測試網絡的連通性,如果你的域賬號能夠成功登陸域,那麼應該是這樣的
Netscaler配置OTP
接下來的部分這麼填
Netscaler配置OTP
Netscaler配置OTP
其中OTP Secret的部分填寫的是域賬號中的屬性的值,理論上你可以填寫任何一個屬性的值,不過這裏用的是userParameters。
後期註冊之後,我們可以進域,然後在域賬號中看到這個值。
(示例:種子放在了user1用戶的userParameters中)
Netscaler配置OTP
OTPRegisterDevice配置完畢,還有一個OTPAuth。
OTPAuth的作用是讀取域用戶的userParameters屬性,根據這個屬性中的種子生成token。
它的配置和註冊的LDAP極其像,不過有一個區別,就是在下圖的Seach Filter,這個設置告訴設備從哪個屬性值中獲取種子的值。和上面保存種子值的地方是對應的。默認應該是userParameters>=#@
Netscaler配置OTP

配置完LDAP,我們可以配置nFactor Flows了,這似乎是Netscaler13的新特性。
這次完成的目標是這樣的。

Netscaler配置OTP
這個流程解釋了設備的OTP登錄流程。這個流程中有兩個分支。第一個分支爲註冊設備的分支。第二個分支則是通過OTP登錄到SF的分支。
每一個灰框包括兩個部分,一個是schema部分,一個是policy部分。schema將會決定頁面的顯示樣式,而policy則決定驗證方法。policy可以配置多個(如圖中最左邊的那個框),Policy會有優先級,會優先匹配最高優先級的驗證方法,如果符合則轉到綠色箭頭的頁面中去。如果不匹配則會用下一個policy。

首先是最左邊的那個框,它由兩個policy,定義是這樣的,如果輸入的gateway地址包含一個指定的二級目錄,而且訪問源IP爲指定網段,則跳轉到第一個分支的網頁中去。否則跳轉到第二個分支中去。
第一個分支會要求你驗證域賬號,一旦驗證通過,則進入註冊設備的頁面。
第二個分支會要求驗證你的域賬號和OTP token,一旦驗證通過則進入sf界面。

配置方法參考:https://www.carlstalhood.com/native-one-time-passwords-otp-citrix-gateway-13/#nfactorflow

圖中從左到右,從上到下開始描述配置。第一個流程是用於分支的,我們會設置兩個分支,一個是註冊設備,一個是登陸sf。
所以我們先寫註冊設備的分支。
點擊Add Policy,並且新建一個策略。
Netscaler配置OTP
注意這個圖中的表達式。
http.req.cookie.value("NSC_TASS").eq("manageotp") && client.IP.SRC.IN_SUBNET(10.2.0.0/16)
其中包含兩個變動的部分,一個是“manageotp”,另外一個是10.2.0.0/16
Netscaler配置OTP
注意這裏goto選擇next
這個表達式代表,訪問gw網址的時候(在本次測試中,gw網址是gw.ipqn.local)如果包含二級目錄“manageotp”,並且訪問的設備ip在10.2.0.0/16網段中,那麼便從這個分支進行下去下一個Factor。否則的話繼續匹配下一個policy。
Netscaler配置OTP
接下來點擊加號按鈕添加下一個policy。
Netscaler配置OTP
Netscaler配置OTP
表達式爲true代表無論什麼情況都匹配,這樣配置也就是意味着只要不符合上一個policy的所有流量,都會走這個分支。
Netscaler配置OTP
在每一個policy右邊都有一個綠色箭頭,點擊之後就可以添加出一個新的factor。
我先敘述第一個分支的下一個factor。
第一個分支被我們定義爲註冊設備的分支,在這個分支中,需要添加schema。所以點擊Add schema
Netscaler配置OTP
Netscaler配置OTP
Netscaler配置OTP
如上圖,可以在左側選擇xml模板,並且在右邊查看網頁的效果。
根據博客中的指示,添加的是SingleAuthManageOTP.xml,這個就和普通的storefront一樣的登陸界面
Netscaler配置OTP
新建一個policy(下文中,新建policy不再截圖)
Netscaler配置OTP
Netscaler配置OTP
這裏認證的方法選擇ldap,然後就用到之前配置的ldap的配置了。
這裏action處我們選擇的是普通的用戶名、密碼的那個ldap。
然後點擊藍色的add按鈕。
然後再次添加下一個factor。
Netscaler配置OTP
添加policy。
Netscaler配置OTP
這一次選擇的是添加註冊設備的ldap。這個分支便完成了。我們敘述一下作用。首先用戶一定要是在指定的網段(一般設置成內網)並且在gw網址中輸入manageotp這個二級域名纔會進入下一個認真界面,不滿足條件或者只滿足一個的話不會進入這個分支。
這個分支接下來是要求你使用域賬號登陸,只有正確的輸入了域賬號才能進入到註冊設備的界面。
整個過程是自定義的,完全可以挑選自己選擇的認證過程。域賬號只是其中的一種,甚至可以跳過域賬號的那個過程,輸入網址之後直接進入註冊設備的階段。
甚至可以添加一個新的認證過程,整個流程可以一步一步的下去,這純粹取決於配置者在安全和方便之間的抉擇。
接下來是下一個分支。
Netscaler配置OTP
下一個分支的網頁界面應該包含用戶名、密碼和otp。根據博客的說法,選擇的是 DualAuthPushOrOTP.xml。事實上由於我的博文中沒有用到push服務。所以我們只要找到那個頁面效果是用戶名、密碼、OTP三個輸入框的xml就可以了。
Netscaler配置OTP
schema選擇好之後確定。然後在這個factor中添加policy,選擇普通的驗證的這個ldap。(這裏我也不清楚爲什麼要這麼做,不應該是這接選擇otp驗證嗎?)
Netscaler配置OTP
最後再次創建一個新的factor
Netscaler配置OTP
創建policy如下圖,此圖使用的policy決定使用的ldap驗證的方法是otp驗證。
如此整個nFactor Flow流程完成。接下來就是將這個流程綁定到aaa virtual server上。
Netscaler配置OTP
Netscaler配置OTP
接下來我們要把這個aaa server放到gateway上去。
Netscaler配置OTP
在這個頁面選擇添加按鈕
Netscaler配置OTP
下文輸入
AAA.USER.ATTRIBUTE(1)

Netscaler配置OTP
Profile配完之後,再配置Polices

Netscaler配置OTP
Netscaler配置OTP

然後進入Citrix Gateway Vitual Servers配置
選擇正確的Vitual Server
Netscaler配置OTP
policy里加一條
Netscaler配置OTP
Netscaler配置OTP
這裏選擇策略,就是前文提到的traffic policy中的otp策略
Netscaler配置OTP
下圖的界面在右側,點擊authentication profile
Netscaler配置OTP
Netscaler配置OTP
Netscaler配置OTP
這裏就算着之前配置的aaa vitrual server了。
Netscaler配置OTP
記得要在這裏點個ok
Netscaler配置OTP
還有一個“主題”,主題就是外觀,儘量把外觀設置成和sf一樣。那樣會漂亮點,實際沒啥用。
Netscaler配置OTP

接下來是在瀏覽器中的訪問。註冊的過程,應該是很容易理解的。
Netscaler配置OTP
Netscaler配置OTP
Netscaler配置OTP
Netscaler配置OTP
Netscaler配置OTP
你的手機上應該有一個支持otp的token軟件,比如身份驗證器啊之類的,這個很多,那個公司的無所謂,只要是otp就可以。
然後掃碼之後,在手機上獲取token並且驗證。
Netscaler配置OTP
這裏有時候不是一步通過的,如果不能通過需要排錯。
(排錯)
域服務中userParameters是否有值?
Netscaler和你的手機時間是否一致?(因爲otp的值取決於時間)
(排錯完畢)
註冊完就可以正常登陸gw,登陸了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章