How to Resolve vCenter Server appliance 7.x- Expired Machine SSL Certificate?

By Lerpong Intaraworrapath | 15th September 2022

When we use the vSphere Web Client to connect to vCenter Server appliance 7.x. We are unable to access with the message “HTTP Status 500 – Internal Server Error.

Steps to resolving these issues.

1.SSH into the vCenter Server appliance.

2.To see the status certificate expiration date, use the command below.
for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo STORE $i; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $i --text | egrep "Alias|Not After"; done

3.You will see an output similar to:

4.As you can see, the Machine SSL certificate expires on September 1 06:40:37 2022 GMT.

5.The Name, Hostname and VMCA values should match the PNID of the Node where you are replacing the Certificates. PNID should always match the Hostname. In order to obtain the PNID please run these commands:
/usr/lib/vmware-vmafd/bin/vmafd-cli get-pnid --server-name localhost

6.Run command below to replace “Machine SSL certificate”.
/usr/lib/vmware-vmca/bin/certificate-manager

7.You will have the option to replace or reset the certificate with in output.

Please keep in mind that this command may be used with both vCenter Server appliances 6.x and 7.x.

8.To replace Machine SSL certificate with VMCA Certificate, we choose option 3.

9.Provide credential

10.Enter these values as prompted by the VMCA (See Step 5 to confirm the Name/Hostname/VMCA):

11.To proceed, answer Yes (Y) to the confirmation request.

12.Wait till the status is 100% completed.

13.Re-run command to check Machine SSL certificate
for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo STORE $i; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $i --text | egrep "Alias|Not After"; done

14.Machine SSL certificate has been updated to August 31 12:14:11 2024 GMT.

Reference:

VMSA-2021-0028 | Workaround in vCenter Server virtual appliance (87081, 87088)

By Lerpong Intaraworrapath | January 6th, 2022

Workaround instructions to address CVE-2021-44228 and CVE-2021-45046 in vCenter Server and vCenter Cloud Gateway (87081)

ในบทความนี้ เราจะมาทำ workaround ในการแก้ปัญหา instructions to address CVE-2021-44228 and CVE-2021-45046 in vCenter Server virtual appliance 7.x, 6.7.x, 6.5.x โดยจะ followup วิธีการ จาก KB87081 และ KB87088

https://kb.vmware.com/s/article/87081?lang=en_US
https://kb.vmware.com/s/article/87088

Note: ในส่วนของ Product อื่นของ VMware และ ข้อมูล CVE-2021-44228 and CVE-2021-45046 ให้ อ่านได้จาก VMSA-2021-0028

Impact / Risks

  • ให้ทำการ remove VCHA ก่อนทำการ run script.
  • environment ที่มี external PSCs จะต้องทำการ run script ทั้ง vCenter และ PSC appliances.
  • Restore จาก File-Based Backup จะทำให้ environment กลับสู่ vulnerable. ให้ใช้ vc_log4j_mitigator.py หลังจาก restore.
  • อัปเกรด vCenter Appliance จะทำให้ environment กลายเป็น vulnerable. ให้ใช้ vc_log4j_mitigator.py หลังจาก อัปเกรด vCenter Appliance.

Resolution

Workaround ในบทความนี้เป็น Temporary solution เท่านั้น.

Completed remediation scenarios:

จะมี 3 วิธีในการทำ workaround สำหรับ vCenter server virtual appliance. ให้เลือกทำ วิธีใดวิธีหนึ่งเท่านั้น

  1. Used vc_log4j_mitigator.py from KB87081.
  2. Used vmsa-2021-0028-kb87081.py script from KB 87088 and remove_log4j_class.py from this KB87081.
  3. Used the manual workaround steps in KB87081 and remove_log4j_class.py.

Note: ในบทความนี้ จะใช้ วิธีที่ 2Used vmsa-2021-0028-kb87081.py script from KB 87088 and remove_log4j_class.py from this KB87081.
โดยจะเป็น vCenter server virtual appliance version 7.0.1.00301

Workaround

Automated Workaround (Recommended)

  1. ทำการ take snapshot “vCenter server virtual appliance”.
  2. ทำการ check disk space available by command “df-h” (capture screen ไว้ด้วย).
  3. ทำการ check vCenter server service by command “service-control –status –all” (capture screen ไว้ด้วย).
  4. Download the script attached this KB 87088 (vmsa-2021-0028-kb87081.py )

5. Login to the vCSA using an SSH Client (using Putty.exe or any similar SSH Client)

6. Login to the vCSA using an SSH Client (using Putty.exe or any similar SSH Client)

