Code Section

Tuesday, July 31, 2018

VMware 小技巧 - 縮小 Workstation 的虛擬機 Virtual Disk 來釋放磁碟空間

VMware Workstation 可以安裝在 Windows 或 Linux 上,可用來建立各種作業系統的 Guest OS ,做 Lab 使用非常方便,從以前到現在的版本 14.1,一路走來應該超過 15 年有囉,算是相當老牌且執行穩定的虛擬軟體。

在使用 VMware Workstation 在 New Virtual Machine 新建虛擬機時,如果是選擇 Custom (advanced),在過程中精靈會詢問 Virtual Disk 的建立格式:

Virtual Disk 選項說明:
(勾選) ✔ Allocate all disk space now.:建立為 Thick Virtual Disk,建立速度較慢,需等待數十秒至數分鐘的建立時間。
(不勾) □ Allocate all disk space now.:建立為 Thin Virtual Disk,建立速度較快,不需等待。

Thick Virtual Disk:會一開始就取得 disk size 的磁碟空間,設定的數字是多少,就佔多大的磁碟空間。
Thin Virtual Disk:一開始先不取得磁碟空間,待 Guest OS 真的要放入資料時再向 Host 要求磁碟空間。
因為 Workstation 上的環境多半為測試性質,不需要太好的寫入效能,通常建議採用 Thin Virtual Disk 會比較恰當,可節省磁碟空間,也可以用來建立較多個 VM 及 Virtual Disk。

Store virtual disk as single file:存為單一個 VMDK。
Split virtual disk into multiple files:存成多個 VMDK,每個檔案最大為 2GB,寫滿 2GB 之後再產生一個新檔案繼續寫入。這個選項當初應該是為了 FAT32 檔案格式,單檔無法超過 2GB 而生,不過在 Win7 之後普遍是採用 NTFS 或 exFAT 格式,FAT32 已經較少使用,而且對於空間較大的磁碟,Win7 在格式化選項也會把 FAT32 藏起來,所以現在比較少會遇到這個問題。

今天來討論的是如何善用磁碟空間,讓你可以在有限空間內,建立更多個 Virtual Machine。主要是針對 Thin Virtual Disk 才會有壓縮 (Compact) 或清理 (Clean Up) 功能,Thick Virtual Disk 並不提供,因此 Thick 種類不在此次討論內。

Virtual Disk 狀態說明:
Current size:目前佔用的實際容量。
System free:存放此VM及虛擬硬碟的磁碟可用空間。
Maximum size:可存放的最大容量,也就是在建立虛擬硬碟時指定的容量。

Thin Virtual Disk 的特性,是在 Guest OS 寫入資料時,才會真實佔用 Host 的磁碟空間,但在 Guest OS 刪除資料時,並不會自動歸還 Host 的磁碟空間。所以我們的目的,就是縮小 Virtual Disk 的 Current size,讓它與 Guest OS 內存放的真實資料容量接近,以節省 Host 不必要的磁碟空間消耗。

要釋放 Thin Virtual Disk 佔用的磁碟空間有兩種方法,注意虛擬機必須是 Power Off 狀態:
(1) Defragment (重組虛擬硬碟) >>> Compact (壓縮虛擬硬碟)。
(2) VM >>> Manage >>> Clean Up Disks...,會提供使用空間 (used by this VM)及可回收空間 (Reclaimable space)資訊,確定要做按下 Clean Up now 就會開始進行。
[註1] 方法(2) 只適用 Windows Guest OS,且需安裝 VMware Tools。
[註2] 在更久之前的版本 (before VMW 8.x),VM 要在 Power On 狀態,先在 Guest OS 內做磁碟重整後,再利用 VMware Tools 來進行 Shrink disk,但這個舊方法已被淘汰,而且通常只有 Windows 才有提供磁碟重組工具。

方法(1) Defragment → Compact:

方法(2) Windows Guest OS 做 Clean Up Disks:

方法(2) Linux Guest OS 沒有 Clean Up Disks 功能:

Clean Up Disks 是在 VMware Workstation 9 之後的新功能,包括 VMware Fusion 及 VMware Player 也有提供,幾個原因推薦大家使用:
(1) 提供預估可回收空間 (Reclaimable space)這點我覺得很貼心,可以讓你判斷效果後再決定是否要做。
(2) Clean Up Disks 的壓榨效果會比 Compact & Shrink 更好,而且連同 Snapshots 也會一併壓榨。
(3) Clean Up Disks 可直接對現有 VMDK 進行處理,不需要額外磁碟空間做 Virtual Disk 的搬移運作。
(4) 稍嫌可惜的是僅適用於 Windows Guest OS。
(詳細可看<<參考資料>>的 VMware Documentatoin 說明)


<<參考資料>>
Clean Up a Virtual Hard Disk on Windows Hosts - VMware Workstation Documentation Center

How to Shrink a VMware Virtual Machine and Free Up Disk Space

幫 VMware 9 磁碟檔減肥 & 阿伯ㄚ的部落格 - lan14 # 天空部落 TIAN #

Defragmenting and shrinking VMware Workstation virtual machine disks (2019649)

Reduce the Size of Virtual Machine Disk in VMware Workstation


〈本文同步刊載於痞客邦部落格〉
VMware 小技巧 - 縮小 Workstation 的虛擬機 Virtual Disk 來釋放磁碟空間 @ 狸貓先生愛廢話講堂 :: 痞客邦 ::

Symantec 動手做 - SEP Manager 12.1.x 忘記密碼之非官方重設方法

★★!!警告!!★★
此種重設密碼的解決方式不被 Symantec 官方承認,也不鼓勵此方法,除非官方建議方法都沒辦法執行,否則請勿嘗試,若有風險請自行負責。

〔名詞說明〕
SEP = Symantec Endpoint Protection,賽門鐵克端點防毒方案。
SEPM = Symantec Endpoint Protection Manager,端點防毒的管理中心。

以往在 Symantec Endpoint Protection 12.1.1 (12.1 RU1)之前的版本,在 \Symantec Endpoint Protection Manager\Tools 安裝目錄下,有個批次檔 resetpass.bat 可以協助重設 Symantec Endpoint Protection Manager 的管理者密碼。

但 Symantec 為了加強安全性機制,在 SEP 12.1.1.1 (12.1 RU1 MP1) 之後的版本,安裝目錄內不再提供 resetpass.bat。之前討論區有人說開 Case/Ticket,Symantec Support 便會寄送 resetpass.bat 給使用者,但此方式可能僅為過度期,目前的官方說法是不提供此方法,並且使用此種方法可能會造成資料庫毀損等嚴重後果。(Symantec no longer supports the script. In versions later than 12.1 RU1 MP1 (12.1.1.1), the script may cause damage to Symantec Endpoint Protection Manager or to the database.)

Symantec 在 SEP 12.1.1.1 後的版本提供幾種方法,協助管理者在忘記密碼時,能夠重設密碼:
(1)按登入畫面的「Forgot your password?」,會透過電子郵件發送臨時密碼 (Temporary Password)給管理者。
(2)還原 SEPM 資料庫,請詳閱<<參考資料>>的 Restoring the database。
(3)重新安裝或重新設定 SEPM,請詳閱<<參考資料>>的 Reinstalling or reconfiguring Symantec Endpoint Protection Manager。

方法(1) 可查看以下檔案,確認管理者的電子郵件設定值:
檔案 \Symantec\Symantec Endpoint Protection Manager\tomcat\etc\sepm_settings.properties
設定值 adminMailReciptants=xyz@aaa.bbb

其實方法(1)是比較方便的,但如果 SEPM 的 SMTP Server 並無正確設定的話,當然臨時密碼信件是怎麼樣都無法收到的。不過方法(2)及方法(3)會較為複雜,建議需要有經驗的 SEP 管理者來做會比較妥當,當然平時的 SEPM database and policy files 備份工作也不可少,在需要用到時也會降低救援的困難度。

