How to Create A Self-Signed Certificate with RSA Keys 2048 bits, SHA256 Signature hash algorithm, and valid CN name on MS SQL server

ขั้นตอน (Steps)

  1. ทดสอบบน Windows 2008 r2 และ MS SQL Server 2008 R2
  2. จากโปแกรม Scan ช่องโหว่ พบช่องโหว่ดังต่อไปนี้
    • SSL Certificate Signed Using Weak Hashing Algorithm
    • SSL Certificate With Wrong Hostname
    • SSL Certificate Chain Contain RSA Keys Less Than 2048 bits

สามารถสร้าง Self-signed Certificate ได้จากบทความ

จากตัวอย่างตั้งค่า Certificate ให้ปลอดภัยดังนี้

  1. ตั้งค่า CN ให้ตรงกับชื่อ Host
  2. สำหรับการสร้าง Certificate
    • สำหรับแก้ช่องโหว่ ให้สามารถ signed ได้ด้วย Sha256 สามารถไปได้ที่ Tab Private Key/Select Hash Algorithm /Hash Algorithm/sha256 (มี hash อย่างอื่นให้เลือกด้วย เช่น MD2, MD4, MD5, หรือ SHA1 )
    • สำหรับแก้ช่องโหว่ สร้าง Certificate ให้ Private key มีขนาด size (2048 bits) สามารถแก้ไขได้ดังนี้ Tab Private Key/Key options/Key size/2048 แล้วทำเครื่องหมายถึงที่ Make private key exportable

**Copy  Certificate จาก Enrollment ไปที่ Personal และ Trusted Root Certification Authorities**

  1. เข้าไปที่ Certificate Enrollment Requests และ certificates จะพบ Certificate ใหม่ที่สร้างขึ้นมา
  2. คลิกขวาที่ Certificats สร้างใหม่จากนั้น Copy ไปวางไว้ที่ Certificates (Local Computer) ไปที่  Personal  คลิกขวา Certificates
  3. และนำไปวางที่ Certificates ของ Trusted Root Certification Authorities ด้วย


**สำหรับ MS SQL server ต้องทำเพิ่มเติมแตกต่าง IIS เล็กน้อย ดังนี้ Set Thumbprint

  1. Click ขวา cert ที่เราสร้างขึ้น (Trusted Root Certification Authority) จากนั้นไปที่แท็ป Details และ Click เลือกหัวข้อ Thumbprint ให้ Copy ค่า เก็บไว้
  2. จากนั้นแก้ไขค่าที่ Copy ให้ลบช่องว่างออกไปให้หมด
  3. คลิก  StartRun, พิมพ์ regedit, และคลิก OK
  4. ให้ไปที่
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\SuperSocketNetLib\Certificate
    

  5. นำค่าที่เราแก้ไขแล้วไปใส่ใน Certificate
  6. Restart. เครื่อง
  7. ทำการเปิด Service MSSQL server **ถ้าไม่สามารถเปิด Service ได้ให้ copy ค่า Thumbprint (ลองตรวจสอบว่าค่าใน Notepad กับใน Thumbprint ตรงกัน) และเอาไปใส่ใน Registry อีกครั้ง แล้วลอง Start MSSQL server ใหม่***
  8. ทดสอบเชื่อมต่อฐานข้อมูล
  9. และทดสอบ Scan อีกครั้งจะพบว่า ช่องโหว่หายไปดังนี้

อ้างอิง (References)

How to fix Microsoft Windows SMB NULL Session Authentication – Windows 2003

ขั้นตอน (Steps)

  1. ผล Scan ช่องโหว่ จาก Nessus เป็นดังรูป (ทดสอบบน Windows server 2003) – Microsoft Windows SMB NULL Session Authentication
  2. ตั้งค่าใน Registry ดังนี้
    HKLM\SYSTEM\CurrentControlSet\Control\LSA\RestrictAnonymous=1
    HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\restrictnullsessaccess=1
    HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\NullSessionPipes
    

  3. Restart
  4. แล้ว Scan ใหม่อีกครั้งจะไม่พบช่องโหว่ Microsoft Windows SMB NULL Session Authentication

