Palo Alto Global Protect VPN 2FA 使用 Duo 雙因子 認證

內容目錄

前言

最近弄Palo Alto Firewall產品比較多

研究各種Lab來看哪些可以賣錢的

當然居家辦公成為趨勢時研究VPN的各種功能就會是必須考量的一點

其中一種是自動連接VPN後的雙因子認證

多一層保障不讓攻擊者能夠直接使用

那雙因子產生token的方法主要有三種

  1. Token Server
  2. Hardware Token
  3. Software Token

第一個Token Server架站的流程較複雜

我一開始就不考慮

而第二的Hardware雖然同事那邊有小型的token maker

但那需要跟實體機器對接所以沒機器可以測試

固然就直接選擇第三種Software Token

類似Google Authenticator的App產生OTP或者點擊確認使用者登入

在Palo Alto內研究雙因子時一開始看到Multi Factor Authentication Server Profile裡面只有四種Vendor

  1. Duo v2
  2. Okta Adaptive
  3. PingID
  4. RSA SecurID Access

以為只有這四種雙因子App能用

但MFA顧名思義是好幾種App同時認證時才會需要設定的Profile

這在當我測試Duo時才了解到

所以本篇是按照Duo官方Guide來建制的

Duo 官方 Guide for Palo Alto Global Protect

架構

我測試時有四個角色

  1. Palo Alto: 啟用Global Protect
  2. Microsoft Active Directory: 存放Global Protect Users, 使用LDAP\RADIUS Authentication
  3. Red Hat Linux: 當作Duo Application的Proxy
  4. Duo Application: 認證Global Protect的Users

Duo 設定SSL VPN 應用程式

首先你需要到Cisco Duo官方網站註冊帳號

Cisco Duo

以及手機需要先安裝好Duo Application

當你把帳號註冊完後會需要使用手機進行Duo Push來進行驗證

接著到左邊Tab裡面找到Application

按下Protect an Application

搜尋SSL VPN

並且按下Protect

便會新增一個Protect Application

其中最重要的就是Details裡面的三個內容

後續在架設Duo Proxy Server會使用到

Duo 新增2FA驗證者

驗證時必須要有Users的帳號

首先進到Users Tab按下Add User

而Username並需要跟AD裡面的User同名

Username只能小寫

這點要注意

新增完後會出現該User的內容

輸入信箱後按下Save

使用信箱進行驗證

就可以到信箱內按認證信件

建議是使用Mobile phone

輸入自己的電話號碼

第一次註冊的使用者要使用Duo App掃描

但我這隻已經是第五隻User

所以是用寄件簡訊驗證的

進行最後確認

最後註冊成功會顯示

註冊成功後回到Duo User頁面

重新整理一次往下到Recently Activity可以看到註冊的資訊

到這裡為止Duo就設定完成了

接下來要設定Duo Proxy Server

Duo設定驗證中介伺服器

我使用Red Hat 7.2當作Duo Proxy Server

首先按照Guide來看

要先安裝libffi-devel, perl, zlib-devel等套件

yum install gcc make libffi-devel perl zlib-devel diffutils

接著要取得Duo Authentication Proxy的壓縮檔

wget <https://dl.duosecurity.com/duoauthproxy-latest-src.tgz>

到該壓縮檔的位置下解壓縮

tar xzf duoauthproxy-latest-src.tgz

接著到source的位置下

cd duoauthproxy-version-src

然後進行一次編檔

make

要把設定檔都調成符合我們自己的系統

編檔完後到build

cd duoauthproxy-build

接著就可以安裝Duo Auth Proxy

./install

如果成功後就可以開始設定Duo Proxy Server的參數

修改中介伺服器設定檔

安裝好Duo Authentication Proxy後

我的系統是Linux

所以我的config檔是存放在

/opt/duoauthproxy/conf/authproxy.cfg

對該config檔進行編輯

Proxy的職責就是PA來進行認證時跟AD還有Duo APP進行溝通的橋樑

所以config檔內要填寫AD的資訊以及Duo Admin的資訊

按照我的架構圖

我的config如下

[ad_client]
host=192.168.88.101
service_account_username=administrator
service_account_password=password1
;search_dn是填寫你AD主機的Base DN
search_dn=DC=AD,DC=lab

;以下三列是剛才在Duo內SSL VPN的Details
ikey=DIXXXXXXXXXXXXXXXXXX 
skey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
api_host=api-XXXXXXXX.duosecurity.com 
;radius_ip_1是填PA端對向AD時使用的腳位,我是使用管理port在跟AD溝通的 
;所以我是填PA管理port的IP
radius_ip_1=5.6.7.8
;secret是填radius server profile裡面的secret 
radius_secret_1=radiussecret1 
client=ad_client 
port=1812 
failmode=safe 
client_ip_attr=paloalto

在啟動Duo Proxy之前要先把防火牆關閉

以免Linux把LDAP port 389或者RADIUS port 1812某些擋掉

因為要一直當作Duo Proxy

不想要每次都停掉Firewall

所以直接使用disable

disable firewalld

停掉之後查看一下Firewalld的狀態

是否已經關閉

systemctl status firewalld

接著我們就可以開始啟動Duo Auth Proxy Service

/opt/duoauthproxy/bin/authproxyctl start

安裝好之後當下似乎已經啟動過

所以我們更改好config檔之後應該是使用restart

/opt/duoauthproxy/bin/authproxyctl restart

若啟動時沒有問題的話啟動log應該都會是綠色的

透過status可以檢查目前有沒有啟動

/opt/duoauthproxy/bin/authproxyctl status

若啟動成功的話到這裡Duo Proxy Server就架設完成

接著要到Palo Alto內設定好Duo RADIUS Server Profile以及Duo Authentication Profile

Palo Alto 設定 Duo 中介伺服器資訊

首要要新增一個Duo RADIUS Server Profile

RADIUS Server指向Duo Proxy Server

Secret是剛才Duo Proxy Config裡面的Secret

到Device→Server Profile→RADIUS新增

以及需要新增Authentication Profile跟Duo RADIUS做認證

用來給Global Protect Portal跟Gateway

到Device→Authentication Profile新增

到Network→Global Protect→Portal→<你的GP Portal Profile>→Authentication

以及Network→Global Protect→Gateway→<你的GP Gateway Profile>→Authentication

都將Authentication Profile調成Duo

Palo Alto 底層 抓取 IP

讓Duo Proxy去抓AD以及Duo Application的資訊

進到PA底層下這個指令

set authentication radius-vsa-on client-source-ip

微軟AD新增Duo 中介伺服器資訊

RADIUS Client需要把Duo Proxy加進來

這裡的共用密碼也要跟Duo Proxy以及PA的Secret一樣

驗證

最後就是進行驗證

直接在PC端登入Global Protect

查看Duo App有沒有跳出允許頁面

如果成功的話PA以及Duo Application裡面都會有Log

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。