2023/03/27 新調整方向

最近感覺到筆記跟文件累積到有一定的量,卻沒有辦法好好地呈現並統整起來。

從業已經有一段時間,面對非常專業的領域,學習成本是非常大的。想當初建立這裡的宗旨也是為了致敬網路前輩部落格能提供很多幫助,後續會希望這裡會變成一個工具網站,一旦想到什麼,就能來這裡獲取自己想要知道的資訊。

「降低學習成本」「文字比經驗口述更有條理,還能回顧」

使用Onenote已經有一段時間了,裡面的分類方式很成熟,編排方式也固定下來了。製作文件盡量以章節化的方式去做,最後再挑選所需要的章節合併,一旦有人問特定問題,才不會浪費時間去找。

因此接下來是以Onenote與文件章節化的撰寫原則,去重整這個部落格。

希望是能把記錄重心轉移到這個部落格上,希望可以🤔。

分類調整

Network
=> <品牌> ※Aruba、Cisco、Common、Design、Fortigate、Tool

Network<品牌>
=> <產品定位> ※Wired、Wireless、Firewall、Service

Network<品牌><產品定位>
=> <Chapter>、Config Template、TroubleShooting

事件分享

分享最近遭遇的事件,以及所使用的知識與工具。

Thunderbird使用內嵌圖片的簽名檔

因為Thunderbird簽名檔部分沒有內建HTML編輯器,因此需要先編寫好HTML再選擇成為簽名檔。以下是操作流程。 參考文章

這種方式能讓圖片被保存在簽名檔的HTML中,不用從外部路徑引用圖片。

使用Thunderbird寫信,在內容打好想要的簽名檔

檔案>另存新檔>檔案

將檔案存放至特定位置,盡量避免「桌面」或「下載」以免被刪除掉

從設定中,將帳戶的簽名檔指定為剛保存的HTML

設定>帳號設定>(想要套用簽名檔的帳號)>勾選「從檔案附加簽名」>選擇>選取剛剛儲存的HTML

測試簽名檔有沒有生效

回到主畫面,使用該帳號去寫信,簽名檔會自動顯示在下方。

以Python串Todoist的範例

官方文件

從官方文件點擊進去,可以看到右方有「Python SDK」,配合捲軸往下,可以直接對照文件與Python的對應語法。

關於自己的token取得,Todoist右上方帳戶頭像後進入設定,或應用程式直接「按O再按S」進入設定,關聯應用,開發者,API口令,複製到剪貼板。

以下是我參考官網文件延伸的函式,可以簡單地取得項目ID,取得項目中的任務,以及新增任務。

# -*- coding: utf-8 -*-

"""
官方文件
https://developer.todoist.com/rest/v2/?python#javascript-sdk
"""

from todoist_api_python.api import TodoistAPI

api = TodoistAPI(YouToken)

def getProjectByName(name):
    # 取得所有 projects 屬性
    try:
        projects = api.get_projects()
        for project in projects:
            if name == project.name:
                return project.id
            #print(project.name)
    except Exception as error:
        print(error)
        return ""

def getTaskByProjectID(api, projectID):
    try:
        tasks = api.get_tasks(project_id = projectID)
        return tasks            
    except Exception as error:
        print(error)
        return []

def addTask(api, project_id, content, description, priority, due_string, labels):
    # (project_id='1234567890', content="task name", description="task description", priority=1, due_string = "Today", labels=['label1', 'label2'])
    try:        
        task = api.add_task(project_id=project_id, content=content, description=description, priority=priority, due_string = due_string, labels=labels) # 添加任務需要有個project_id
        return task
    except Exception as error:
        print(error)
        return None

小狼毫輸入法

我的GITHUB

2023/02/11撰寫

RIME是開源的輸入法,其中「小狼毫」是在windows平臺上使用的,其可以智能提示和自動完成您要輸入的字,並學習用詞習慣與記憶,讓下次該詞就能自動出現,大大提高打字效率。

最大特色就是開源且自由,可以做到許多自定義,缺點就是,自定義的東西往往門檻很高。