อ้างอิง (Reference)

How to fix Microsoft Windows SMB Vulnerabilities Remote Code Execution (MS09-001) – Windows 2003

ขั้นตอน (Steps)

  1. ผล Scan ช่องโหว่ จาก Nessus เป็นดังรูป (ทดสอบบน Windows server 2003) – MS09-001: Microsoft Windows SMB Vulnerabilities Remote Code Execution (958687) (uncredentialed check)
  2. ดาวน์โหลด Patch ที่  https://www.microsoft.com/en-us/download/details.aspx?id=963
  3. Install patch ที่ดาวน์โหลดมา ดังรูป
    Windowsserver2003-KB958687-ia64-enu /norestart
    

  4. Restart
  5. เสร็จแล้วลอง Scan ด้วย Nessus อีกครั้ง จะไม่พบ  MS09-001: Microsoft Windows SMB Vulnerabilities Remote Code Execution (958687) (uncredentialed check)

อ้างอิง (References)

 

How to Enable SMB singing

 อย่างไรก็ตามการปิดช่องโหว่อาจมีผลกระทบต่อ Application ควรทดสอบใน Test Envinronment ก่อนขึ้น Production

ขั้นตอน (Steps)

  1. ผล Scan ช่องโหว่ จาก Nessus เป็นดังรูป (ทดสอบบน Windows server 2008 r2) 
  2. ไปที่ Administrative Tools และเลือก Local Security Policy ตามรูป 
  3. ไปที่รายการ
    \Security Settings\Local Policies\Security Options\
    

  4. ไปที่ Microsoft network client: Digitally sign communications (always) และเลือก Enable 
  5. ให้ Restart  และทดลอง Scan อีกครั้งจะไม่พบช่องโหว่ดังกล่าวแล้ว

อ้างอิง (References)

How to Create A Self-Signed Certificate with RSA Keys 2048 bits

ขั้นตอน (Steps)

  1. สามารถติดตั้ง Web Server ได้จากบทความ
  2. สามารถตรวจสอบได้ว่า มี Certificate  ใช้ RSA Key Length ที่มีขนาดน้อยกว่า 2048 Bits โดยใช้
    • Nessus 
    • Browser 

 


วิธี Manual

เข้าฟังก์ชันสร้าง Certificate

  1. ไปที่ start / run แล้วพิมพ์คำสั่ง
    mmc
    

  2. ไปที่ file แล้วคลิกเลือก Add/Remove Snap-in
  3. เลือก certificates แล้วคลิก add
  4. เลือก Computer Account แล้วคลิก Next 
  5. คลิก Finish
  6. เมื่อเห็นดังรูปให้คลิก Ok จะมี เมนู snap-in ขึ้นมา

สร้าง Certificates

  1. ขยาย Certificates (Local Computer) ไปที่  Personal  คลิกขวา Certificates จากนั้นเลือก All Tasks/Advanced Operations/Create Custom Request ถ้าไม่พบโฟลเดอร์ Certificates ให้ไปสร้าง Self-siged cert แบบ Default How to enable SSL on IIS 7
  2. คลิก Next 
  3. เลือก Proceed without enrollment policy และคลิก Next
  4. คลิก next
  5. คลิก Details/Properties/Next


ตั้งค่า Certificate ให้ปลอดภัย

  1. สำหรับการสร้าง Certificate ให้ Private key มีขนาด size (2048 bits) สามารถแก้ไขได้ดังนี้ Tab Private Key/Key options/Key size/2048 แล้วทำเครื่องหมายถึงที่ Make private key exportable
  2. จากนั้นคลิก  Apply/Ok
  3. คลิก Browse และตั้งชื่อ CertName.cer จากนั้นคลิก Finish
  4. เข้าไปที่ Certificate Enrollment Requests และ certificates จะพบ Certificate ใหม่ที่สร้างขึ้นมา
  5. คลิกขวาที่ Certificats สร้างใหม่จากนั้น Copy
  6. ไปวางไว้ที่ Certificates (Local Computer) ไปที่  Personal  คลิกขวา Certificates

