Cách bảo vệ máy chủ Debian hoặc Ubuntu của bạn khỏi cuộc tấn công Logjam

theanh

Administrator
Nhân viên
Hướng dẫn này mô tả các bước cần thực hiện để bảo vệ Máy chủ Ubuntu hoặc Debian Linux của bạn khỏi cuộc tấn công Logjam mới được phát hiện gần đây. Logjam là một cuộc tấn công chống lại trao đổi khóa Diffie-Hellman được sử dụng trong các giao thức mã hóa phổ biến như HTTPS, TLS, SMTPS, SSH và các giao thức khác. Bạn có thể tìm thấy mô tả chi tiết tại đây https://weakdh.org/.

Hướng dẫn này tương thích với các thiết lập ISPConfig 3 trên Debian và Ubuntu.

Các bước sau đây phải được thực hiện với tư cách là người dùng root trên shell.

Tạo một Nhóm DH duy nhất​

Bước đầu tiên để bảo mật máy chủ của bạn là tạo một Nhóm DH duy nhất bằng lệnh openssl. Tôi sẽ tạo tệp trong thư mục /etc/ssl/private/. Khi bạn không có thư mục này trên máy chủ của mình, hãy tạo nó bằng các lệnh sau:
Mã:
mkdir -p /etc/ssl/private
chmod 710 /etc/ssl/private
Bây giờ tôi sẽ tạo tệp dhparams.pem và thiết lập quyền bảo mật:
Mã:
cd /etc/ssl/private
openssl dhparam -out dhparams.pem 2048
chmod 600 dhparams.pem

Apache​

Đầu tiên tôi sẽ thêm một bộ mã hóa an toàn dựa trên các khuyến nghị từ weakdh.org. Mở tệp /etc/apache2/mods-available/ssl.conf bằng trình chỉnh sửa:
Mã:
nano /etc/apache2/mods-available/ssl.conf
và thay đổi hoặc thêm các dòng sau:
Mã:
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:ECD HE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:E CDHE-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-D SS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SH A256: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-SHASSLHonorCipherĐặt hàng trên
Xin lưu ý rằng SSLCipherSuide chỉ là một dòng dài, vì vậy không thêm ngắt dòng!

Phần thứ hai là thiết lập Nhóm DH trong apache. Tùy chọn cấu hình SSLOpenSSLConfCmd chỉ khả dụng trong apache 2.4.8 trở lên và nó cũng yêu cầu openssl 1.0.2 trở lên, vì vậy trước tiên chúng ta phải kiểm tra xem phiên bản apache và openssl của chúng ta có hỗ trợ nó không:
Mã:
apache2 -v
Đầu ra trên máy chủ Debian 7 của tôi là:
Mã:
root@server1:/etc/apache2# apache2 -v
Phiên bản máy chủ: Apache/2.2.22 (Debian)
Máy chủ được xây dựng: 23 tháng 12 năm 2014 22:48:29
Bây giờ tôi sẽ kiểm tra openssl:
Mã:
phiên bản openssl
Đầu ra trên hệ thống của tôi là:
Mã:
root@server1:/# phiên bản openssl
OpenSSL 1.0.1e 11 tháng 2 năm 2013
Vì vậy Tôi không thể thiết lập DH Group trên máy chủ này. Phần đầu tiên và phần thứ hai độc lập với nhau, phần đầu tiên đã vô hiệu hóa các mã hóa yếu để bảo vệ máy chủ của bạn và nó sẽ hoạt động mà không cần nhóm DH. Trong trường hợp bạn muốn cài đặt nguồn biểu mẫu OpenSSL mới nhất, hãy xem hướng dẫn này. Nếu phiên bản apache của bạn là > 2.4.8 và OpenSSL > 1.0.2, sau đó chỉnh sửa lại tệp /etc/apache2/mods-available/ssl.conf:
Mã:
nano /etc/apache2/mods-available/ssl.conf
Thêm dòng:
Mã:
SSLOpenSSLConfCmd DHParameters "/etc/ssl/private/dhparams.pem"
và khởi động lại apache:
Mã:
service apache2 restart

Nginx​

Chỉnh sửa tệp cấu hình Nginx /etc/nginx/nginx.conf
Mã:
nano /etc/nginx/nginx.conf
Thêm hoặc thay thế các thiết lập sau bên trong phần httpd { .... }:
Mã:
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-E CDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-R SA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-R SA-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-S HA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-S HA: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';
Mã:
ssl_prefer_server_ciphers on;
Mã:
ssl_dhparam /etc/ssl/private/dhparams.pem;
Và khởi động lại Nginx:
Mã:
service nginx restart

Postfix​

Chạy các lệnh này để thiết lập bộ mã hóa an toàn và Nhóm DH:
Mã:
postconf -e "smtpd_tls_mandatory_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDC3-SHA, KRB5-DE5, CBC3-SHA"
postconf -e "smtpd_tls_dh1024_param_file = /etc/ssl/private/dhparams.pem"
Và khởi động lại postfix:
Mã:
service postfix restart

Dovecot​

Chỉnh sửa tệp cấu hình dovecot /etc/dovecot/dovecot.conf
Mã:
nano /etc/dovecot/dovecot.conf
và thêm dòng:
Mã:
ssl_cipher_list=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-GC M-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECD HE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDH E-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES2 56-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA2 56: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
ngay sau dòng ssl_protocols.

Đối với các tham số khác, chúng ta cần biết phiên bản dovecot. Chạy lệnh này để lấy thông tin phiên bản dovecot trên shell:
Mã:
dovecot --version
Khi phiên bản là 2.2.6 trở lên, hãy thêm dòng bổ sung này:
Mã:
ssl_prefer_server_ciphers = yes
Khi phiên bản là 2.2.7 trở lên, hãy thêm dòng thứ ba này:
Mã:
ssl_dh_parameters_length = 2048
Cuối cùng, hãy khởi động lại dovecot
Mã:
service dovecot restart

Pure-ftpd​

Việc bảo mật pure-ftpd trên Debian và Ubuntu phức tạp hơn một chút vì tập lệnh /usr/sbin/pure-ftpd-wrapper không hỗ trợ lệnh chuyển đổi -J ngay lập tức được pure-ftpd sử dụng để thiết lập Bộ mã hóa SSL. Bước đầu tiên là thêm hỗ trợ cho tùy chọn -J trong tập lệnh wrapper. Mở tệp:
Mã:
nano /usr/sbin/pure-ftpd-wrapper
Và cuộn xuống dòng:
Mã:
'TLS' => ['-Y %d', \&parse_number_1],
Bây giờ hãy thêm dòng mới này ngay sau đó:
Mã:
'TLSCipherSuite' => ['-J %s', \&parse_string],
Sau đó tạo (hoặc chỉnh sửa khi tệp đó tồn tại) tệp /etc/pure-ftpd/conf/TLSCipherSuite bằng nano:
Mã:
nano /etc/pure-ftpd/conf/TLSCipherSuite
và nhập mã hóa sau danh sách:
Mã:
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:kED H+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-SH A256: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
Khi tệp đã tồn tại và chứa một số mã hóa, hãy thay thế các mã hóa bằng các mã hóa ở trên. Sau đó lưu tệp và khởi động lại pure-ftpd:
Mã:
service pure-ftpd-mysql restart

Liên kết​

 
Back
Bên trên