相較於微軟注音,小狼毫的學習能力是讓使用時間的累積而能自動記住許多詞彙,讓使用者不必再慢慢打完所有的注音,可以讓手機一樣只打聲母就可以組合成詞彙。只要習慣了,輸入速度快速成長,可以省去打幾個字的時間,理論上可以比倉頡更快速。

因為臺灣人使用「注音」,而現有其餘輸入方案是「拼音」,因此現行並沒有適合臺灣人使用的小狼毫注音版本,於是開始自製給臺灣注音版輸入方案。

更新

2023/05/04: 新增縮寫詞,如餐點,meal,取前2後1為mel,避免跟其他詞重覆。輸入mel,可以產生候選詞「便當、炸物、…等」,需使用者自行定義。如果想要的縮寫詞在第二項如便當,輸入mel1則可以快速候選,如在第三項炒飯,輸入mel2可以快速候選

此外修改快速候選替換字母為「QWEASDZXC」為左手按Shift輕鬆到達的範圍,比起ABCDE這種更容易使用。

優化加減乘除功能。

輸入mel可以得到符合meal的候選詞,需自行定義。
輸入mel加數字,可以只候選位於mel數字-1位的候選詞

2023/04/26: 中文半形「”」,預選為英文半形「”」、不再使用pair。中文半形「|」,首選為「|」(半角)。中文半形「-」,直出「_」,(※「-」可以直接不按shift打)。添加「6347」即聲調符號「ˊˇˋ˙」為intitals。增加+-計算功能,如打「111+22+3」會候選「136」,如打「111-22+3」會候選「92」。

打「111-22+3」會候選「92」

2023/02/13: 純英可以混雜「 」、「.」、「,」、「-」,純數可以混雜「 」、「.」、「:」,純數字更方便直接輸入ip網址。八位數字會候選日期格式。

2023/02/11: 新增了相對時間快速輸入,純英或純數、個人化快捷詞。

輸入「DD」或是「DATE」,大小寫不拘,當前日期會以「yyyy/mm/dd」與「yyyymmdd」等時間格式列入候選。

做為臺灣人定製的注音輸入方案

這裡我做了版臺灣版輸入方案,藉由魔改「注音·臺灣正體」而來,以下是所有的修改:

  • 注音輸入時,如果是全英文(可混 .,-),會成為第一個候選詞。
  • 注音輸入時,如果是全數字(可混 .:),會成為第一組候選詞。
  • 輸入「DD」或是「DATE」,大小寫不拘,當前日期會以「yyyy/mm/dd」與「yyyymmdd」等時間格式列入候選。
  • 輸入「TT」或是「TIME」,大小寫不拘,當前時間會以「hh:mm」與「hh:mm:ss」等時間格式列入候選。
  • 輸入「d」加數字或是數字加d,能快速生成日期(x日)。同理「m」月,「y」年。數字為0時等於今。
  • 輸入「w」加數字能候選對應的「週幾」。如w1=週一。
  • 輸入「lw」加數字能候選對應的「上週幾」。如lw1=上週一。同理「nw」加數字會候選下週幾。
  • 輸入「ld」能候選「昨天」,同理「lm」、「ly」。輸入「nd」能候選明天,同理「nm」、「ny」。
  • 輸入「MAIL」或是「EMAIL」,大小寫不拘,會列出常用email,使用者需先自定清單
  • 輸入「name」,大小寫不拘,會列出常用名稱,使用者需先自定清單
  • 輸入「ADDR」或是「ADDRESS」,大小寫不拘,會列出常用地址,使用者需先自定清單
  • 輸入「PN」或是「PHONE」,大小寫不拘,會列出常用電話號碼,使用者需先自定清單
  • 輸入「EM」或是「EMOJI」,大小寫不拘,會列出常用emoji,用戶可自行修改清單。
  • 輸入EMOJI表情相關文字,會出現對應的EMOJI。EMOJI對應的中文絕大部分參照微軟註釋。😟=擔心。🤣=笑死。
  • 候選字字數一共九碼
  • 輸入到一半按下shift時,不會將前面已經輸入的注音轉換成英文。
  • 如果沒有啟用caps,注音輸入會直接以常用半形符號輸出。啟用caps,能看見其餘選擇。
  • 更多功能隨著時間體驗會累積上去,希望能多點臺灣人使用,加速打字效率。

