Cách bảo vệ server của bạn trước lỗ hổng POODLE SSLv3
Vào ngày 14 tháng 10 năm 2014, một lỗ hổng trong version 3 của giao thức mã hóa SSL đã được tiết lộ. Lỗ hổng này, được đặt tên là POODLE (Padding Oracle On Downgraded Legacy Encryption), cho phép kẻ tấn công đọc thông tin được mã hóa bằng version giao thức này ở dạng văn bản thuần túy bằng cách sử dụng một cuộc tấn công man-in-the-middle.Mặc dù SSLv3 là version cũ hơn của giao thức chủ yếu là lỗi thời, nhiều phần mềm vẫn rơi vào tình trạng sử dụng SSLv3 nếu không có các tùy chọn mã hóa tốt hơn. Quan trọng hơn, kẻ tấn công có thể buộc kết nối SSLv3 nếu nó là một giải pháp thay thế khả dụng cho cả những người tham gia cố gắng kết nối.
Lỗ hổng POODLE ảnh hưởng đến bất kỳ dịch vụ hoặc ứng dụng client nào có thể giao tiếp bằng SSLv3. Bởi vì đây là một lỗ hổng trong thiết kế giao thức chứ không phải vấn đề triển khai, mọi phần mềm sử dụng SSLv3 đều dễ bị tấn công.
Để tìm hiểu thêm thông tin về lỗ hổng bảo mật, hãy tham khảo thông tin CVE có tại CVE-2014-3566 .
Lỗ hổng POODLE là gì?
Lỗ hổng POODLE là một điểm yếu trong version 3 của giao thức SSL cho phép kẻ tấn công trong bối cảnh trung gian có thể giải mã nội dung văn bản thuần túy của một tin nhắn được mã hóa SSLv3.
Ai bị ảnh hưởng bởi Lỗ hổng này?
Lỗ hổng này ảnh hưởng đến mọi phần mềm có thể bị ép buộc giao tiếp với SSLv3. Điều này nghĩa là bất kỳ phần mềm nào triển khai cơ chế dự phòng bao gồm hỗ trợ SSLv3 đều dễ bị tấn công và có thể bị lợi dụng.
Một số phần mềm phổ biến có thể bị ảnh hưởng là trình duyệt web, web server , server VPN, server thư, v.v.
Làm thế nào nó hoạt động?
Nói tóm lại, lỗ hổng POODLE tồn tại vì giao thức SSLv3 không kiểm tra đầy đủ các byte đệm được gửi cùng với các tin nhắn được mã hóa.
Vì những điều này không thể được xác nhận bởi bên nhận, kẻ tấn công có thể thay thế những điều này và chuyển chúng đến đích đã định. Khi được thực hiện theo một cách cụ thể, trọng tải đã sửa đổi sẽ có khả năng được người nhận chấp nhận mà không có khiếu nại.
Trung bình cứ 256 yêu cầu sẽ có một lần được chấp nhận tại điểm đến, cho phép kẻ tấn công giải mã một byte. Điều này có thể được lặp lại một cách dễ dàng để giải mã dần các byte bổ sung. Bất kỳ kẻ tấn công nào có thể liên tục buộc người tham gia gửi lại dữ liệu bằng giao thức này có thể phá vỡ mã hóa trong một khoảng thời gian rất ngắn.
Tôi có thể tự bảo vệ mình bằng cách nào?
Cần thực hiện các hành động đảm bảo rằng bạn không rủi ro bảo mật trong các role vừa là khách hàng vừa là server . Vì mã hóa thường được thương lượng giữa client và server nên đây là một vấn đề liên quan đến cả hai bên.
Server và client nên thực hiện các bước để tắt hoàn toàn hỗ trợ SSLv3. Nhiều ứng dụng sử dụng mã hóa tốt hơn theo mặc định, nhưng triển khai hỗ trợ SSLv3 như một tùy chọn dự phòng. Điều này nên bị vô hiệu hóa, vì user độc hại có thể buộc giao tiếp SSLv3 nếu cả hai người tham gia cho phép nó như một phương pháp có thể chấp nhận được.
Cách bảo vệ các ứng dụng phổ biến
Dưới đây, ta sẽ trình bày cách tắt SSLv3 trên một số ứng dụng server phổ biến. Cẩn thận đánh giá server của bạn để bảo vệ bất kỳ dịch vụ bổ sung nào có thể dựa vào mã hóa SSL / TCP.
Vì lỗ hổng POODLE không đại diện cho một vấn đề triển khai và là một vấn đề cố hữu với toàn bộ giao thức, nên không có cách giải quyết nào và giải pháp tin cậy duy nhất là không sử dụng nó.
Web server Nginx
Để tắt SSLv3 trong web server Nginx, bạn có thể sử dụng lệnh ssl_protocols
. Điều này sẽ nằm trong server
hoặc các khối http
trong cấu hình của bạn.
Ví dụ: trên Ubuntu, bạn có thể thêm toàn cục này vào /etc/nginx/nginx.conf
bên trong khối http
hoặc vào từng khối server
trong folder hỗ trợ /etc/nginx/sites-enabled
.
sudo nano /etc/nginx/nginx.conf
Để tắt SSLv3, chỉ thị ssl_protocols
của bạn phải được đặt như sau:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Bạn nên khởi động lại server sau khi thực hiện sửa đổi ở trên:
sudo service nginx restart
Web server Apache
Để tắt SSLv3 trên web server Apache, bạn sẽ phải điều chỉnh chỉ thị SSLProtocol
được cung cấp bởi module mod_ssl
.
Chỉ thị này có thể được đặt ở cấp server hoặc trong cấu hình server ảo. Tùy thuộc vào cấu hình Apache của bản phân phối của bạn, cấu hình SSL có thể nằm trong một file riêng biệt có nguồn root .
Trên Ubuntu, thông số kỹ thuật toàn server cho các server có thể được điều chỉnh bằng cách chỉnh sửa file /etc/apache2/mods-available/ssl.conf
. Nếu mod_ssl
được bật, một softlink sẽ kết nối file này với folder con mods-enabled
:
sudo nano /etc/apache2/mods-available/ssl.conf
Trên CentOS, bạn có thể điều chỉnh điều này trong file cấu hình SSL ở đây (nếu SSL được bật):
sudo nano /etc/httpd/conf.d/ssl.conf
Bên trong, bạn có thể tìm thấy chỉ thị SSLProtocol
. Nếu cái này không có sẵn, hãy tạo nó. Sửa đổi điều này để loại bỏ rõ ràng hỗ trợ cho SSLv3:
SSLProtocol all -SSLv3 -SSLv2
Lưu và đóng file . Khởi động lại dịch vụ để kích hoạt các thay đổi .
Trên Ubuntu, có thể chạy lệnh:
sudo service apache2 restart
Trên CentOS, đây sẽ là:
sudo service httpd restart
Bộ cân bằng tải HAProxy
Để vô hiệu hóa SSLv3 trong trình cân bằng tải HAProxy, bạn cần mở file haproxy.cfg
.
Điều này có tại /etc/haproxy/haproxy.cfg
:
sudo nano /etc/haproxy/haproxy.cfg
Trong cấu hình giao diện user của bạn, nếu bạn đã bật SSL, chỉ thị bind
của bạn sẽ chỉ định địa chỉ IP công cộng và cổng. Nếu bạn đang sử dụng SSL, bạn cần thêm no-sslv3
vào cuối dòng này:
frontend name bind public_ip:443 ssl crt /path/to/certs no-sslv3
Lưu và đóng file .
Bạn cần phải khởi động lại dịch vụ để áp dụng các thay đổi :
sudo service haproxy restart
Server VPN OpenVPN
Các version gần đây của OpenVPN thực sự không cho phép SSLv3. Dịch vụ không dễ bị ảnh hưởng bởi sự cố cụ thể này, vì vậy bạn sẽ không cần phải điều chỉnh cấu hình của bạn .
Xem bài đăng này trên diễn đàn OpenVPN để biết thêm thông tin .
Server SMTP Postfix
Nếu cấu hình Postfix của bạn được cài đặt để yêu cầu mã hóa, nó sẽ sử dụng một chỉ thị có tên smtpd_tls_mandatory_protocols
.
Bạn có thể tìm thấy điều này trong file cấu hình Postfix chính:
sudo nano /etc/postfix/main.cf
Đối với server Postfix được cài đặt để sử dụng mã hóa mọi lúc, bạn có thể đảm bảo SSLv3 và SSLv2 không được chấp nhận bằng cách đặt tham số này. Nếu bạn không bắt buộc mã hóa, bạn không phải làm bất cứ điều gì:
smtpd_tls_mandatory_protocols=!SSLv2, !SSLv3
Lưu cấu hình của bạn. Khởi động lại dịch vụ để triển khai các thay đổi :
sudo service postfix restart
Dovecot IMAP và Server POP3
Để vô hiệu hóa SSLv3 trên server Dovecot, bạn cần điều chỉnh một lệnh có tên ssl_protocols
. Tùy thuộc vào phương pháp đóng gói bản phân phối của bạn, cấu hình SSL có thể được giữ trong file cấu hình thay thế.
Đối với hầu hết các bản phân phối, bạn có thể điều chỉnh chỉ thị này bằng cách mở file này:
sudo nano /etc/dovecot/conf.d/10-ssl.conf
Bên trong, nếu bạn đang sử dụng Dovecot 2.1 trở lên, hãy đặt chỉ thị ssl_protocols
để tắt SSLv2 và SSLv3:
ssl_protocols = !SSLv3 !SSLv2
Nếu bạn đang sử dụng version Dovecot thấp hơn 2.1, bạn có thể đặt ssl_cipher_list
thành không cho phép SSLv3 như sau:
ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL:!SSLv3
Lưu và đóng file .
Khởi động lại dịch vụ để thực hiện các thay đổi :
sudo service dovecot restart
Các bước tiếp theo
Cùng với các ứng dụng phía server , bạn cũng nên cập nhật bất kỳ ứng dụng client nào.
Đặc biệt, các trình duyệt web có thể dễ gặp sự cố này do thương lượng giao thức từng bước của chúng. Đảm bảo rằng trình duyệt của bạn không cho phép SSLv3 như một phương pháp mã hóa được chấp nhận. Điều này có thể được điều chỉnh trong cài đặt hoặc thông qua việc cài đặt một plugin hoặc tiện ích mở rộng bổ sung.
Kết luận
Do sự hỗ trợ rộng rãi cho SSLv3, ngay cả khi mã hóa mạnh hơn được kích hoạt, lỗ hổng bảo mật này vẫn tiếp cận sâu và nguy hiểm. Bạn cần thực hiện các biện pháp để bảo vệ mình với quyền là người tiêu dùng và nhà cung cấp bất kỳ tài nguyên nào sử dụng mã hóa SSL.
Đảm bảo kiểm tra tất cả các dịch vụ có thể truy cập mạng của bạn có thể tận dụng SSL / TLS dưới mọi hình thức. Thông thường, các ứng dụng này yêu cầu hướng dẫn rõ ràng để vô hiệu hóa hoàn toàn các hình thức mã hóa yếu hơn như SSLv3.
Các tin liên quan
Cách sử dụng cấu hình cloud để thiết lập server ban đầu của bạn2014-10-13
Cách bảo vệ server của bạn trước lỗ hổng bảo mật do Shellshock Bash
2014-09-25
Cách cài đặt server Percona mới hoặc thay thế MySQL
2014-09-18
Cách cài đặt puppet để quản lý cơ sở hạ tầng server của bạn
2014-08-15
Cách cấu hình BIND làm server DNS Mạng riêng trên Ubuntu 14.04
2014-08-12
Cách cấu hình BIND làm server DNS Mạng riêng trên Ubuntu 14.04
2014-08-12
Thiết lập server ban đầu với CentOS 7
2014-07-21
Cách cài đặt Linux, Apache, MySQL, PHP (LAMP) trên CentOS 7
2014-07-21
Cách sử dụng NSD, một server DNS chỉ ủy quyền, trên Ubuntu 14.04
2014-07-03
Cách cấu hình bind server lưu trữ hoặc chuyển tiếp DNS trên Ubuntu 14.04
2014-07-01