Tag: poodle

  • วิธีการปิดช่องโหว่ Logjam,Freak,Poodle,Beast สำหรับ Lighttpd Web Server (Ubuntu 14.04 LTS)

    “จะทำอย่างไรทีดีกับช่องโหว่ SSL เยอะซะเหลือเกิน ปิดใช้แต่ TLS ก็ได้นิ นั่นสินะ”

    • อย่างที่ข้างบนกล่าวไว้ครับวิธีการปิดช่องโหว่นี้ทำง่าย ๆ แค่ปิด SSLv2 SSLv3 และปิด Cipher Suite ที่ไม่ปลอดภัยเพิ่มเติม
    • ก่อนที่จะทำการปิดช่องโหว่ลองทดสอบ test ความปลอดภัย ที่ website https://ssltest.psu.ac.th/server ก็จะได้ดังรูปตัวอย่างนี้ (จะเห็นได้ว่ามีช่องโหว่หลายตัว)

    2015-11-11_134128

    • วิธีการปิด SSL ทำได้โดยแก้ไขไฟล์ /etc/lighttpd/conf-enabled/10-ssl.conf ดังนี้
      sudo vim /etc/lighttpd/conf-enabled/10-ssl.conf
    • ทำการแก้ไขไฟล์โดยทำการเพิ่มท้าย ๆ ไฟล์ ก่อนปิดวงเล็บดังนี้ (อย่าลืม comment cipher-list เดิมทิ้งก่อนนะครับ)
      ssl.use-compression = "disable"
      ssl.use-sslv2 = "disable"
      ssl.use-sslv3 = "disable"
      ssl.cipher-list = "EECDH+AESGCM:EDH+AESGCM:AES128+EECDH:AES128+EDH"
    • จากนั้นทำการ Restart Lighttpd Server ตามปกติ
      sudo /etc/init.d/lighttpd restart
    • ทำการทดสอบ test ความปลอดภัย ที่ website https://ssltest.psu.ac.th/server อีกครั้งก็ได้ดังรูป

    2015-11-11_140552

    • เป็นอันว่าเรียบร้อยครับ (เรื่อง Grade ไม่ต้อง Serious นะครับ ผมถือว่าเขียวหมดก็ถือว่าปลอดภัยแล้วครับ
    • สามารถอ่านวิธีแก้ไขช่องโหว่เพิ่มเติมได้ที่นี่ครับ
      http://sysadmin.psu.ac.th/2015/11/10/serversecuritypatch
  • วิธีการปิดช่องโหว่ Logjam,Freak,Poodle,Beast สำหรับ Apache Web Server (Ubuntu 14.04 LTS)

    “จะทำอย่างไรทีดีกับช่องโหว่ SSL เยอะซะเหลือเกิน ปิดใช้แต่ TLS ก็ได้นิ นั่นสินะ”

    • อย่างที่ข้างบนกล่าวไว้ครับวิธีการปิดช่องโหว่นี้ทำง่าย ๆ แค่ปิด SSLv2 SSLv3 และปิด Cipher Suite ที่ไม่ปลอดภัยเพิ่มเติม
    • ก่อนที่จะทำการปิดช่องโหว่ลองทดสอบ test ความปลอดภัย ที่ website https://ssltest.psu.ac.th/server ก็จะได้ดังรูปตัวอย่างนี้ (จะเห็นได้ว่ามีช่องโหว่หลายตัว)

    2015-11-11_131008

    • วิธีการปิด SSL ทำได้โดยแก้ไขไฟล์  /etc/apache2/mods-enabled/ssl.conf ดังนี้
      sudo vim /etc/apache2/mods-enabled/ssl.conf
    • ทำการแก้ไขไฟล์ดังนี้ (จะ Comment SSLCipherSuite กับ SSLProtocol แล้วเพิ่มตรงท้าย ๆ ก่อน tag ปิด </IfModule> ก็ได้ครับ)
      SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
      SSLHonorCipherOrder on
      SSLProtocol all -SSLv3 -SSLv2
      SSLCompression off
    • จากนั้นทำการ Restart Apache Server ตามปกติ
      sudo /etc/init.d/apache2 restart
    • ทำการทดสอบ test ความปลอดภัย ที่ website https://ssltest.psu.ac.th/server อีกครั้งก็ได้ดังรูป

    2015-11-11_132628

    • เป็นอันว่าเรียบร้อยครับ
    • ถ้าใครต้องการให้ได้คะแนนถึง A+ ให้ทำเพิ่มตามลิงก์ของคุณเกรียงไกรดังนี้ครับ (อ่านเฉพาะส่วนของการปรับ Header นะครับ)
      https://sysadmin.psu.ac.th/2014/12/18/เปลี่ยน-certificate
  • วิธีการปิดช่องโหว่ Logjam,Freak,Poodle,Beast สำหรับ Windows Server 2008 / 2008 R2 / 2012 / 2012 R2

    “จะทำอย่างไรทีดีกับช่องโหว่ SSL เยอะซะเหลือเกิน ปิดใช้แต่ TLS ก็ได้นิ นั่นสินะ”

    • อย่างที่ข้างบนกล่าวไว้ครับวิธีการปิดช่องโหว่นี้ทำง่าย ๆ แค่ปิด SSLv2 SSLv3 และปิด Cipher Suite ที่ไม่ปลอดภัยเพิ่มเติม
    • ก่อนที่จะทำการปิดช่องโหว่ลองทดสอบ test ความปลอดภัย ที่ website https://ssltest.psu.ac.th/server ก็จะได้ดังรูปตัวอย่างนี้ (จะเห็นได้ว่า Grade ร้ายแรงมาก)

    2015-11-11_104537

    2015-11-11_054809 2015-11-11_054929

    • จากนั้นทำการ Reboot อีกครั้ง
    • ทำการทดสอบ test ความปลอดภัย ที่ website https://ssltest.psu.ac.th/server อีกครั้งก็ได้ดังรูป

    2015-11-11_112904

  • วิธีการปิดช่องโหว่ Logjam,Freak,Poodle,Beast สำหรับ Windows Server 2003 R2

    “จะทำอย่างไรทีดีกับช่องโหว่ SSL เยอะซะเหลือเกิน ปิดใช้แต่ TLS ก็ได้นิ นั่นสินะ”

    • อย่างที่ข้างบนกล่าวไว้ครับวิธีการปิดช่องโหว่นี้ทำง่าย ๆ แค่ปิด SSLv2 SSLv3 และปิด Cipher Suite ที่ไม่ปลอดภัยเพิ่มเติม
    • แต่สำหรับ Windows Server 2003 เนื่องจากไม่รองรับ Cipher Suite ที่ปลอดภัยบางตัว จึงต้องทำการรัน hotfix ก่อน โดยสามารถโหลดได้ที่นี่ (อย่าลืมเลือกให้ตรง platform x86 x64 นะครับ)
      https://support.microsoft.com/en-us/kb/948963
    • ก่อนจะรัน hotfix ลองทดสอบ test ความปลอดภัย ที่ website https://ssltest.psu.ac.th/server ก็จะได้ดังรูปตัวอย่างนี้ (จะเห็นได้ว่า Grade ร้ายแรงมาก)

    2015-11-11_053418

    • เมื่อโหลดไฟล์เรียบร้อยแล้วทำการแตก zip และ run ด้วยสิทธิ์ administrator ดังรูป

    2015-11-11_0537382015-11-11_053830

    • หลังจากนั้นเลือก Finish และทำการ Restart เครื่อง
    • จากนั้นทำการโหลดโปรแกรมจาก web https://www.nartac.com ดังนี้
      https://www.nartac.com/Downloads/IISCrypto/IISCrypto.exe
    • จากนั้นรันโปรแกรมดังรูป

    2015-11-11_054809 2015-11-11_054929

    • จากนั้นทำการ Reboot อีกครั้ง
    • ทำการทดสอบ test ความปลอดภัย ที่ website https://ssltest.psu.ac.th/server อีกครั้งก็ได้ดังรูป

    2015-11-11_055801

    • จะเห็นได้ว่ายังได้ Grade F (จริง ๆ ถ้าเป็น Windows 2008 R2 ขึ้นไปจะได้ A เนื่องจากรองรับ TLS 1.2) เนื่องจากช่องโหว่ POODLE(TLS) ไม่สามารถแก้ได้ เพราะจะแก้ได้ต้องปิด TLS 1.0 ใช้ TLS 1.2 ขึ้นไป ซึ่งจะ Windows 2003 และ Windows 2008 (ไม่มี R2) รองรับได้แค่ TLS 1.0 จึงแนะนำให้รีบเปลี่ยน Windows Server OS เป็น Windows 2008 R2 ขึ้นไปเพื่อความปลอดภัย

    2015-11-11_065251

    • จากรูปข้างบนซึ่งเป็น Windows 2003 เช่นกัน “สันนิษฐานว่า” อาจเพราะว่า เครื่องนี้ได้ Windows Update จึงทำให้ไม่มีช่องโหว่ ถ้า Update ถึงระดับนึง ทาง Microsoft น่าจะปิดช่องโหว่ POODLE (TLS) เรียบร้อยแล้ว
    • ต้องแยกกันนะครับระหว่างเปิด TLS 1.0 กับ มีช่องโหว่ เพราะมีอีกหลายปัจจัย เพราะ TLS เป็นแค่ Protocol แต่กระบวนการที่เหลือทั้งวิธีการเข้ารหัส วิธีการแลกเปลี่ยน Key เป็นปัจจัยหนี่งของช่องโหว่ รวมถึงช่องโหว่จากบริการในเครื่องที่ใช้ TLS 1.0 ในการรับส่งข้อมูล แต่ถ้าปิด Protocol ตั้งแต่ต้นก็จะมั่นใจได้มากกว่า เพราะไม่แน่ว่าอนาคตอาจมีช่องโหว่เกี่ยวกับ TLS 1.0 ออกมาอีก
    • แต่การปิด TLS 1.0 จะกระทบกับ Browser ค่อนข้างมาก โดยเฉพาะ window xp,vista
    • อ่านเพิ่มเติมได้ที่นี่ครับ
      https://www.blognone.com/node/63653
      https://en.wikipedia.org/wiki/Template:TLS/SSL_support_history_of_web_browsers
    • สามารถอ่านวิธีแก้ไขช่องโหว่เพิ่มเติมได้ที่นี่ครับ
      http://sysadmin.psu.ac.th/2015/11/10/serversecuritypatch
  • เปลี่ยน Certificate!?

    เนื่อง Certificate *.psu.ac.th จาก Comodo เดิมซึ่งกลายเป็น Cert. ที่จัดว่า WEAK แล้ว ทางเจ้าหน้าที่เครือข่ายจึงได้ขอ Cert. ใหม่มา ที่ Strong ขึ้น 🙂 ก็ต้องมานั่งเปลี่ยน Cert. ในเครื่องที่ให้บริการขั้นตอนดังนี้

    • Download Cert. ใหม่มาซึ่งต้องติดต่อขอไปที่ Net@dmin โดยผ่านช่องทางของ help.psu.ac.th
    • ไฟล์ที่จะโหลดมาใช้งานมีทั้งหมด 3 ไฟล์ได้แก่ STAR_psu_ac_th.ca-bundle, STAR_psu_ac_th.crt และ STAR_psu_ac_th_key.key เมื่อดาวน์โหลดมาเสร็จแล้วให้เอาไปแทนที่เก่าได้เลย ในตัวอย่างนี้จะเก็บไว้ที่ /etc/ssl/private
    • ทีนี้ มาดู config เก่าของ apache2

    <IfModule mod_ssl.c>
    <VirtualHost *:443>
    ServerName bahamut.psu.ac.th
    ServerAdmin cc-server-admin@group.psu.ac.th
    DocumentRoot "/var/www/html"
    ErrorLog ${APACHE_LOG_DIR}/bahamut.ssl_error_log
    TransferLog ${APACHE_LOG_DIR}/bahamut.ssl_access_log
    LogLevel warn

    SSLEngine on
    SSLCertificateFile /etc/ssl/private/STAR_psu_ac_th.crt
    SSLCertificateKeyFile /etc/ssl/private/STAR_psu_ac_th.key
    SSLCertificateChainFile /etc/ssl/private/STAR_psu_ac_th.ca-bundle

    RewriteEngine On
    RewriteRule /avl https://licensing.psu.ac.th

    <Directory /var/www/licensing>
    AllowOverride All
    Order deny,allow
    Deny from all
    Allow from 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
    </Directory>
    </VirtualHost>
    </IfModule>

      • จะเห็นว่าไฟล์ชื่อไม่ตรงอยู่ไฟล์หนึ่งคือ STAR_psu_ac_th.key ก็เปลี่ยนชื่อให้ตรง เป็นอันเสร็จ
      • แต่ … เนื่องจากเป็น Cert. ใหม่ เพื่อเพิ่มความแข็งแรง เจ้าหน้าที่เครือข่ายจึงได้กำหนด Passphrase ไว้ด้วย ต้องแก้ไขแฟ้ม /etc/apache2/mods-enabled/ssl.conf ในบรรทัดที่เขียนว่า SSLPassPhraseDialog exec:/usr/share/apache2/ask-for-passphrase ให้แก้ /usr/share/apache2/ask-for-passphrase เป็น /etc/ssl/private/passphrase-script แล้วสร้างแฟ้ม /etc/ssl/private/passphrase-script มีข้อความว่า

    #!/bin/sh
    echo "passphrase ที่ได้รับแจ้งจาก Net@dmin"

      • chmod +x /etc/ssl/private/passphrase-script และทดสอบ script ด้วยว่าผลลัพธ์ที่ได้ตรงกับ passphrase ที่ Net@dmin แจ้งมา
      • restart apache2 ด้วยคำสั่ง sudo service apache2 restart ถ้า passphrase ที่ใส่ไว้ในแฟ้ม passphrase-script ถูกต้องจะ restart สำเร็จ
      • เป็นอันเสร็จ

    สิ่งที่ต้องแก้เพื่อให้ได้ A+ ในการทดสอบกับเว็บ https://www.ssllabs.com/ssltest/analyze.html

    • แก้ไขแฟ้ม /etc/apache2/mods-enabled/ssl.conf โดยแก้ไข/เพิ่ม ข้อความดังต่อไปนี้

    SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:
    RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
    SSLHonorCipherOrder on
    SSLProtocol all -SSLv3 -SSLv2
    SSLCompression off

    • sudo a2enmod headers เพื่อให้ module headers ของ apache2 ทำงาน
    • แก้ไขแฟ้มของไซต์ที่เปิด ssl ไว้ จากตัวอย่างนี้คือ /etc/apache2/sites-enabled/licensing-ssl.conf โดยเพิ่มข้อความว่า
      Header add Strict-Transport-Security "max-age=15768000;includeSubDomains"
    • ตัวอย่าง

    <IfModule mod_ssl.c>
    <VirtualHost *:443>
    ServerName licensing.psu.ac.th
    ServerAdmin cc-server-admin@group.psu.ac.th
    DocumentRoot "/var/www/html/avl"
    ErrorLog ${APACHE_LOG_DIR}/licensing.ssl_error_log
    TransferLog ${APACHE_LOG_DIR}/licensing.ssl_access_log
    LogLevel warn
    SSLEngine on
    Header add Strict-Transport-Security "max-age=15768000;includeSubDomains"
    SSLCertificateFile /etc/ssl/private/STAR_psu_ac_th.crt
    SSLCertificateKeyFile /etc/ssl/private/STAR_psu_ac_th.key
    SSLCertificateChainFile /etc/ssl/private/STAR_psu_ac_th.ca-bundle
    </VirtualHost>
    </IfModule>

    • restart apache2 ด้วยคำสั่ง sudo service apache2 restart
    • ทั้งหมดนี้ทำ บน Ubuntu 14.04.1
    • ผลของการตั้งค่าตามนี้ จะทำให้ผู้ใช้ที่ยังใช้งาน Windows XP และ IE6 ไม่สามารถใช้งานเว็บไซต์ได้
    • จบ ขอให้สนุกครับ

    จุดสังเกตุเมื่อเปลี่ยน certificate แล้ว
    ก่อนเปลี่ยนบน Chrome เบราเซอร์
    https-sharedrive-chrome-before-update-cert

    หลังเปลี่ยนบน Chrome เบราเซอร์
    after

    ที่มา:

    http://www.bauer-power.net/2014/04/how-to-enable-http-strict-transport.html#.VJJ8pXtKW7A

    http://www.hackido.com/2009/10/quick-tip-auto-enter-password-for-your.html