上手訣竅

  1. 多練習就會了,親身感受一下。
  2. 如果要打「,」(逗號)請按「shift + <」,或是直接打「ㄝ」然後再做選擇。
  3. 如果要打「、」(分號)請按「 |」。
  4. 如果要打「。」(句號)請按「shift + >」,或是直接打「ㄡ」然後再做選擇。
  5. 如果要打「:」(冒號)請按「shift + :」,然後再做選擇。
  6. 如果要打「;」(分號)請按「shift + :」,然後再做選擇。
  7. 如果要打「「」(上引號)請按「 {」,然後再做選擇。
  8. 如果要打「」」(下引號)請按「 }」,然後再做選擇。
  9. 如果看到喜歡的候選詞在「B」,按下「shift + B」,可以直接選取。
  10. 如果想刪除候選詞※自動學習來的,可用「shift + delete」去刪除。
  11. 按「delete」可以刪除一個拼音,按「shift+delete」可以刪除一個字。
  12. 自動選詞過長的話,可用「space」去暫時截斷,避免自動選詞過長。
  13. 關於「dd」等關鍵詞,可以按著shift鍵直接輸入,或是不按著直接輸入。
  14. 如果發現輸入怪怪的,可以檢查caps是否有誤觸,平時保持關閉。
  15. 如果想要將「目前輸入」給上屏,像是注音「ㄅ ㄆ ㄇ」,按「shift+enter」。
  16. 如果想瞭解標點符號與鍵盤跟大小寫的關係,可以打開「bopomofo_tw.schema.yaml」。

學習資源

  1. 小狼毫 Rime 输入法任务导向式常用参数修改指南
  2. 小狼毫 3 分钟入门及进阶指南

同網段內有兩台以上設備進行DHCP Relay

DHCP Relay一般來說都是放在Core Switch(Gateway)身上,這麼一來,就只會有一台專門發放。

那如果兩台或以上的設備在同一VLAN下做DHCP Realy,是不是能達到備援機制?這是一個簡單的念頭,但是會不會導致一個客戶端會問到多個IP,導致DHCP Pool上多個IP被一個客戶端占用?

架構圖是以兩台L3 Switch作DHCP Relay並且都能順利路由到DHCP Server,DHCP Server也能與兩台L3 Switch通。

當PC0取得DHCP IP時,DHCP Discover會廣播到同VLAN的兩台L3 Switch,並不會因為經過的Switch有設定DHCP Relay就停止。因此DHCP Server因為收到多個DHCP Discover而連續派發多個IP, 但此時IP還不是正式的發出去。

Client收到DHCP IP後,會向Server發DHCP Request去確認,若間隔久就會先用第一個完成DHCP流程的,但間隔短到前面處理不完,反而會拿到最後一個走完DHCP流程的IP。

因此,不建議使用雙或多重Relay,DHCP Pool有限,加速浩劫而沒有IP可發會使新來的拿不到IP而沒辦法正常使用網路。

Gateway打錯而失聯,使用ARP Proxy救回。

在設定網路設備的時候,一個看走眼打錯IP、Subnet、Gateway是很正常的,導致的結果就是失聯。一般會先用同網段的IP去ping,再用不同網路的IP去ping,如果同網段ping得到,不同網段ping得到,那就是典型的「gateway問題」。

Gateway對初學者並不是馬上就能掌握的,Gateway就是同網段路由器的IP,典型設定在.254或者是.1,個人建議.254,因為DHCP可能是從前面發,所以.1可能會被衝突。萬一不是這兩種,那按照慣例的設定可能就會設錯囉。

為什麼會失聯?潛談ARP運作與封包轉送機制。

今天設備A要傳給設備B,設備A會檢查設備B的IP是否與自己是相同網段。

如果是,ARP詢問設備B的IP,設備B回應設備B的MAC,設備A以「設備B的IP加設備B的MAC為目的發送封包」。

如果不是,ARP詢問Gateway的IP,Gateway設備回應自身的MAC,設備A以「設備B的IP加Gateway的MAC為目的發送封包」,接著Gateway設備收到不是自己IP但MAC是自己的封包就會進行路由。

