จะปิดการใช้งาน SSLv3 ใน Apache ได้อย่างไร


76

ดูเหมือนว่าทุกคนกำลังพูดถึงช่องโหว่ POODLEในวันนี้ และทุกคนแนะนำให้ปิดใช้งาน SSLv3 ใน Apache โดยใช้คำสั่งกำหนดค่าต่อไปนี้:

SSLProtocol All -SSLv2 -SSLv3

แทนค่าเริ่มต้น

SSLProtocol All -SSLv2

ฉันทำไปแล้วและไม่มีความสุข - หลังจากการทดสอบซ้ำ ๆ ด้วยเครื่องมือต่าง ๆ ( นี่คือวิธีที่รวดเร็ว ) ฉันพบว่า SSLv3 ได้รับการยอมรับอย่างมีความสุขจากเซิร์ฟเวอร์ของฉัน

ใช่ฉันรีสตาร์ท Apache แล้ว ใช่ฉันทำการวนซ้ำgrepในไฟล์การกำหนดค่าทั้งหมดและไม่มีการแทนที่ใด ๆ และไม่ฉันไม่ได้ใช้ Apache รุ่นโบราณบางตัว:

[root@server ~]# apachectl -v
Server version: Apache/2.2.15 (Unix)
Server built:   Jul 23 2014 14:17:29

แล้วอะไรล่ะ มีวิธีปิดการใช้งาน SSLv3 จริงๆใน Apache อย่างไร


ตอบแล้วที่นี่: askubuntu.com/q/537196/7163
Rory Alsop

5
ตามที่อธิบายในคำถามฉันได้ทำตามขั้นตอนทั้งหมดที่ระบุในส่วนนั้นแล้วและ SSL3 ยังคงมีอยู่ ฉันไม่สามารถบอกคุณได้ว่าส่วนใดส่วนหนึ่งของส่วนนั้นไม่สามารถปิดการใช้งาน SSL3 ได้ แต่ประเด็นก็คือมันไม่ได้เกิดขึ้นทั้งหมด ต้องบอกว่าฉันเข้าใจว่าคุณมีหมวกผู้ดูแลของคุณในขณะนี้ดังนั้นโปรดเปิดเผยคำถาม - มันอาจพิสูจน์ได้ว่าฉันเป็นคนปัญญาอ่อนและฉันทำผิดขั้นต้น แต่จาก POV ของผู้ดำเนินการนี่เป็นคำถามที่ถูกกฎหมาย

คำตอบ:


80

ฉันมีปัญหาเดียวกัน ... คุณต้องรวมSSLProtocol all -SSLv2 -SSLv3ไว้ในทุก ๆ VirtualHost stanza ใน httpd.conf

โดยทั่วไป VirtualHost stanzas จะอยู่ที่ส่วนท้ายของไฟล์ httpd.conf ตัวอย่างเช่น:

...
...
<VirtualHost your.website.example.com:443>
    DocumentRoot /var/www/directory
    ServerName your.website.example.com

    ...
    SSLEngine on
    ...
    SSLProtocol all -SSLv2 -SSLv3
    ...
</VirtualHost>

ตรวจสอบ ssl.conf หรือ httpd-ssl.conf หรือคล้ายกันเพราะอาจถูกตั้งไว้ที่นั่นไม่จำเป็นต้องอยู่ใน httpd.conf


3
สำหรับบันทึกขึ้นอยู่กับดูแลระบบ / เว็บมาสเตอร์ของคุณ VirtualHosts อาจอาศัยอยู่ในไฟล์เฉพาะของพวกเขาใน conf.d (นั่นเป็นวิธีที่ฉันต้องการเก็บบ้านและเป็นสิ่งที่ฉันเรียนรู้ไม่ใช่สิ่งที่ฉันคิดค้นขึ้นมาดังนั้นฉันคาดหวังว่าฉัน ไม่ใช่คนเดียว)
Bogdan Stăncescu

3
โปรดทราบว่าอย่างน้อย Apache 2.4+ ที่SSLProtocolกำหนดค่าภายนอกของ VirtualHost stanzas จะนำไปใช้กับโฮสต์เสมือนทั้งหมด
nurikabe

2
ฉันพบเครื่องมือนี้ที่จะทดสอบสิ่งอื่น ๆ ไม่ว่าเซิร์ฟเวอร์ของคุณจะปิดการใช้งาน SSLv3 หรือไม่: ssllabs.com/ssltest/index.html
amphetamachine

1
คำตอบนี้มีประโยชน์มากสำหรับฉันเมื่อปิดใช้งาน TLSv1 เพื่อตรวจสอบว่าโปรโตคอลที่กำหนดถูกปิดการใช้งานอย่างสมบูรณ์ฉันพบว่ามีประโยชน์ดังต่อไปนี้: nmap -sV --script ssl-enum-ciphers -p 443 <hostname>.
Luca Citi

มีวิธีการตั้งค่าทั้งSSLProtocolระบบโดยไม่ต้องแก้ไขแต่ละ VirtualHost?
Dunatotatos

10

ฉันมีปัญหาเดียวกันบน Ubuntu 14.04 หลังจากที่ได้อ่านนี้ผมแก้ไขส่วน "SSLProtocol" /etc/apache2/mods-available/ssl.confใน

  • จาก: SSLProtocol all
  • ไปที่: SSLProtocol all -SSLv2 -SSLv3 -TLSV1

แต่มันไม่ทำงาน ดังนั้นผมจึงแก้ไขส่วนต่อไปนี้มากเกินไป "SSLCipherSuite" /etc/apache2/mods-available/ssl.confใน

  • จาก: SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
  • ไปที่: SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SSLv3:!SSLv2:!TLSv1

และตอนนี้มันใช้งานได้สำหรับฉัน

