Từ bài viết bạn liên kết , có ba bước được đề xuất để bảo vệ bạn khỏi lỗ hổng này. Về nguyên tắc, các bước này áp dụng cho bất kỳ phần mềm nào bạn có thể sử dụng với SSL / TLS nhưng ở đây chúng tôi sẽ giải quyết các bước cụ thể để áp dụng chúng cho Apache (httpd) vì đó là phần mềm được đề cập.
- Vô hiệu hóa Xuất mật mã Suites
Xử lý các thay đổi về cấu hình, chúng tôi sẽ thực hiện trong 2. bên dưới ( !EXPORT
gần cuối SSLCipherSuite
dòng là cách chúng tôi vô hiệu hóa bộ mật mã xuất khẩu)
- Triển khai (Phù du) Elliptic-Curve Diffie-Hellman (ECDHE)
Đối với điều này, bạn cần phải chỉnh sửa một vài thiết lập trong file cấu hình Apache của bạn - cụ thể là SSLProtocol
, SSLCipherSuite
, SSLHonorCipherOrder
để có một "thực hành tốt nhất" thiết lập. Một cái gì đó như sau sẽ đủ:
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
Lưu ý: đối với SSLCipherSuite
cài đặt nào sẽ sử dụng, điều này luôn thay đổi và bạn nên tham khảo các tài nguyên như tài nguyên này để kiểm tra cấu hình được đề xuất mới nhất.
3. Tạo ra một nhóm Hellie Diffie mạnh mẽ, độc đáo
Để làm như vậy, bạn có thể chạy
openssl dhparam -out dhparams.pem 2048
.
Lưu ý rằng điều này sẽ gây ra tải đáng kể cho máy chủ trong khi các thông số được tạo - bạn luôn có thể khắc phục sự cố tiềm ẩn này bằng cách tạo thông số trên máy khác và sử dụng scp
hoặc tương tự để chuyển chúng vào máy chủ để sử dụng.
Để sử dụng những thứ mới được tạo dhparams
trong Apache này, từ Tài liệu Apache :
Để tạo các tham số DH tùy chỉnh, sử dụng lệnh openssl dhparam. Ngoài ra, bạn có thể nối các tham số DH tiêu chuẩn 1024 bit sau từ RFC 2409, phần 6.2 vào tệp SSLCertertFile tương ứng :
(nhấn mạnh của tôi)
sau đó được theo sau bởi một tham số DH tiêu chuẩn 1024 bit. Từ đó, chúng ta có thể suy ra rằng các tham số DH được tạo tùy chỉnh có thể đơn giản được thêm SSLCertificateFile
vào câu hỏi liên quan .
Để làm như vậy, hãy chạy một cái gì đó tương tự như sau:
cat /path/to/custom/dhparam >> /path/to/sslcertfile
Ngoài ra, theo phần phụ Apache của bài viết mà bạn đã liên kết ban đầu, bạn cũng có thể chỉ định tệp dhparams tùy chỉnh mà bạn đã tạo nếu bạn không muốn thay đổi tệp chứng chỉ, do đó:
SSLOpenSSLConfCmd DHParameters "/path/to/dhparams.pem"
trong đó bất kỳ cấu hình Apache nào có liên quan đến việc triển khai SSL / TLS cụ thể của bạn - thường là trong conf.d/ssl.conf
hoặc conf.d/vhosts.conf
nhưng điều này sẽ khác nhau tùy thuộc vào cách bạn đã cấu hình Apache.
Điều đáng chú ý là, theo liên kết này ,
Trước Apache 2.4.7, tham số DH luôn được đặt thành 1024 bit và không thể định cấu hình người dùng. Điều này đã được sửa trong mod_ssl 2.4.7 rằng Red Hat đã nhập vào bản phân phối RHEL 6 Apache 2.2 của họ với httpd-2.2.15-32.el6
Trên Debian Wheezy nâng cấp apache2 lên 2.2.22-13 + deb7u4 trở lên và openssl thành 1.0.1e-2 + deb7u17. SSLCodesSuite ở trên không hoạt động hoàn hảo, thay vào đó hãy sử dụng các mục sau theo blog này :
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
Bạn nên kiểm tra xem phiên bản Apache của bạn có muộn hơn các số phiên bản này hay không tùy thuộc vào bản phân phối của bạn và nếu không - hãy cập nhật nếu có thể.
Khi bạn đã thực hiện các bước trên để cập nhật cấu hình của mình và khởi động lại dịch vụ Apache để áp dụng các thay đổi, bạn nên kiểm tra xem cấu hình đó có như mong muốn hay không bằng cách chạy thử nghiệm trên SSLLabs và trên bài viết liên quan đến lỗ hổng cụ thể này.