設備網路不一定要跟Gateway IP同網段,一旦有跨網段的需求,就會透過ARP詢問Gateway MAC,所以通常Gateway打錯,ARP就會詢問不到或是詢問到錯誤的設備,導致封包無法被轉送出去。

啟用ARP Proxy之後,如果有其他設備詢問ARP,啟用ARP Proxy設定就會查看自身的ARP是不是有紀錄,如果有就回覆自己的MAC。一般來說,不同網段會搭配不同VLAN,ARP廣播是傳送不到其他的VLAN,啟用ARP Proxy才能穿越VLAN這一限制。

在Windows系統,如果沒有打上Gateway,在跨網段的傳輸會直接找不到。

在網路設定過程中,第一個就是要確保自己的網路能通而且能被管理,這樣才能遠端解決,到近端往往很不方便。能遠端就不要近,

Openwrt 新增SMB使用者

Openwrt可以輕鬆掛載外接儲存設備,再透過Samba分享檔案給其他人,當然也希望檔案不被其他人看到,設定許可使用者,存取時就需要透過帳號密碼才能進入著。

最近發現很多時候不是從一篇搜尋到的文章就能完成,就像要限制使用者存取也找了四篇文章才完整解決掉。

從以下文章是在嘗試過程中得到幫助的,希望可以幫助減少一些試錯時間。

  1. 在圖形化介面新增Samba,《Day_25 Samba
  2. 如何新增Samba使用者,《OpenWrt 如何設置Samba 服務 – Spimet
  3. 發現新增Samba使用者之前,要先在OS新增使用者,《解決 smbpasswd 設定出現 Failed to add entry for user test 問題
  4. 發現SSH進去OS沒有adduser指令,需要安裝「shadow-useradd」,《Create new users and groups for applications or system services

Multi PreShare Key(MPSK)與Aruba CPPM實作

MPSK是個一般WPA2 Personal要提升安全性的方案。

單一個SSID,可以用不同的Key做驗證,藉此避免一般PSK的弱點,一但被人知道KEY,大家都能用,或是存取權限難以切割。

MPSK是個結合MAC Auth與PSK的方法,在安全性上會更強一點。

MPSK只維持同樣的Key,用戶不用調整設定,就能達到權限切割。因為MPSK會結合Radius Auth,所以能透過CPPM的Policy達到單一Key就能切Role,不同Role也擁有不同的存取權限。

MPSK相較於802.1X

升級到802.1x時,因為連線時須提供的資訊不同,所以不可避免要將同事的裝置全部調整,會有痛升級。但用MPSK可以無需調整再做到權限切割。

802.1x會帶入用戶訊息,因此能透過授權(Authorization)再得到相關資訊,例如部門等。但MPSK只能透過設備MAC去篩選要對應甚麼樣的Key,在MAC隨機化當道的現在,基本上只能把重點設備(如IOT)做特別的Key與權限,對於單一用戶多裝置是很難或很花心力才能區分。

MPSK的運作

設備連入SSID,因為是PSK驗證,所以需要輸入一組Key。

Network-Access Server(NAS)也就是AP或是Controller將用戶設備MAC做Radius Auth。

Radius Server(CPPM)收到內容之後,依照Policy篩選,回傳這次的Role與Key。

NAS依照從Radius Server收到的內容,去比照用戶的Key與Server回傳的Key,如果相同則認證通過,如果不同則認證失敗。

Aruba MPSK是使用Vender Specific Attribute(VSA)屬性

MPSK的運作跟PSK不同,一般PSK驗證是最前面的,如果PSK+MAC Auth,那PSK要對才會進行MAC Auth;而MPSK是先以MAC Auth取得Key,然後再對比。MPSK的功能是需要產品有支援才能使用。

IP衝突導致遠端連線不穩?靜態ARP

前幾天去客戶端上設備,習慣性用Ping掃描,結果發現已經有設備使用待上設備的IP,預期接下來會有IP衝突狀況發生。雖然反應了,不過客戶並沒有掌握那些設備資訊,認為沒有被用到,於是就果不其然的發生IP衝突。

IP衝突為什麼會導致網路斷斷續續的?因為ARP機制。