7. Transfer the file to /tmp folder on vCenter Server Appliance using WinSCP
Note: It’s necessary to enable the bash shell before WinSCP will work

8. Provide the root user name and password when prompted.

9. Run this command to enable the Bash shell:
shell.set --enable True

10. Run this command to access the Bash shell:
shell

11. In the Bash shell, run this command to change the default shell to Bash:
chsh -s /bin/bash root

12. ทำการ copy ไฟล์ vmsa-2021-0028-kb87081.py และ remove_log4j_class.py โดยใช้ WinSCP ไปเก็บไว้ที่ /tmp

13. ทำการ Login to the vCSA using an SSH Client (using Putty.exe or any similar SSH Client) แล้วเข้าไปที่ path /tmp ใช้ “ls” command ทำการตรวจสอบไฟล์ ที่เราทำการ upload เข้าไป

14. ทำการ run script vmsa-2021-0028-kb87081.py
root@xxxx[/tmp]#python vmsa-2021-0028-kb87081.py

15. พิมพ์ Y แล้วกด Enter

16. Script ก็จะทำการ run process เพื่อจะทำ workaround เกี่ยวกับ CVE-2021-44228 and CVE-2021-45046 (ใช้เวลา10 นาที โดยประมาณ).
โดย script ก็จะแสดง status ของแต่ละ process และที่สำคัญจะต้องแสดงผล “SUCCESS”
-vMON Config files
-VMware Update Manager Config files
-Analytics service Config files
-DBCC Utility Config files

17. เมื่อทำการ run script แรก เสร็จเรียบร้อยแล้วให้ เรา run script ตัวที่ 2 คือ remove_log4j_class.py from this KB87081.
root@xxxx[/tmp]#python remove_log4j_class.py

18. พิมพ์ Y แล้วกด Enter

19. Script ก็จะทำการ run process เพื่อจะทำ workaround เกี่ยวกับ CVE-2021-44228 and CVE-2021-45046 (ใช้เวลา10 นาที โดยประมาณ).โดย script ก็จะแสดง status ของแต่ละ process

Verify the changes

เมื่อเราทำการ run script ทั้ง 2 scripts completed แล้วให้เราทำ การ ตรวจสอบให้แน่ใจว่า script ที่เรา run นั้นถูกต้อง

  1. Verify if the stsd, idmd, and vMon controlled services were started with the new -Dlog4j2.formatMsgNoLookups=true parameter:
    ps auxww | grep formatMsgNoLookups

โดย จะแสดง ผล -Dlog4j2.formatMsgNoLookups=true

2. Verify the Update Manager changes are shown under “System Properties” in the output of the following two commands:
cd /usr/lib/vmware-updatemgr/bin/jetty/
java -jar start.jar --list-config
system properties:
log4j2.formatMsgNoLookups = true (/usr/lib/vmware-updatemgr/bin/jetty/start.ini)

3. Verify the Analytics Service changes:
grep -i jndilookup /usr/lib/vmware/common-jars/log4j-core-2.8.2.jar | wc -l
โดย จะแสดงค่า “0

4. Verify the script successfully removed JndiLookup.class from all java files with the following command:
python remove_log4j_class.py -r

จะได้ผลลัพธ์ ดังนี้
2021-12-18T00:04:38 INFO main: Running in dryrun mode
2021-12-18T00:05:04 INFO main:
===== Summary =====
List of vulnerable files:
2021-12-18T00:05:04 INFO main: Done.

Remark

หลังจาก เราทำการ run script เสร็จเมื่อกลับที่ vSphere client browser ของ vCenter server จะพบว่า ที่ Tab -> Monitor ในหน้า Skyline Health จะ show warning “Online health checks execution” (ถ้าไม่เจอแบบนี้ก็ไม่เป็นไร นะครับ)
!!!warning ที่แสดง จะหายไป เอง นะครับ!!!

Conclusion

ในบทความนี้จะเป็น workaround สำหรับ vCenter server virtual appliance 7.x เท่านั้น โดย fix version ยังไม่มีออกมาในส่วน version อื่น ให้ทุกท่านติดตาม VMSA-2021-0028 ในการทำ workaround หรือ fix version รวมถึง Product อื่นๆ ของ VMware ที่ได้รับผลกระทบ เช่นกัน.

SHD – Skyline Health Diagnostics

By Lerpong Intaraworrapath | November 17th ,2021

SHD – Skyline Health Diagnostics

เมื่อมีเหตุการณ์ ที่ vSphere ESXi host down การทำงาน ของ vSAN หรือ VCF มีปัญหา และเราต้องการ investigate logs system จาก vSphere ESXi host หรือ ต้องการทราบ ว่า vSphere ESXi host มี error หรือ issues อะไร บ้าง เราจะทำได้อย่างไร

