POODLE (Padding Oracle On Downgraded Legacy Encryption) เป็นช่องโหว่ที่พบเมื่อวันที่ 14 ตุลาคม 2014 ซึ่งช่วยให้ผู้โจมตีสามารถอ่านข้อมูลที่เข้ารหัสโดยใช้โปรโตคอล SSLv3 โดยดำเนินการโจมตีแบบกลางคน แม้ว่าหลาย ๆ โปรแกรมจะใช้ SSLv3 เป็นทางเลือก แต่มันก็มาถึงจุดที่ควรจะปิดการใช้งานเนื่องจากไคลเอนต์จำนวนมากสามารถบังคับให้ใช้ SSLv3 ได้ การบังคับให้ไคลเอ็นต์เข้าสู่ SSLv3 จะเพิ่มโอกาสในการโจมตี บทความนี้จะแสดงวิธีปิดการใช้งาน SSLv3 ในแอพพลิเคชั่นซอฟต์แวร์ที่ใช้กันทั่วไปในปัจจุบัน
ปิดใช้งาน SSLv3 บน Nginx
มุ่งหน้าไปยังไฟล์กำหนดค่าที่จัดเก็บข้อมูลเซิร์ฟเวอร์ของคุณ ตัวอย่างเช่น/etc/nginx/sites-enabled/ssl.example.com.conf
(เปลี่ยนเส้นทางตามการกำหนดค่าของคุณ) ssl_protocols
ภายในไฟล์ให้มองหา ตรวจสอบให้แน่ใจว่าบรรทัดนี้มีอยู่และตรงกับสิ่งต่อไปนี้:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
วิธีนี้จะบังคับใช้ TLS ดังนั้นจึงปิดใช้งาน SSLv3 (และโปรโตคอลเก่าหรือล้าสมัย) ตอนนี้รีสตาร์ทเซิร์ฟเวอร์ Nginx ของคุณโดยเรียกใช้หนึ่งในคำสั่งต่อไปนี้
CentOS 7 :
systemctl restart nginx
อูบุนตู / เดเบียน :
service nginx restart
ปิดใช้งาน SSLv3 บน Apache
หากต้องการปิดใช้งาน SSLv3 ให้ไปที่ไดเรกทอรีการกำหนดค่าโมดูลของคุณสำหรับ Apache บน Ubuntu / Debian อาจเป็น/etc/apache2/mod-available
ได้ ในขณะที่บน CentOS /etc/httpd/conf.d
ก็อาจจะอยู่ใน มองหาssl.conf
ไฟล์ เปิดssl.conf
และค้นหาSSLProtocol
คำสั่ง ตรวจสอบให้แน่ใจว่าบรรทัดนี้มีอยู่และตรงกับสิ่งต่อไปนี้:
SSLProtocol all -SSLv3 -SSLv2
เมื่อเสร็จแล้วให้บันทึกจากนั้นรีสตาร์ทเซิร์ฟเวอร์ของคุณโดยเรียกใช้หนึ่งในคำสั่งต่อไปนี้
สำหรับ Ubuntu / Debian run:
CentOS 7 :
systemctl restart httpd
อูบุนตู / เดเบียน :
service apache2 restart
ปิดการใช้งาน SSLv3 บน Postfix
มุ่งหน้าไปยังpostfix
ไดเรกทอรีของคุณ /etc/postfix/
มันเป็นเรื่องปกติ เปิดไฟล์และมองหาmain.cf
smtpd_tls_mandatory_protocols
ตรวจสอบให้แน่ใจว่าบรรทัดนี้มีอยู่และตรงกับสิ่งต่อไปนี้:
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, TLSv1, TLSv1.1, TLSv1.2
สิ่งนี้จะบังคับให้เปิดใช้งาน TLSv1.1 และ TLSv1.2 บนเซิร์ฟเวอร์ Postfix ของคุณ เมื่อเสร็จแล้วให้บันทึกและเริ่มต้นใหม่
CentOS 7 :
systemctl restart postfix
อูบุนตู / เดเบียน :
service postfix restart
ปิดการใช้งาน SSLv3 บน Dovecot
/etc/dovecot/conf.d/10-ssl.conf
เปิดไฟล์ที่ตั้งอยู่ที่ จากนั้นค้นหาบรรทัดที่มีssl_protocols
และตรวจสอบให้แน่ใจว่าตรงกับสิ่งต่อไปนี้:
ssl_protocols = !SSLv2 !SSLv3 TLSv1.1 TLSv1.2
เมื่อเสร็จแล้วให้บันทึกและรีสตาร์ท Dovecot
CentOS 7 :
systemctl restart dovecot
อูบุนตู / เดเบียน :
service dovecot restart
ทดสอบว่า SSLv3 ถูกปิดใช้งาน
ในการตรวจสอบว่า SSLv3 ถูกปิดใช้งานบนเว็บเซิร์ฟเวอร์ของคุณให้รันคำสั่งต่อไปนี้ (แทนที่โดเมนและ IP ตามลำดับ):
openssl s_client -servername example.com -connect 0.0.0.0:443 -ssl3
คุณจะเห็นผลลัพธ์คล้ายกับที่แสดงต่อไปนี้:
CONNECTED(00000003)
140060449216160:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1260:SSL alert number 40
140060449216160:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:596:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : SSLv3
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1414181774
Timeout : 7200 (sec)
Verify return code: 0 (ok)
หากคุณต้องการยืนยันว่าเซิร์ฟเวอร์ของคุณใช้ TLS ให้รันคำสั่งเดียวกัน แต่ไม่มี-ssl3
:
openssl s_client -servername example.com -connect 0.0.0.0:443
คุณควรเห็นข้อมูลที่คล้ายกันปรากฏขึ้น ค้นหาProtocol
บรรทัดและยืนยันว่าใช้งานอยู่TLSv1.X
(โดย X เป็น 1 หรือ 2 ขึ้นอยู่กับการกำหนดค่าของคุณ) หากคุณเห็นสิ่งนี้แสดงว่าคุณปิดใช้งาน SSLv3 ได้สำเร็จบนเว็บเซิร์ฟเวอร์ของคุณ