อย่างไรก็ตาม Cipher Suites ไม่ได้รับผลกระทบจาก POODLE เพียงโปรโตคอลเท่านั้น แต่เบราว์เซอร์ส่วนใหญ่จะใช้ได้กับ SSLv3 Cipher Suite ที่ปิดใช้งาน

อย่าใช้สิ่งนี้กับ Mailserver! หรือคุณจะ (อาจ) ประสบปัญหาการไม่สามารถดึงเมลของคุณในอุปกรณ์บางอย่าง


ขอขอบคุณ. คำตอบนี้ทำงานในการตั้งค่า WHM / cPanel ฉันลองวิธีอื่น ๆ ที่แนะนำทางออนไลน์และคุณเป็นคนเดียวที่ทำงานได้
Voitek Zylinski

1
ใช้งานได้ แต่จะปิดใช้งานการเข้าถึงด้วย IE 10 เนื่องจากใช้ SSLv3 และ TLS1.0 เป็นค่าเริ่มต้น
Erebus

4

สำหรับ Ubuntu 10.04

หากต้องการปิดใช้งาน SSLv3 บน vhosts ที่ใช้งานอยู่ทั้งหมดคุณต้องมีตัวเลือกใน

/etc/apache2/mods-available/ssl.conf:

SSLProtocol all -SSLv2 -SSLv3

2

เมื่อเช้านี้ฉันมีปัญหาคล้ายกันและฉันพบ virtualhost อื่นที่เปิดใช้งาน SSLv3 ดังนั้นเซิร์ฟเวอร์ทั้งหมดจึงตอบสนองต่อการเชื่อมต่อ SSLv3

ดังนั้นตรวจสอบให้แน่ใจว่าไม่มีโฮสต์ของคุณที่ใช้งาน SSLv3


1

ต้องแน่ใจว่า SSLCipherSuite ไม่มี ! SSLv3 ในบริบทนั้นหมายถึง TLS1.0 และ TLS1.1

ตัวอย่างเช่นหากการกำหนดค่าของคุณเป็นSSLProtocol ทั้งหมดจะมีเพียง TLS1.2 เนื่องจากวิธีการตั้งค่า SSLCipherSuite ด้วย! SSLv3


0

สำหรับผู้ใช้ CentO ที่มีปัญหาในการแก้ไขไฟล์กำหนดค่า SSL ของคุณผ่าน SSH ลองปิดการใช้งาน SSLv3 ผ่าน WHM :

ขั้นตอนที่ 1: ไปที่ตัวแก้ไขรวม

- ลงชื่อเข้าใช้ WHM - เปิดหน้าจอ "Apache Configuration" และคลิกที่ "Include Editor"

ขั้นตอนที่ 2: แก้ไขการรวม

- ภายใต้ "รวมหลักไว้ล่วงหน้า" เลือก "ทุกรุ่น" วิธีนี้เซิร์ฟเวอร์ของคุณจะได้รับการปกป้องหากคุณเปลี่ยน Apache เวอร์ชันของคุณ เมื่อเลือกแล้วให้ป้อนสิ่งต่อไปนี้ลงในกล่องข้อความ:

บน CentOS / RHEL 6.x:

SSLHonorCipherOrder บน
SSLProtocol - ทั้งหมด + TLSv1 + TLSv1.1 + TLSv1.2

บน CentOS / RHEL 5.x:

SSLHonorCipherOrder บน
SSLProtocol - ทั้งหมด + TLSv1

... และแล้วคลิกปรับปรุง

เมื่อคุณคลิกอัปเดตคุณจะได้รับแจ้งให้รีสตาร์ท Apache ทำในเวลานี้

แหล่งต้นฉบับ: https://www.liquidweb.com/kb/how-to-disable-sslv3-and-protect-your-whmcpanel-server-from-poodle/


1
คำตอบนี้เกี่ยวข้องกับเซิร์ฟเวอร์ที่ควบคุมผ่าน WHM / cPanel ไม่ใช่สำหรับเซิร์ฟเวอร์ที่ใช้ CentOS
Bogdan Stăncescu

0

วิธีการที่คุณใช้สำหรับ Apache และ Openssl รุ่นใหม่ อาจเป็นไปได้ว่าเวอร์ชันใหม่เหล่านี้ไม่ได้ติดตั้งในระบบของคุณตรวจสอบเวอร์ชันที่ติดตั้งปัจจุบัน

เนื่องจากSSLv2และSSLv3ทั้งคู่มีความเสี่ยงต่อการโจมตีบางอย่างดังนั้นจะเป็นการดีกว่าถ้าใช้ TLS เท่านั้น ดังนั้นแก้ไขไฟล์ apache conf ของคุณดังนี้

SSLProtocol TLSv1 TLSv1.1 TLSv1.2

หรือ

SSLProtocol TLSv1

ใช่ฉันพยายามเช่นนั้น - ไม่มีความสุข :-(

คุณสามารถวางผลลัพธ์ของคำสั่ง "apachectl configtest"
P4cK3tHuNt3R

0

ฉันมีปัญหาที่คล้ายกันและฉันได้ตรวจสอบว่าฉันมีการตั้งค่า Apache ที่เหมาะสมทั้งหมดถูกต้อง

อย่างไรก็ตามสิ่งที่ฉันพลาดคือฉันมี nginx เป็น reverse proxy หน้า apache ฉันยังเกิดขึ้นที่จะใช้ Plesk และนี่คือจากคู่มือการแก้ไข POODLEของพวกเขา:

หากคุณกำลังรัน Nginx ให้รวมบรรทัดต่อไปนี้ในการกำหนดค่าของคุณท่ามกลางคำสั่ง SSL อื่น ๆ ใน/etc/nginx/nginx.conf:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.