ARP是個將IP與MAC做一對一綁定,除了一開始會有廣播詢問,問到之後紀錄IP與MAC就能以單播傳送封包。

IP衝突即單一IP有兩個以上MAC出現,而ARP只能一對一綁定,因此就會出現有時候ARP對應的是A MAC,有時候是B MAC。因此單一IP目的的資料,會往存在A MAC的Port或是往存在B MAC的Port送,設備A收到給B的資料會看不懂,反之亦然,能不能順暢收發資料就是看機緣了。

IP衝突會導致兩設備遠端連線皆不穩,那就沒有辦法先「遠端連線」至其中一台改IP,所以大部分就是選擇讓要保留IP的設備下線,再把在線設備的IP更改,接著下線設備重新上線,就能錯開IP。

第二招,因為遠端連線不行,所以只好近端接線進CLI介面更改,缺點就是設備上架的位置不見得好操作,人一定要在設備旁邊,費工費時。

一般來說,對兩台設備都會有管理權,所以第一招執行起來很輕鬆。要是行不通,還能直接用第二招來停損。要是其中一台設備沒有管理權,也不能下線,另一台設備是要拿梯子爬上去接線,有沒有辦法輕鬆地改呢?

回到概念,ARP是做IP與MAC一對一綁定,甚麼IP綁定甚麼MAC是透過別台設備的ARP回應決定的,在IP衝突環境中,同IP會有兩台設備MAC回應,然後自己的ARP被影響,反覆跳。要不如就靜態指定,不要透過詢問去決定。

透過詢問後收到回應的方式記錄ARP是動態ARP,手動設定一對一為靜態ARP。

要是沒有特別需求,基本上不會做ARP設定,一旦設定將IP與MAC綁定,之後設備換IP或是換設備MAC,就會因為ARP而導致網路不通。

ARP的作用範圍只有同網段內的,因此靜態ARP要下在最後一跳的L3上面,如果同網段就下在自己身上。

LAB

先起一台設備,不斷ping 168.95.1.1,再把Aruba AP更改至相同網路IP設定,發生IP衝突現象。

因為Aruba AP跟Controller間是以tunnel溝通,因此可以看到tunnel介面反覆up/down,然後也會導致AP up/down。

開始在Controller刷指令reprovision ap,在up/down的瞬間,永遠趕不上把指令完整送到AP更改,遠端控制失敗。

如果AP與Controller同網段,可以在Controller設定靜態ARP

如果AP與Controller同網段,在Controller設定靜態ARP,過一陣子,AP就會穩定上線,這時候就能慢慢修改IP。

一旦修改好IP,記得刪掉對應的ARP。

強制門戶(Captive Portal)機制與OAuth白名單

存取網路認證這一塊有個俗稱「網頁認證」或者稱為「強制門戶」,為什麼要做強制門戶?因為這作法是不受系統平台拘束,只要有瀏覽器都就能進行身分驗證。設定簡單,使用簡單,所以是個廣泛使用的方式

根據《維基百科》,以下有三種常見的實現方式。

HTTP重定向

常見方法之一是將所有全球資訊網流量定向至網頁伺服器,同時向強制門戶返回HTTP重定向。當現代網際網路設備首次連接至網絡時,其將發出HTTP請求並期望返回HTTP 204狀態碼。若設備接收到HTTP 204狀態碼,則設備將認為自己擁有無限的網際網路訪問權限;若設備接收到HTTP 302狀態碼,則設備顯示強制門戶提示。

ICMP重定向

網關也可使用網絡層的網際網路控制消息協議重定向客戶端流量。

重定向DNS

當客戶端請求網際網路資源時,瀏覽器會查詢DNS。在強制門戶中,防火牆將確保僅有網絡DHCP伺服器提供的DNS可被未認證的客戶端使用(或將所有未認證客戶端的請求轉發至此DNS伺服器)。隨後,網絡提供的DNS伺服器將對所有的DNS查詢結果返回強制門戶頁面的IP位址。
強制門戶使用DNS劫持攻擊(與中間人攻擊類似)進行DNS重定向。為了減輕DNS投毒的影響,伺服器通常將存活時間設置為0。