Skyline Health Diagnostics จะช่วยเราในการวิเคราะห์ และแสดงผล จาก bundle logs ที่เรา อัปโหลด เข้าไปใน SHD

โดย report จะรายงานค่า error และ issues ที่เกิดขึ้นกับ vSphere ESXi host ในระบบของเรา รวมถึง vSAN VCG (VMware Compatibility Guide) ที่ช่วยเราตรวจสอบ compatibility guide, Network driver, Firmware ต่างๆ

SHD (Skyline Health Diagnostics) Overview

Existing issue resolution workflow

อันนี้จะเป็น workflow โดยทั่วไป เวลาเกิดปัญหา

  1. เมื่อพบปัญหา การทำงานของระบบ
  2. ส่วนใหญ่ ก็จะทำการค้นหาจาก Google
  3. เมื่อค้นจาก Google เราก็จะพบบทความที่หลากหลาย ที่เกี่ยวข้องกัน
  4. ใช้เวลา ในการค้นหาจนกว่าจะเจอบทความที่ใช่
  5. ถ้าปัญหา ยังไม่ถูกแก้ไข ก็จะ ติดต่อ GS (Global Support) ทำการเปิด เคส
  6. ทำงานร่วมกับ GS เพื่อแก้ปัญหา

เราจะ เห็นว่าจะ สามารถ แบ่งเป็น 3 step หลักๆ คือ

  • พบปัญหา
  • เวลาในการแก้ปัญหา
  • วิธีการแก้ปัญหา

SHD (Skyline Health Diagnostics) จะช่วยลดเวลาในการ troubleshoot ปัญหา และลดเวลาที่เราใช้ในแก้ปัญหา

VMware SHD for vSphere

Issue resolution workflow with SHD

อันนี้จะเป็น SHD workflow เวลาเกิดปัญหา จะเป็นอย่างไร

  1. เมื่อพบปัญหา การทำงานของระบบ
  2. ทำการ Run SHD จาก log bundle ที่เกี่ยวข้อง
  3. จะได้ KB ที่เกี่ยวข้องกับปัญหา ที่เกิดขึ้น และ action plan
  4. ถ้าไม่พบคำแนะนำ จากปัญหาที่เกิดขึ้นให้ติดต่อ GS (Global Support) ทำการเปิด เคส
  5. จะเร็วขึ้นในการแก้ปัญหา จาก SHD log output

ขั้นตอนการ Deploy SHD (Skyline Health Diagnostics)

  1. ทำการ download SHD (Skyline Health Diagnostics) OVA file จาก link ด้านล่าง

https://customerconnect.vmware.com/downloads/get-download?downloadGroup=SKYLINE_HD_VSPHERE

2. ทำการ เลือก OVA ไฟล์ ขนาดไฟล์ 954.96 MB (version 2.5.2), click “DOWNLOAD NOW“.

3. เมื่อทำการ download เสร็จเรียบร้อยแล้ว เราก็จะได้ไฟล์ OVA มา 1 ไฟล์

4. ทำการ connect vCenter Server เพื่อจะทำการ deploy SHD OVA ไฟล์.

5. ทำการเลือก location ที่เรา save OVA ไฟล์.

6. ทำการเลือก location และใส่ชื่อ virtual machine name (ในที่นี้ใช้ชื่อ VM-Shd), click “NEXT“.

7. ทำการเลือก Compute resource, click “NEXT“.

8. Review details, click “NEXT“.

9. Accept License agreement, click “NEXT

10. ทำการเลือก Storage, click “NEXT“.

11. ทำการเลือก Network, click “NEXT“.

12.ใส่ Password สำหรับ root account และ shd-admin account

13.ใส่ค่าต่างๆ ให้ครบ หลังจากนั้นให้ click “NEXT“.

14. Read to complete, click “FINISH“.

15.เมื่อเราทำ deploy เสร็จเรียบร้อยแล้วให้ เรา Power-on SHD VM (VM-Shd)

16.ทำรอสักพัก หลังจากนั้นให้ทำการ “Launch Web Console” เราจะ พบว่า VM-Shd จะทำการ start process เพื่อทำการ boot SHD

17. ต่อมาให้ เรา access SHD โดย เปิด browser ให้ใส่ IP address ของ SHD, login ด้วย user “shd-admin“.

18. Click NEXT for “End user license agreement” และ “Customer Experience Improvement“, click “FINISH“.