เชื่อมต่อ Certificates

  1. เปิด IIS manager   Start-> All Programs -> Administrative Tools -> IIS manager.
  2. เลือก Default Web site ดังรูป
  3. ทางด้านขวาคลิก Bindings… ใน Actions pane. 
  4. เลือก https และ เลือก Certificate ที่เราสร้างเข้ามา 
  5. จะมี  https โผล่ขึ้นมา
  6. คลิกที่ Browser ด้านขวาที่เป็น 443 หรือเข้าที่ https://localhost/ เมื่อสามารถเข้าถึงได้ให้ตรวจสอบ Certificates จะพบว่าเป็น Key Size จะกลายเป็นขนาดที่ต้องการ

อ้างอิง (Referrences)

How to disable Weak Cipher and Protocol MS SQL server

 อย่างไรก็ตามการปิดช่องโหว่อาจมีผลกระทบต่อ Application ควรทดสอบใน Test Envinronment ก่อนขึ้น Production

ขั้นตอน (Steps)

Cipher

RC4

    1. เมื่อติดตั้ง MSSQL server โดย Default  (ทดสอบบน Windows 2008 r2 และ MS sql server 2008 r2) จะพบช่องโหว่ RC4 ตามผล Scan Nessus ดังนี้
    2. สามารถติดตามวิธีการปิด Weak Cipher (RC4) บน IIS How to Disable Weak Cipher (RC4) in IIS
    3. หรือสามารถตั้งค่าโดยใช้โปรแกรม IISCrypto 
    4. ตัวอย่างการตั้งค่า
    5. ลอง Scan จะไม่พบช่องโหว่ RC4

DES

สำหรับ Tripple DES สามารถปิดได้จากบทความ How to Disable Weak Cipher (3DES) in IIS หรือใช้โปรแกรม IISCrypto  ดังภาพข้างต้น


Protocols

SSL v2 and v3

สำหรับการปิด SSL v2 และ v3 สามารถตรวจสอบวิธีการได้จาก บทความ ***แนะนำให้เปิด Port TLS 1.0 ด้วย***

 คำเตือน; ในการปิดทั้ง SSLv2, SSLv3, TLS 1.0 และ Hashes SHA อาจมีผลทำให้ไม่สามารถใช้งาน MS SQL studio ดังรูป ควรทำการทดสอบให้แน่ใจอีกครั้ง

 

  • จากการทดสอบ – เปิด SSL v2, v3 และ TLS 1.o แต่เปิด Hashes เพียง SHA256 นอกนั้นปิดหมด บน Port SQL server (1433)  – โดยตั้งค่า บน IISCrypto พบว่าเกิด Error ตามข้างต้น ดังรูป
    • เปิด Hashes หมด (เชื่อมต่อได้) แต่ใช้ SSLv2 และ v3
    • เปิดเฉพาะ SHA256 และใช้ SSLv2 และ v3 (เชื่อมต่อไม่ได้) 
    • ปิดเฉพาะ MD5 (เชื่อมต่อได้) แต่ใช้ SSLv2 และ v3
    • ปิดเฉพาะ MD5 และ ปิด ใช้ SSLv2 และ v3 (เชื่อมต่อไม่ได้) 
    • เปิด TLS 1.0 ปิดเฉพาะ MD5 และ SHA (เชื่อมต่อไม่ได้)
  • เปิด TLS 1.0 ปิดเฉพาะ MD5 (เชื่อมต่อได้)
    • ทดสอบการตั้งค่า
    • ทดสอบช่องโหว่ใน Nessus จะพบว่า ช่องโหว่ SSLv2 และ SSL v3 หายไป

 