最常見的就是第一種HTTP重定向,使用者可以看到瀏覽器上的url被改為強制門戶的url。這是因為收到回應來自強制門戶位置的HTTP 302狀態,HTTP 302狀態提示使用者需要進行強制門戶認證,而回應的位置也是強制門戶的URL,使用者瀏覽器就自然能切換到強制門戶網頁上。

透過開發人員工具,可以看到HTTP 302代碼
Response Headers Location為被Redirect後的URL

但在被Redirect之前,需要先有一個「HTTP請求」的動作,才能收到來自強制門戶的回應。因此只要設備一連上網路,就會先測試做個HTTP請求,來測試自己是否HTTP是不受限制的。

Windows10裝置一連上無線網路,就會DNS詢問「www.msftconnecttest.com」,然後測試自身HTTP存取權限是否受限。

因此可以知道是否當前的網路是否需要經過強制門戶才能得到網路存取權限,也就是自動跳通知提示要登入。

像Windows10是測試「www.msftconnecttest.com」,那其他平台也可能有自己的測試網址,透過DNS與錄封包可以抓到。總之,這些網址絕對不能放入白名單內,否則連線成功回傳HTTP 204,就不會觸發提示開啟瀏覽器登入與自動跳轉的功能。

如果要做強制門戶認證,那為什麼還要開其他的白名單呢?

因為要結合Oauth,我們需要連到相關網頁,例如微軟的Azure AD或是Google,帳密資訊與操作都在這些外部網站,因此勢必要開白名單才能順利完成Oauth。

白名單開太多,可能會造成提示登入與網頁跳轉功能失效,因此白名單要盡可能少開才行。

那要怎麼知道Oauth所需要開的Domain?上網搜尋相關白名單?這篇就是因為網路上找到的對應白名單不是太多就是有少,所以得好好了解到底過程中用到甚麼。

一般來說,白名單只會開放強制門戶的URL,因此就先只開放這個。設備連上線後,跳出強制門戶網頁,這時候打開「開發人員工具」,然後點入Oauth的按鈕,因為Oauth相關網頁不在白名單,過程會因此卡過。

透過開發人員工具,可以看到Oauth所有的Request URL

一個正常的網頁,上面的檔案要能正常被下載,然後到終端瀏覽器呈現。因此,在Oauth網頁檔案的Request URL,從中找到Domain,然後放入白名單內,反覆此流程,最終達到開最少白名單就能完成Oauth。

以下是測試出來的Azure AD Oauth所需要開的白名單

AzureAD_Oauth
login.microsoftonline.com
aadcdn.msftauth.net
login.live.com

Aruba Clearpass Onboard (Azure AD) OAuth

本文以Microsoft Azure Activity Directory為整合例子。

OAuth 是 Open standard Authorization 的縮寫,因為變成開放標準,所以可以整合一些社群網站,一個網站就利用取得該社群網站的資訊去註冊會員。

由於雲端化服務,要串接授權服務是透過API,利用ID與Secret去使用API得到權限,與網路傳統的本地端以帳密或是通訊埠對接差異極大。API需要先在後台創造使用權限,然後一番操作才能產生ID與Secret,再放入Clearpass的設定中。

在Aruba Support Portal中可以透過關鍵詞找到Clearpass與其他平台整合的文件,這次的參考文件是《Onboard and Cloud Identity Providers》。

所需條件:

  • Microsoft Azure
  • Clearpass
  • DNS host for Clearpass
  • Https Certificate

要整合Azure AD,首先要有個Microsoft Azure帳號,第一次註冊會送一些點數使用,但使用上不會用到收費項目,可以大膽使用。

在Microsoft Azure上的設定,請對應參考文件設定,如果順利完成,可以得到API要使用的應用程式ID與其Secret,並且在Clearpass onboard中設定完成。

使用者使用流程:

  1. 使用者設備連線到onboard設定用ssid,跳轉至設定網頁
  2. 選擇 Microsoft Azure AD,並且登入帳號密碼。(※如果非該AD內的帳號,會跳出錯誤通知)
  3. 得到Onboard連線的SSID設定檔,Windows跟MAC可以直接安裝設定檔,而Android跟iOS需要透過安裝「ClearPass QuickConnect」才能打開並執行設定檔。
  4. 使用者手動從設定用SSID切換至連線用SSID。
  5. 成功連線。