下圖為方法(1) Forgot your password 的操作方法。

<<非官方解法>>
★★!!警告!!★★
此種重設密碼的解決方式不被 Symantec 官方承認,也不鼓勵此方法,除非官方建議方法都沒辦法執行,否則請勿嘗試,若有風險請自行負責。

執行前確讀確認安裝目錄如下:
C:\Program Files (x86)\Symantec\Symantec Endpoint Protection Manager

將檔案放在 \Symantec Endpoint Protection Manager\Tools 下,以管理者權限執行。

在網路上找到的兩個 batch 檔都放在<<附檔收錄>>提供給需要的人下載:
(1) sepm_resetpass:舊版 SEP 12.1 的 resetpass.bat,討論區上有人說在 12.1.x 執行也有效果。
(2) sepm_dbtools-resetpass:網路上有神人從 SEPM 內的 dbtools 修改而來,<<參考資料>>內有網站連結,有朋友在 12.1.6 上執行後驗證有效。

因為我手上沒有 SEP 環境可以驗證,請大家做任何動作前請先備份系統 (或是做系統快照),以免造成無法預期後果。
執行後會將管理者密碼重設為以下資訊:
Username: admin
Password: admin

<<參考資料>>
Resetting a forgotten Symantec Endpoint Protection Manager password

Restoring the database

Reinstalling or reconfiguring Symantec Endpoint Protection Manager

How to Reset Symantec Endpoint Protection Manager Console password in SEP 12.1 | Symantec Connect Community

how to reset admin password on SEPM 12.1.x? | Symantec Connect Community

Symantec Endpoint Protection Manager 12.1 Password Reset | What Kat Did

Symantec Endpoint Protection Manager 12 admin密碼忘記且無法通過郵件重設

<<附檔收錄>>
sepm_resetpass.zip
sepm_dbtools-resetpass.zip


〈本文同步刊載於痞客邦部落格〉
Symantec 動手做 - SEP Manager 12.1.x 忘記密碼之非官方重設方法 @ 狸貓先生愛廢話講堂 :: 痞客邦 ::

Monday, July 30, 2018

Fortinet FGT 動手做 - 整合免費的 Google Authenticator 兩步驟驗證 Part 2

因此我不禁思考,FortiGate 可以採用自家產品 FortiToken 作為 OTP Token 來進行兩階段驗證,但是我們能不能改成使用 Google Authenticator 來作為我們 FortiGate 的「兩步驟驗證」工具呢?

原先我有幾個想法 (Theory):
(T-1) FortiGate 可支援透過 Radius 通訊協定,與 3rd Party 的認證設備做身份驗證的溝通。(如下圖說明)
[✖] (T1-A) Google Authentication 並未提供 Radius 的溝通方式。

下圖為 T1 的實踐方式,FortiGate 與 RSA Authentication Manager 透過 Radius 通訊協定整合,使用者輸入帳號及 Passcode 登入。
<註>登入時先查看 Token 產生的動態密碼,並將原先的密碼 (Password)與 Token 動態密碼 (Token Code)合併為 Passcode。

(T2) 利用 Radius Server 作為 FortiGate 的遠端認證主機,由 Radius Server 往外將第二道認證拋給 Google Authentication。
[✖] (T2-A1) 原本考慮 Radius Server 採用 Microsoft NPS (Network Policy Server) on Windows,視窗介面較好操作,但 NPS 不直接支援這種做法。(下段有說明原因)
[✔] (T2-A2) Radius Server 採用 FreeRADIUS on Linux,再由 FreeRADIUS 拋給 Google Authentication 作動態密碼驗證。

