จากบทความที่คุณเชื่อมโยงมีสามขั้นตอนที่แนะนำเพื่อป้องกันตัวเองจากช่องโหว่นี้ โดยหลักการแล้วขั้นตอนเหล่านี้ใช้กับซอฟต์แวร์ใด ๆ ที่คุณอาจใช้กับ SSL / TLS แต่ที่นี่เราจะจัดการกับขั้นตอนเฉพาะเพื่อนำไปใช้กับ Apache (httpd) เนื่องจากเป็นซอฟต์แวร์ที่เป็นปัญหา
- ปิดใช้งานการส่งออกชุดรหัส
จัดการกับการเปลี่ยนแปลงการกำหนดค่าที่เราจะทำใน 2 ด้านล่าง ( !EXPORT
ใกล้ถึงจุดสิ้นสุดของSSLCipherSuite
บรรทัดคือวิธีที่เราจะปิดการใช้งานชุดรหัสการส่งออก)
- Deploy (Ephemeral) Elliptic-Curve Diffie-Hellman (ECDHE)
สำหรับนี้คุณจำเป็นต้องแก้ไขการตั้งค่าบางอย่างใน config ไฟล์ของ Apache - คือSSLProtocol
, SSLCipherSuite
, SSLHonorCipherOrder
ที่จะมีการติดตั้ง "ปฏิบัติที่ดีที่สุด" สิ่งต่อไปนี้จะพอเพียง:
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
หมายเหตุ: สำหรับSSLCipherSuite
การตั้งค่าที่จะใช้สิ่งนี้จะเปลี่ยนแปลงอยู่ตลอดเวลาและเป็นความคิดที่ดีที่จะศึกษาแหล่งข้อมูลเช่นที่อยู่นี้เพื่อตรวจสอบการกำหนดค่าที่แนะนำล่าสุด
3. สร้างกลุ่ม Diffie Hellman ที่แข็งแกร่งและเป็นเอกลักษณ์
ในการทำเช่นนั้นคุณสามารถเรียกใช้
openssl dhparam -out dhparams.pem 2048
.
โปรดทราบว่าสิ่งนี้จะทำให้การโหลดที่สำคัญบนเซิร์ฟเวอร์ในขณะที่ params ถูกสร้างขึ้น - คุณสามารถแก้ไขปัญหาที่อาจเกิดขึ้นได้เสมอโดยการสร้าง params บนเครื่องอื่นและใช้scp
หรือคล้ายกันในการถ่ายโอนไปยังเซิร์ฟเวอร์ที่สงสัย
วิธีใช้สิ่งที่สร้างขึ้นใหม่dhparams
ใน Apache จากเอกสาร Apache :
หากต้องการสร้างพารามิเตอร์ DH ที่กำหนดเองให้ใช้คำสั่ง openssl dhparam อีกทางหนึ่งคุณสามารถผนวกพารามิเตอร์DHA 1024-บิตมาตรฐานต่อไปนี้จาก RFC 2409, ส่วน 6.2 ไปยังไฟล์ SSLCertificateFile ที่เกี่ยวข้อง :
(เน้นที่เหมือง)
ซึ่งตามมาด้วยพารามิเตอร์ DH 1024- บิตมาตรฐาน จากนี้เราสามารถสรุปได้ว่าพารามิเตอร์ DH ที่สร้างขึ้นเองนั้นสามารถผนวกเข้ากับSSLCertificateFile
คำถามที่เกี่ยวข้องได้
ในการทำเช่นนั้นให้เรียกใช้บางสิ่งที่คล้ายกับตัวอย่างต่อไปนี้:
cat /path/to/custom/dhparam >> /path/to/sslcertfile
อีกทางหนึ่งตามส่วนย่อย Apacheของบทความที่คุณเชื่อมโยงตั้งแต่แรกคุณอาจระบุไฟล์ dhparams แบบกำหนดเองที่คุณสร้างขึ้นหากคุณไม่ต้องการแก้ไขไฟล์ใบรับรองเอง:
SSLOpenSSLConfCmd DHParameters "/path/to/dhparams.pem"
การกำหนดค่า Apache ใดที่เกี่ยวข้องกับการใช้งาน SSL / TLS เฉพาะของคุณโดยทั่วไปจะอยู่ในconf.d/ssl.conf
หรือconf.d/vhosts.conf
แต่จะแตกต่างกันไปขึ้นอยู่กับวิธีที่คุณกำหนดค่า Apache
มันเป็นที่น่าสังเกตว่าตามลิงค์นี้ ,
ก่อน Apache 2.4.7 พารามิเตอร์ DH จะถูกตั้งค่าเป็น 1024 บิตเสมอและไม่สามารถกำหนดได้โดยผู้ใช้ สิ่งนี้ได้รับการแก้ไขใน mod_ssl 2.4.7 ที่ Red Hat ได้ backported ลงในการกระจาย RHEL 6 Apache 2.2 ด้วย httpd-2.2.15-32.el6
ใน Debian Wheezy อัปเกรด apache2 เป็น 2.2.22-13 + deb7u4 หรือใหม่กว่าและ openssl เป็น 1.0.1e-2 + deb7u17 SSLCipherSuite ข้างต้นใช้งานไม่ได้อย่างสมบูรณ์แทนที่จะใช้สิ่งต่อไปนี้ตามบล็อกนี้ :
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-DSS-AES128-SHA256:DHE-DSS-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:!DHE-RSA-AES256-SHA256:!DHE-RSA-CAMELLIA128-SHA:!DHE-RSA-CAMELLIA256-SHA
คุณควรตรวจสอบว่าเวอร์ชั่น Apache ของคุณช้ากว่าหมายเลขรุ่นเหล่านี้หรือไม่ขึ้นอยู่กับการกระจายของคุณและหากไม่ได้ให้อัพเดตหากเป็นไปได้
เมื่อคุณทำตามขั้นตอนด้านบนเพื่ออัปเดตการกำหนดค่าของคุณแล้วเริ่มบริการ Apache ใหม่เพื่อใช้การเปลี่ยนแปลงคุณควรตรวจสอบว่าการกำหนดค่าเป็นที่ต้องการโดยการรันการทดสอบบนSSLLabsและบทความที่เกี่ยวข้องกับช่องโหว่นี้โดยเฉพาะ