兩種SSID

第一種設定用SSID是Open的認證方法,目的是為了讓使用裝置能到指定網頁登入,並取得相關設定檔才能連上連線用的SSID。此SSID設定的需要受限制,在白名單盡量最少開放能讓各平台可以運作的Domain Name,除了基本的MS,還要開Google Play讓使用者能下載應用程式。開放太多,也會使得跳轉至登入網頁失靈。

第二種連線用SSID是透過第一種SSID下載的設定檔安裝後才能連線,設定檔裡面包含憑證,這憑證會於802.1x中以TLS協定,對Clearpass來說收到Client的憑證,會去向OSCP URL做查閱,看看該憑證是否為有效的憑證。

在CPPM中,身分驗證方法的OCSP URL要指向簽發使用者憑證的CA

因此簽發設備憑證CA的OCSP URL是很重要的,如果不是用CPPM預設的Local CA,就要記得修改才會正常。

設定流程:

  1. 設定規劃與前準備:決定兩種SSID的名稱分別為何?CPPM DNS Name?能被信任的Https Certificate?Onboard License?要用於簽發使用者憑證的CA?
  2. Microsoft Azure AD設定:請參考《Onboard and Cloud Identity Providers
  3. Clearpass設定
  4. Controller設定

Clearpass設定

首先進入Policy Manager安裝憑證。

Radius憑證以憑證要求簽名(CSR)向簽發使用者憑證用的CA做簽署,然後放回去。

Https憑證則直接匯入.pfx檔,可以順帶連根與中間CA都匯進去。若是拆開的,根與中間CA要去信任列表手動匯入。

本文是以ClearPass Onboard新增一個Root CA,名為Azure Oauth,若直接使用內建的 Local Certificate Authority也可以。

在Onboard => 配置 => 網路設定,新增一個Profile,SSID名稱為連線用的SSID名稱
在Onboard => 部署和預配 => 配置文件,新增一個Profile,在網路選擇剛剛在網路設置新增的Profile
在Onboard => 部署和預配 => 預設配置,新增一個Profile,配置文件改成上一部新增的Profile。
證書頒發機構與TLS證書頒發機構
在Web-登錄分頁,勾選「使用雲標示/社交網路憑證啟用登錄」,並且添加新身分驗證提供程序。
客戶端ID與密鑰請對照參考文件取得,端點屬性選擇「創建其他端點屬性,已將任何數組轉換為JSON」
添加按鈕html至頁角或頁眉html,Microsoft Azure AD按鈕會出現在該位置。
在Onboard客戶端,地址部分填上CPPM FQDN,按保存。此時CPPM的DNS要能解析出該名稱,否則無法按保存。
按啟動,並且保存該網頁(CPPM Onboar Device Provisioning)的URL,用於設定用SSID的Captive Portal。
在Policy Manager => 配置 => 服務模板與嚮導 ,使用「Onboard」模板。※不要點到「僅Onboard服務」。
在配置 => 服務,會多出三個關於onboard的服務
選擇 Authorization 服務 => 授權,新增 Social Login 與 Endpoint。
選擇 Authorization 服務 => 身分驗證,選擇「EAP TLS With OCSP Enabled」然後複製,改名為「EAP TLS With OCSP Enabled_v2」,並且取消選取「所需授權」。OSCP URL改為簽發使用者憑證CA的OCSP URL。

最後到 配置 => 網路 => 設備,新增Controller。

Controller設定

透過CLI連入Controller,加入以下白名單。

Azure AD白名單

netdestination microsoftazuread
name privacy.microsoft.com
name aadcdn.msauthimages.net
name passwordreset.microsoftonline.com
name passwordsleakcheck-pa.googleapis.com
name *.google.com
name aadcdn.msauth.net
name aadcdn.msftauth.net
name www.microsoft.com
name login.microsoftonline.com
name *.aadcdn.microsoftonline-p.com
name aad.portal.azure.com
!

Android白名單※需要執行google play下載QuickConnect