來說說 T2-A1 的原因,Microsoft NPS 無法自由調整設定或客制,但 NPS 能設定條件,將符合條件的往外丟給其他 Remote Radius Server 作驗證:
(1) 如同文章開頭提到的,Google Authentication 並無提供 Radius 溝通方式,所以此路不通。
(2) 有些商用的 2-Factor Authentication 設備可支援 Radius 通訊協定,同樣也有提供 App 下載可作為 Mobile Token,就可與 NPS 做到 2FA 認證整合,至於授權計費方式就不細究,因為已經背離此篇的討論方向。

所以就朝 T2-A2 的方向,在 Linux 上安裝 FreeRADIUS,加上 Google Authenticator 認證機制,用這台來當作 FortiGate 的外部 Radius Server,看是否能達到使用 Google Authenticator 作為 FortiGate 的「兩步驟驗證」工具。

首先準備好 CentOS 6.7 64-bit 環境,為什麼是這個版本呢?因為我手上剛好有之前安裝好的 VM,不需要從頭開始安裝,而且 CentOS 也很容易安裝,這邊就不贅述如何安裝 Linux 作業系統,當然你要採用更新的 CentOS 7 應該也是沒問題的。

至於如何安裝 FreeRADIUS 及 Google Authenticator Module 做到 2FA 整合呢?下一篇我會再來詳細說明。



<<參考資料>>

Fortinet FGT 動手做 - 整合免費的 Google Authenticator 兩步驟驗證 Part 1

在現在的數位生活時代,Google 服務也漸漸成為密不可分的一部分,每天都會收發信件的 GMail、存在檔案及分享給別人的 Google Drive、排定每天行程的 Google Calendar、與手機通訊錄同步的 Google Contacts、上傳照片分享相簿的 Google Photos,當然還有每天要用幾百次搜尋的 Google Search,幾乎是每天一睜開眼睛就需要 Google。我常會開玩笑說,有很多網站幾天連不上都沒關係,但是如果哪天突然連不上 Google 服務,會不知道今天排定什麼事、沒有那麼多好用的工具,要怎麼樣開始一天的工作,感覺超恐慌的。

Google 的雲端服務是如此的方便,在任何時間、任何地點、任何裝置,只需要輸入帳號和密碼登入後,就能存取你要的資料、使用你要的服務,而帳號和密碼當然就是最重要的鑰匙,保護著你的所有重要資料。雖然這樣的機制看起來似乎很安全,但其實不然,如果使用習慣不好,或是常在非個人的裝置上登入,其實帳號和密碼很容易會被有心人取得。

Google 希望盡可能提供更安全的方法來保護使用者的帳戶,在幾年前推出「兩步驟驗證」(或叫做 兩階段驗證、雙重驗證、雙因子驗證)就是一個不錯的解決方案。在啟動兩步驟驗證後,在使用者輸入帳戶和密碼後,會多加一個驗證動作,需要輸入你手機上看到的動態驗證碼,來驗證登入者是否為本人。

「兩步驟驗證」在以往智慧型手機還不普遍的時候,是採用 SMS 簡訊方式,傳送到當初註冊時所填寫的手機號碼,但使用者需自行支付簡訊傳送費用。在智慧型手機普及後,Google 開發出 Google Authenticator 的 App,安裝在 Android/iOS 手機上,經過簡單的設定之後,它就會產生你的帳號「兩步驟驗證」的隨機驗證碼,不需要額外的費用。

Google Authenticator 是一種方便又免費的「兩步驟驗證」工具,因此後來有許多雲端服務,也都陸續支援採用 Google Authenticator 作為他們的「兩步驟驗證」工具,以加強用戶的安全性,讓使用者不需要在手機上安裝多個隨機驗證碼 App,也省下自行開發及維護驗證服務的費用。

因此我不禁思考,FortiGate 可以採用自家產品 FortiToken 作為 OTP Token 來進行兩階段驗證,但是我們能不能改成使用 Google Authenticator 來作為我們 FortiGate 的「兩步驟驗證」工具呢?下一篇我們來看這個構想該要如何進行。

Tuesday, July 24, 2018

VMware 豆知識 - 虛擬環境的 Virtual Machine 組成元件有哪些