19. เราก็จะเข้ามาเจอหน้าแรกของ SHD (Skyline Diagnostics).

จากด้านซ้ายมือ เราจะเห็น menu ในการ connect system เพื่อจะทำการ download และ analyze log bundle

  1. Connect ผ่าน vSphere (vCenter Server)
  2. Connect ผ่าน vSAN-HealthCheck (vCenter Server)
  3. Connect ผ่าน VMware Cloud Foundation (SDDC)

หรือเรา สามารถ upload bundle logs มาทำการ analyze ผ่านทาง SHD (Skyline Diagnostics)

20. เราจะทำการ Analyze log bundle จาก vSphere. โดยเลือก vSphere จากด้าน เมนู ด้านซ้ายมือ หลังจากนั้นให้ เรา ใส่ รายละเอียด

  • vCenter server (FQDN or IP)
  • Username access vCenter Server
  • Password access vCenter Server

Click, “CHECK CONNECTION“.

21. ทำการ Click “RUN DIAGNOSTICS“.

22. ทำการเลือก vSphere ESXi host ที่เราต้องการจะ Analyze logs (เราสามารถเลือกได้มากกว่า 1 host), click “VALIDATE“.

23. ใส่ชื่อ Report, click “FINISH“.

24. SHD ก็จะทำ การ download Log Bundle แล้วก็ Process ตาม workflow จนกระทั่ง Finalize Workflow จนได้เป็น Report ออกมา

24. โดย Report เราสามารถ Click ดูจาก ปุ่ม “SHOW REPORT” หรือ เราจะเลือกไปที่ Show Reports tab แล้วเลือก download หรือ ให้แสดง Report ก็ได้

25. ตัวอย่าง SHD report

Conclusion

SHD (Skyline Health Diagnostics) จะเป็น Tool อีกหนึ่งตัวที่จะช่วยให้เราทำวิเคราะห์ Logs ได้ด้วยตัวเอง พร้อมทั้งมี Report ที่แสดง Log Analysis รวมถึง มี การ ตรวจสอบ vSAN VCG (VMware Compatibility Guide) ที่ช่วยเราตรวจสอบ compatibility guide, Network driver, Firmware ต่างๆใน vSphere environment ที่เราใช้งานให้ด้วย

Reference

Credit: ขอขอบคุณน้อง Nat (Napongtorn) สำหรับขั้นตอนการ run SHD

VMCO – Virtual Machine Compute Optimizer

By Lerpong Intaraworrapath | November 1st ,2021

Virtual Machine Compute Optimizer

เราจะรู้ได้อย่างไรว่า vCPU ที่เรา assign ให้กับ Virtual machine นั้น ตัว Virtual machine จะสามารถใช้งาน CPU ได้เต็มประสิทธิภาพ และได้ประสิทธิภาพที่ดีที่สุด Optimized Performance.

ยกตัวอย่าง ในการ assign vCPU ให้กับ Virtual machine เราต้องการ 4vCPUs เราสามารถ assign ได้หลายรูปแบบ เช่น

VMSocketsVMCoresPerSocketvCPUs
144
414
224

จะเห็นว่าทั้ง 3 แบบเราจะได้ 4 vCPUs เหมือนกัน !!!แต่ แบบไหนจะให้ ประสิทธิภาพ และใช้งาน vCPU จาก Physical CPU ได้เต็มประสิทธิภาพมากที่สุด

จะมี Tool หนึ่งตัวมาแนะนำ ใช้สำหรับตรวจสอบดูว่า vCPU ที่เรา assign ให้กับ Virtual machine ใน environment ของเรามีการ assign vCPU ได้ถูกต้อง และใช้งาน ได้เต็มประสิทธิภาพไหม.

VMCO – Virtual Machine Compute Optimizer

The Virtual Machine Computer Optimizer (VMCO) เป็น Powershell script และ PowerCLI module ซึ่งจะ capture ดาต้าเกี่ยวกับ vSphere ESXi host และ VMs ที่ใช้งานใน environment ซึ่งจะทำการ ส่ง report รายงานการ configured virtual machine based on การใช้งาน Host CPU และ Memory.

โดยค่าที่แสดงผลจะมี “TRUE” กับ “FALSE

  • TRUE จะ Optimized
  • FALSE จะไม่ Optimized

How to install

  1. เริ่มขั้นตอนแรกให้ ไปทำ การ download file VMCO จาก link ด้านล่าง

https://flings.vmware.com/virtual-machine-compute-optimizer

จากนั้นเราก็จะได้ไฟล์ “VirtualMachineComputeOptimizer-master-3.0.0.0.zip