อ้างอิง (Reference)

How to Create A SHA-256 Self-Signed Certificate (Signature hash algorithm)

ขั้นตอน (Steps)

  1. สามารถติดตั้ง Web Server ได้จากบทความ
  2. สามารถตรวจสอบได้ว่า มี Certificate  ถูก Signed จาก Weak hashing algorithm (e.g. MD2, MD4, MD5, หรือ SHA1 – โดย Default จะถูกโดย SHA1)  โดยใช้
    • Nessus
    • sslscan

วิธี Manual

เข้าฟังก์ชันสร้าง Certificate

  1. ไปที่ start / run แล้วพิมพ์คำสั่ง
    mmc
    

  2. ไปที่ file แล้วคลิกเลือก Add/Remove Snap-in
  3. เลือก certificates แล้วคลิก add
  4. เลือก Computer Account แล้วคลิก Next 
  5. คลิก Finish
  6. เมื่อเห็นดังรูปให้คลิก Ok จะมี เมนู snap-in ขึ้นมา

สร้าง Certificates

  1. ขยาย Certificates (Local Computer) ไปที่  Personal  คลิกขวา Certificates จากนั้นเลือก All Tasks/Advanced Operations/Create Custom Request ถ้าไม่พบโฟลเดอร์ Certificates ให้ไปสร้าง Self-siged cert แบบ Default How to enable SSL on IIS 7
  2. คลิก Next 
  3. เลือก Proceed without enrollment policy และคลิก Next
  4. คลิก next 
  5. คลิก Details/Properties/Next

ตั้งค่า Certificate ให้ปลอดภัย

  1. สำหรับการสร้าง Certificate ให้สามารถ signed ได้ด้วย Sha256 สามารถไปได้ที่ Tab Private Key/Select Hash Algorithm /Hash Algorithm/sha256 (มี hash อย่างอื่นให้เลือกด้วย เช่น MD2, MD4, MD5, หรือ SHA1 )
  2. จากนั้นคลิก  Apply/Ok
  3. คลิก Browse และตั้งชื่อ CertName.cer จากนั้นคลิก Finish
  4. เข้าไปที่ Certificate Enrollment Requests และ certificates จะพบ Certificate ใหม่ที่สร้างขึ้นมา
  5. คลิกขวาที่ Certificats สร้างใหม่จากนั้น Copy
  6. ไปวางไว้ที่ Certificates (Local Computer) ไปที่  Personal  คลิกขวา Certificates
  7. ตรวจสอบให้แน่ใจว่า ที่ Register เปิดเฉพาะ RSA256 เท่านั้น ส่วนที่ Weak เช่น MD2, MD4, MD5, หรือ SHA1 ถูกปิด ดังนี้
  8. คลิก  StartRun, พิมพ์ regedit, และคลิก OK
  9. ให้ไปที่
    HKey_Local_Machine\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\Hashes
    
  10. แล้วเปลี่ยนค่า SHA256 เป็น Enable (ffffffff) ดังรูป
  11. แล้วเปลี่ยนค่าอื่น เช่น MD5 และ SHA เป็น Disable (0)

 

 


เชื่อมต่อ Certificates

  1. เปิด IIS manager   Start-> All Programs -> Administrative Tools -> IIS manager.
  2. เลือก Default Web site ดังรูป
  3. ทางด้านขวาคลิก Bindings… ใน Actions pane. 
  4. เลือก https และ เลือก Certificate ที่เราสร้างเข้ามา 
  5. จะมี  https โผล่ขึ้นมา
  6. คลิกที่ Browser ด้านขวาที่เป็น 443 หรือเข้าที่ https://localhost/ เมื่อสามารถเข้าถึงได้ให้ตรวจสอบ Certificates จะพบว่าเป็น Signature hash algorithm จะเป็น

 

อ้างอิง (Referrences)