在實體的世界中,眼睛看得到的都是就是各個硬體元件,例如一台電腦,拆開之後看得到就是主機板 (包含內建的顯示卡、磁碟控制器、網路卡、音效卡…等)、處理器、記憶體、硬碟等組成元件。

而轉換到了虛擬世界,由於每台實體機器都變成了虛擬機 (Virtual Machine, VM),不論是 Host OS 型態或是 Hypervisor 型態的虛擬化,在虛擬化平台上,每個虛擬機都只是由底層執行的一個程序 (Process),所以每台虛擬機就變成了一個資料夾,裡面有著這個虛擬機的許多組成檔案,對應到實體環境所看到的各個硬體組成元件。

Host OS 型態的 Virtualization,在原來的作業系統上,執行虛擬化軟體,模擬出數個 VM。(如下圖)

Hypervisor 型態的 Virtualization,這層 Hypervisor 就是底層的作業系統,它本身具備虛擬化功能,可直接模擬出數個 VM。(如下圖)

簡單來說,實體與虛擬的常用零組件對照方式為:
(實體)處理器 CPU --> (虛擬)描述設定檔
(實體)記憶體 Memory --> (虛擬)描述設定檔
(實體)顯示卡 VGA --> (虛擬)描述設定檔
(實體)磁碟控制器 --> (虛擬)描述設定檔
(實體)網路卡 NIC --> (虛擬)描述設定檔
(實體)音效卡 Audio --> (虛擬)描述設定檔
(實體)光碟機 DVD-ROM --> (虛擬)描述設定檔
(實體)硬碟 Hard Disk --> (虛擬)虛擬硬碟檔案 Virtual Disk File
也就是虛擬機的組成元件,主體就是一個描述設定檔,以及一個或數個的虛擬硬碟檔。

談到 Virtual Machine 的各項組成元件,在 VMware vSphere/ESXi 環境下,各種的組成檔案包括 (依副檔名說明):
vmx:configuration files,虛擬硬體元件組成設定檔。
vmdk:virtual disk,虛擬硬碟。
nvram:virtual BIOS state,BIOS狀態檔。
vswp:virtual swap file,虛擬記憶體交換檔。
vmsd:snapshot infomation database,快照資訊資料庫。
vmsn:snapshot state file,快照狀態檔。
-xxxxx.vmdk、-xxxxx-delta.vmdk:delta disk,作完快照後新產生的差異硬碟。
.lck:lock file,目前被系統鎖定禁止從外部更動的檔案 (通常是在執行中會鎖定),會產生檔名對應的.lck。

一般在操作或管理時不需要瞭解這麼多,但有些元件在操作時的變動,會跟儲存空間的消耗息息相關,這就需要管理者多多注意。
佔據較多儲存空間的檔案類型有以下幾種 (通常空間消耗是 GB 等級起跳):
(1)vswp:在 Power on VM 後就會產生的檔案,與該台 VM 的 virtual memory 的大小相同。
(2)vmsn:如果 Take Snapshot 時,勾選 Snapshot the virtual machine's memory,則產生的檔案會包含該 VM 的 configuration+active state+memory,也就是說會比 virtual memory 的大小還要大一些。
(3)-xxxxx.vmdk、-xxxxx-delta.vmdk:在快照後的資料變動,都會改寫到 delta disk,如果這個 VM 的資料異動量大,就會讓 delta disk 的尺寸激升。

上述的情況 (2) 提到,在Take Snapshot 時,勾選 Snapshot the virtual machine's memory。(如下圖)

另外關於 VMware Snapshot 快照還有很多可以談的,會再另開文章來寫,敬請期待。


<<參考資料>>
What Files Make Up a Virtual Machine?

What Files Make Up a Virtual Machine in ESXi 5.5? … in VMware Workstation 10? | TechRant


〈本文同步刊載於痞客邦部落格〉
VMware 豆知識 - 虛擬世界中的 Virtual Machine 是什麼? @ 狸貓先生愛廢話講堂 :: 痞客邦 ::