2. ให้เราทำการ unzip ไฟล์ออกมา ภายใน Folder จะทั้งหมด 4 ไฟล์

3. วิธีการ ใช้งาน และ การดู report จะอยู่ในไฟล์ “Documentation – Virtual Machine Compute Optimizer.pdf” (แนะนำให้อ่าน เพื่อทำความเข้าใจเพิ่มเติม)

4. ให้เราทำการ Right-click ไฟล์ “Virtual_Machine_Compute_Optimizer_v3.0.0.ps1” แล้วทำการ เลือก “Run with PowerShell“.

5. หน้าต่าง PowerShell ก็จะปรากฏขึ้นมา โดยก็จะมีคำถาม trust script policy ของ script ที่เรา run ก็ให้เราตอบ Y หรือ A แล้วกด “Enter

6. ต่อมาก็จะเป็นแสดง path ที่เราจะทำการเก็บไฟล์ CSV location จะให้เก็บไว้ที่ไหน ถ้าไม่เป็นแปลง ก็จะเป็น path default ที่เรา run ไฟล์ PowerShell ถ้าเราไม่ต้องการเปลี่ยน ก็ให้กด “Enter

7. ตัว VMCO ก็อาจจะ require ให้เรา install module เพิ่ม

8. เมื่อทำการ Install module จนเสร็จเรียบร้อย ตัว VMCO จะให้เราใส่ vCenter server name (เราสามารถ ใส่ได้มากกว่า 1 vCenter server โดยใช้ comma หลัง vCenter server แต่ละตัว).

9. ในตัวอย่างนี้ผมจะใส่ 2 vCenter servers แล้วให้ “Enter

10. จะมีหน้าต่างให้เราใส่ credential ของ vCenter server แล้ว click “OK“.

11. VMCO ก็จะทำการ Retrieving data ของ virtual machine และ vSphere ESXi host

12. เมื่อทำการ เก็บข้อมูลเสร็จเรียบร้อย ก็จะมีข้อความ Analysis complete ตัว report ก็จะไปเก็บไว้ใน path ที่เราเลือกในข้อ 6. ให้ “Enter“.

13. ให้เราทำการ browse ไปยัง Folder ที่เก็บไฟล์ เราจะเจอไฟล์ “VMCO_Reports.csv”

14. เมื่อเราเปิดไฟล์ขึ้นมาก็จะมีรายละเอียดของ vCenter server ต่างเช่น vCenter server name, Cluster name, Hostname, etc.

15. แต่สิ่งที่เราสนใจจะเป็น Column “V” คือ “VMOptimized

16. โดยค่าใน “VMOptimized” จะมีคือ TRUE และ FALSE

  • TRUE จะค่าที่บอกว่า Virtual machine ที่เราใช้งานอยู่มีการ configured vCPU ที่ Optimized แล้ว
  • FALSE จะค่าที่บอกว่า Virtual machine ที่เราใช้งานอยู่มีการ configured vCPU ที่ยังไม่ Optimized แนะนำให้ทำการ re-configure

ยกตัวอย่าง จากรูปด้านล่าง

จากบรรทัดที่สอง ค่า vCPU ที่เราต้องการสำหรับ virtual machine คือ 2 vCPU และค่า “VMOptimized” คือ FALSE

  • Column U จะเป็นค่า vCPU ที่เราต้องการ
  • Column S, T คือค่า vCPU ที่เรา configured ไว้่
  • Column V คือค่า VMOptimized (TRUE, FALSE) ในที่นี้แสดงค่า FALSE
  • Column W, X คือค่า vCPU ที่เราจะต้อง re-configure ใหม่ให้ค่า Optimized
  • Column Y จะเป็นค่า Priority (LOW, MEDIUM, HIGH) สำหรับดูลำดับความสำคุญในการจะ re-configure virtual machine
  • Colum Z จะบอก detail ว่าทำไม vCPU ถึงไม่ Optimized Performance สาเหตุเพราะอะไร

Conclusion

VMCO จะเป็น Tool อีกหนึ่งตัวที่จะช่วยให้เราทำทราบว่า มี virtual machine ตัวไหน ใน vSphere environment ที่เราใช้งาน ที่ Optimized performance บ้าง ตัวไหนที่เราต้องทำการ ปรับ แก้ไข ให้ มี Performance ที่ดีขึ้นเพื่อให้ vCPU จากการใช้งาน Physical CPU จาก Physical server ได้เต็มประสิทธิภาพ ได้ดีที่สุด.

Reference:

Credit: ขอขอบคุณน้อง Nat (Napongtorn) สำหรับขั้นตอนการ run VMCO