Windows Server 2008 NPS雙重認證的設置方法
本文我們將探討如何通過Windows Server 2008 NPS(網絡策略服務器)為不同的遠程訪問解決方案添加雙重身份驗證以幫助企業增強訪問網絡的身份驗證。
不管是由于監管要求,還是因為靜態密碼不能提供足夠安全性的事實,越來越多的企業開始部署高強度的身份驗證以確保企業安全性。在本文中我們將探討如何通過Windows Server 2008 NPS(網絡策略服務器)為不同的遠程訪問解決方案添加雙因素身份驗證以幫助企業增強訪問網絡的身份驗證。對于雙因素身份驗證,我們將使用WiKID強認證服務器,WiKID是一款基于商業/開源軟件的雙因素身份驗證解決方案,WiKID 旨在成為令牌、證書、密碼的安全替代品。
假設你的環境中既有Windows系統又有Linux/Unix,然后你需要部署雙因素身份驗證來滿足PCI要求,你想要保護所有關鍵系統(大多數是Linux系統)并且你打算使用雙因素身份驗證(這里我們只討論SSH)鎖定遠程桌面。這就需要創建一個雙因素驗證鎖定的SSH網關服務器,然后管理就可以使用公鑰驗證從網關訪問其他服務器。
SSH為遠程管理服務器提供了一個高度安全的渠道,然而,在面對審計時,大家需要注意幾個與驗證相關的潛在問題:
◆不能控制哪些用戶擁有公鑰授權
◆不能執行(或者確定是否在使用)密碼復雜性
◆不能設置公鑰失效
另外,還需要為其他服務添加雙因素身份驗證,包括RDP和VPN等。為所有服務和不能用于其他服務的SSH密鑰設置單個雙因素認證服務是非常有效的。
概述
完成所有設置后,系統將這樣運行:用戶從他們的WiKID軟件令牌生成一個一次性密碼,并將其輸入到SSH密碼框,密碼將通過radius獲得SSH網關到NPS的驗證。然后NPS將驗證用戶在Active Directory及相關組群中是否有效,如果有效,NPS會通過radius將用戶名和一次性密碼發送給WiKID強認證服務器。如果OTP是有效的,WiKID服務器會響應NPS,然后NPS響應SSH網關,用戶將被授予訪問權限。請注意,這個過程只是驗證過程,會話管理仍然由SSH網關或者其他你在使用的遠程訪問服務來處理。
首先我們需要啟用Windows Server 2008網絡策略服務器 (NPS)
添加“網絡策略和訪問服務”角色到域控制器
在安裝過程中,啟用以下角色服務器:
◆網絡策略服務器
◆Routing & Remote Access Services路由和遠程訪問服務
◆Remote Access Service遠程訪問服務
◆Routing路由
然后我們需要添加一個新的RADIUS客戶端,本文中即SSH網關
在管理工具(Administrative Tools)中選擇網絡策略服務器
右鍵點擊Radius Clients并選擇新建
添加遠程訪問服務器(RAS、VPN等)的名稱和IP地址,并創建一個共享密碼,你將需要在WiKID服務器中輸入相同的共享密碼,點擊確認。
添加新的Radius服務器,即WiKID強認證服務器
右鍵單擊Remote RADIUS服務器并命名這個組,如“WiKID”
點擊添加按鈕來向該組添加一個新的radius服務器
在第一個選項中輸入WiKID服務器的IP地址,在第二個選項中,輸入共享密碼。
創建網絡策略
現在我們已經創建了radius客戶端和radius服務器(WiKID),下面我們需要創建一個新的網絡策略來告訴IAS哪些用戶可以代理到WiKID。
輸入名稱,將網絡訪問服務器類型保持為“未指定(Unspecified)”或者選擇遠程訪問系統
點擊Conditions選項,我為所有來自我的服務器IP地址的請求添加了一個條件。
點擊Settings Page,點擊Authentication并選擇“Forward requests to the following remote RADIUS server group for authentication(將請求轉發到以下遠程RADIUS服務器組進行驗證)”,選擇WiKID。
配置WiKID強認證服務器
現在我們已經配置了NPS來代理身份驗證,我們需要配置WiKID來接受它們,這里我們只需要為NPS添加一個radius網絡客戶端:登錄到WiKIDAdmin網絡界面,點擊網絡客戶選項,點擊“創建新網絡客戶端”,給網絡客戶端命名,指定IP地址,根據協議選擇Radius并選擇使用哪個WiKID域(WiKID域涵蓋用戶并且指定某種安全參數,如PIN長度、一次性密碼的使用時間等)。
在接下來的頁面中,輸入共享密碼,也就是上文在NPS中的密碼。確保輸入相同的密碼!!WiKID支持在網絡客戶端水平和每個用戶組水平添加radius返回屬性,不過這超出了本文的范圍。
此時會有消息提示說已經成功添加網絡客戶端,你需要從命令行重啟WiKID服務器,這會使網絡客戶端會加載到radius界面,并打開內置WiKID防火墻的radius端口。
- # wikidctl restart
#p#配置SSH網關服務器
配置SSH網關
現在我們將需要配置中央SSH網關,linux系統是導向所有生產服務器的網關/代理,它必須被嚴格鎖定,并且不能有多余的軟件或者服務器在上面運行。此外,linux系統還需要有一個處理入站連接的外部接口以及處理內部連接的內部接口。首先我們需要配置網關使用WiKID對SSH用戶進行高強度驗證。
從安裝PAM Radius開始,
下載最新版本的tar文件
運行:
- $ make
將產生的共享庫復制到/lib/security。
- $ sudo cp pam_radius_auth.so /lib/security/
編輯/etc/pam.d/sshd來允許進行Radius身份驗證
- $ sudo vi /etc/pam.d/sshd
注意:不同版本的linux有不同的pam.d文件格式。 請檢查linux的具體版本,以下說明適用于Fedora/ Redhat/Centos
轉到該文件的第一行,點擊Insert鍵或者i鍵,插入到這一行。
- auth sufficient /lib/security/pam_radius_auth.so
Sufficient標簽意味著,如果Radius身份驗證成功的話,就不再需要額外的身份驗證。然而,如果Radius驗證失敗的話,將需要來自該系統的用戶名和密碼來驗證。使用“Required”來請求強認證。
寫入文件并推出,點擊Esc鍵來推出插入模式,并輸入':wq'
編輯或創建/etc/raddb/server文件。
- vi /etc/raddb/server
下面這行:
- 127.0.0.1 secret 1
添加這一行,替代routableIPAddress:
- routableIPaddress shared_secret 1
routeableIPaddress是NPS服務器的IP地址
編輯 /etc/pam.d/sshd文件:
- #%PAM-1.0
- auth sufficient /lib/security/pam_radius_auth.so
- auth include system-auth
- account required pam_nologin.so
- account include system-auth
- password include system-auth
- session include system-auth
- session required pam_loginuid.so
添加WiKID服務器到/etc/raddb/server文件,使用WiKID服務器的外部IP地址以及在網絡客戶端創建頁面輸入的共享密碼:
- # server[:port] shared_secret timeout (s)
- 127.0.0.1 secret 1
- xxx.xxx.xxx.xx wikidserver_secret 3
這里也需要向SSH配置增加一些安全性,打開/etc/ssh/sshd_con**(不是附近的ssh_con**文件),添加這些配置選項:
- #Protocol 2,1
#檢查只有協議2被允許: Protocol 2
#禁用root登錄:
- PermitRootLogin no
#禁用沒有密碼的帳號:
- PermitEmptyPasswords no
現在網關已經設置為使用WiKID一次性密碼來進行SSH驗證,所有用戶必須注冊到WiKID服務器,沒有人可以作為root登錄。下面我們將做點小變動,讓用戶可以在網關創建自己的RSA密鑰,只要用戶在WiKID注冊后,就能創建自己的密鑰:
- class="command">ssh-keygen -t rsa
其實,這些密鑰的密碼短語是多余的,我們必須確保用戶不能訪問其他密鑰。
配置目標服務器
顯然,我們需要將這些服務器配置為僅接受來自網關的SSH請求,這可以通過限制端口22對內部地址的訪問來實現,編輯/etc/syscon**/iptables或者端口22的SSH這行:
- -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
允許WiKID軟件令牌
啟動WiKID令牌,選擇與SSH網關相關的域名,然后輸入密碼,就能獲得一次性密碼,這個密碼是有時間限制的,可以在WiKID服務器任意設置密碼的有效時間。
當SSH框彈出時用戶只需輸入一次性密碼
令牌同樣也可以從命令行運行,這對于SSH很便捷:
- java -cp jWiKID-3.1.3.jar:jwcl.jar com.wikidsystems.jw.JWcl domainid
domainid是12位域標識符
結論
很多企業都面臨著合規和監管的問題,網絡環境也變得越來越復雜和危險,同時,用戶也需要更多的遠程訪問,這些都給企業的安全部門帶來不小挑戰。
本文主要探討的是向SSH添加雙因素驗證,我們選擇Radius作為網絡驗證標準,這是個不錯的選擇。大部分VPN、遠程桌面系統、網絡服務器和其他遠程訪問服務都支持Radius,當大家在考慮添加雙因素驗證時,只需要考慮系統是否支持Radius即可,然后可以將Radius指向NPS服務器,就可以實現雙因素驗證。
【編輯推薦】