netdestination googleplay
name android.clients.google.com
name *.googleapis.com
name *.gvt1.com
name *.ggpht.com
name *.googleusercontent.com
name *.gstatic.com
name clients.l.google.com
name accounts.google.com
name accounts.youtube.com
name connectivitycheck.android.com
name connectivitycheck.gstatic.com
!

CPPM白名單 ※二擇一

netdestination cppm
host <cppm ip>
!
netdestination cppm-onboard-provisioning
name <cppm onboard provisioning url>
!

新增Radius CPPM。

Configuration => Authentication => Auth Servers,新增Radius Server CPPM。
Configuration => Authentication => L3 Authentication,新增Captive Portal Profile,Login Page填入CPPM Onboar Device Provisioning的url,白名單選擇這次新增的白名單,再去Server Group更改為CPPM。
依需求新增Roles,SSID open-test需要使用Captive Portal,新增一個對應名稱的Role,Show Advanced View => More => Authentication,將Captive portal profile選擇剛剛新增的Profile。
在Policies,新增logon-control與captiveportal。
Configuration => WLANs,新增設定用SSID(test-open)、Security為open、Default Role為test-open(Captive Portal Role)。
連線用SSID(test-cppm)、Security為WPA2企業、Default Role為authenticated,勾選Server-derived roles可搭配CPPM作不同角色的權限分配。
Configuration => Authentication => AAA Profiles,將連線用的SSID其Server group改為CPPM。

實際測試

連上設定用SSID之後,輸入一個不允許DNS通行(即白名單之外)的網址,網頁會被redirect到設定網頁,按下按鈕Microsoft Azure AD,進行登入。

Windows (11)

登入成功後會下載ArubaQuickConnect.exe,然後使用系統管理員權限去執行它。安裝完成後,設備會直接連線到連線用SSID。

Android (13)

在使用Microsoft Azure AD登入之後,會先詢問有沒有安裝ClearPass QuickConnect,後面的設定檔要使用該APP才能安裝。下一步會自動下載quick1x.networkconfig,使用ClearPass QucikConnect開啟。順利安裝完成後,仍需要手動切換至連線用SSID。

iPadOS (15.6~15.7) iOS (15.5)

因為自動配置的網路設定檔安全層級為WPA,並不是正確的WPA2企業,所以安裝完後無法正常使用。

在使用Microsoft Azure AD登入之後,會先下載憑證,注意!憑證下載好後一定先進設定安裝,再繼續下載配置檔跟進設定安裝配置檔。不能一次下載兩個再一口氣安裝。

Aruba Controller搭配SMTP寄信

Aruba Controller可以設定SMTP,用來寄送「訪客帳號註冊資訊」,可以寄給Guest Email跟Sponsor Email。

※SMTP並不用於寄送設備上下線告警!

客戶想要收到訪客帳戶註冊資訊,再用訪客管理員帳號註冊時就要填入Sponsor Email,而網管人員也要對mail server針對Controller做一些放行設定。

關鍵步驟

  • Controller做SMTP設定
  • SMTP做放行設定
  • 訪客帳號註冊時,需要填入Sponsor Email。

Controller做SMTP設定

設定SMTP Server與Port
勾選Send automatically at account creation time

SMTP做放行設定

一般來說很難動到客戶端的mail server,於是只好自建練習。這裡使用hMail server。

關於hMail Server的教學,可以參考此篇《3分鐘輕鬆有自己的Mail Server

在一些產品的SMTP設定中是沒有帳密輸入的,只能指定SMTP Server IP,因此得在SMTP Server針對那些設備IP取消驗證,這樣才能正常寄信。

厲害一點的,可以使用telnet寄信測試,如果寄得出去且收得到,那就沒問題了。

針對Controller IP不做驗證

訪客帳號註冊時,需要填入Sponsor Email

想要收到信,就需要填入email地址

這部分常見交給其他同仁處理,想加入訪客帳號便不再需要透過網管人員,因此網管人員想掌握所有的訪客帳號資訊,就需要強調要記得將網管人員信箱填進Sponsor Email。

功能測試

順利收信

寄信方向必須開內對內,如果想讓訪客收到,就要再開內對外。