Bản vá p20 cho Zimbra 8.8.15 và p13 cho Zimbra 9 được xem là một bản vá quan trọng. Bản cập nhật này khắc phục 2 lỗi bảo mật được đánh giá là nghiêm trọng: Heap-based buffer overflow vulnerabilities in PHP < 7.3.10 (CVE-2019-9641 và CVE-2019-9640). Ngoài ra bản cập nhật cũng sẽ nâng cấp Apache lên phiên bản 2.4.46 để khắc phục nhiều nguy cơ bảo mật (CVE-2019-0211 và CVE-2019-0217).

Với bản vá này, Zimbra chính thức hỗ trợ TLS 1.3 là bản cập nhật giao thức mã hóa mới, giúp kết nối nhanh hơn (giảm https overhead) và bảo mật hơn so với TLS 1.2 (thông tin thêm: TLS1.0 và TLS1.1 đã chính thức bị khai tử).

Zimbra cũng chính thức ngưng hỗ trợ kỹ thuật hệ điều hành Centos (Redhat) 6, Ubuntu 14.04. Bạn cần nâng cấp/migrate lên CentOS/RHEL 7/8 và Ubuntu 16/18.

Để thực hiện cập nhật Zimbra 8.8.15 và 9, bạn thực hiện:

1. Tắt zimbra (ngoài giờ hành chánh), tạo 1 bản snapshot dự phòng.

2. Bật zimbra, login và chạy:

yum clean metadata

yum check-update

yum update

su - zimbra

zmcontrol restart

Để bật TLS1.3, bạn thực hiện, với quyền zimbra user.

A. Trên proxy server:

1. Xem các phiên bản TLS đang được hỗ trợ trên proxy server.

zmprov gcf zimbraReverseProxySSLProtocols

zimbraReverseProxySSLProtocols: TLSv1
zimbraReverseProxySSLProtocols: TLSv1.1
zimbraReverseProxySSLProtocols: TLSv1.2

2. Thêm TLS1.3 vào danh sách:

zmprov mcf +zimbraReverseProxySSLProtocols TLSv1.3

3. Xác nhận TLS1.3 đã được thêm:

zmprov gcf zimbraReverseProxySSLProtocols

zimbraReverseProxySSLProtocols: TLSv1
zimbraReverseProxySSLProtocols: TLSv1.1
zimbraReverseProxySSLProtocols: TLSv1.2
zimbraReverseProxySSLProtocols: TLSv1.3

4. Xem các cipher đang được hỗ trợ trên proxy:

zmprov gcf zimbraReverseProxySSLCiphers

zimbraReverseProxySSLCiphers: 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:AES256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4

5. Thêm cipher TLS_AES_256_GCM_SHA384 của TLS1.3 vào danh sách trên.

Copy nội dung đầu ra của lệnh trên và thêm cipher cần thiết vào.

zmprov mcf zimbraReverseProxySSLCiphers '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:AES256:TLS_AES_256_GCM_SHA384:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4'

Lưu ý dùng dấu ' ' để chứa danh sách các cipher.

6. Khởi động lại dịch vụ proxy

zmproxyctl restart

B. Trên mailstore server

1. Xem các tham số hiện tại trong mailboxd_java_options:

zmlocalconfig mailboxd_java_options

mailboxd_java_options = -server -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 -Djdk.tls.client.protocols=TLSv1,TLSv1.1,TLSv1.2 -Djava.awt.headless=true -Dsun.net.inetaddr.ttl=${networkaddress_cache_ttl} -Dorg.apache.jasper.compiler.disablejsr199=true -XX:+UseG1GC -XX:SoftRefLRUPolicyMSPerMB=1 -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=15 -XX:G1MaxNewSizePercent=45 -XX:-OmitStackTraceInFastThrow -verbose:gc -Xlog:gc*=info,safepoint=info:file=/opt/zimbra/log/gc.log:time:filecount=20,filesize=10m -Djava.net.preferIPv4Stack=true -Djavax.net.debug=ssl,handshake,data

2. Thêm TLSv1.3 vào https.protocols và tls.client.protocols

Copy nội dung đầu ra của lệnh trên vào thêm TLS1.3 vào.

zmlocalconfig -e mailboxd_java_options='-server -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 -Djdk.tls.client.protocols=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 -Djava.awt.headless=true -Dsun.net.inetaddr.ttl=${networkaddress_cache_ttl} -Dorg.apache.jasper.compiler.disablejsr199=true -XX:+UseG1GC -XX:SoftRefLRUPolicyMSPerMB=1 -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=15 -XX:G1MaxNewSizePercent=45 -XX:-OmitStackTraceInFastThrow -verbose:gc -Xlog:gc*=info,safepoint=info:file=/opt/zimbra/log/gc.log:time:filecount=20,filesize=10m -Djava.net.preferIPv4Stack=true -Djavax.net.debug=ssl,handshake,data'

3. Khởi động lại mailbox service

zmmailboxdctl restart