Làm chủ bảo mật Fedora: Quản lý mã hóa toàn hệ thống với update-crypto-policies

Fedora tutorial - IT technology blog
Fedora tutorial - IT technology blog

Quản lý bảo mật tập trung: Không còn là nỗi lo

Bạn đã bao giờ tốn cả buổi chiều chỉ để tắt TLS 1.0 trên 5 dịch vụ khác nhau chưa? Với mình, việc phải đi lục lọi từng file config của Nginx, Postfix hay SSHD để chặn các thuật toán cũ là một cực hình. May mắn là trên Fedora (và RHEL/CentOS), chúng ta có update-crypto-policies. Công cụ này giúp bạn áp đặt tiêu chuẩn mã hóa lên toàn bộ hệ thống chỉ từ một điểm duy nhất.

Sau 6 tháng chạy production cho các dự án yêu cầu khắt khe về bảo mật, mình thấy đây là tính năng cực kỳ đáng giá. Thay vì sửa lỗi vặt ở tầng ứng dụng, bạn thiết lập chính sách ở tầng hệ điều hành. Mọi thư viện từ OpenSSL đến GnuTLS sẽ tự động tuân thủ theo.

Quick Start: Thắt chặt bảo mật trong 30 giây

Nếu bạn cần pass bài kiểm tra audit gấp, đây là lộ trình nhanh nhất. Fedora mặc định dùng DEFAULT, nhưng bạn có thể nâng cấp lên FUTURE để đạt mức bảo mật cao nhất.

1. Kiểm tra trạng thái hiện tại

update-crypto-policies --show

Lệnh này thường trả về DEFAULT. Đây là mức cân bằng giữa bảo mật và khả năng tương thích.

2. Chuyển sang chính sách FUTURE

sudo update-crypto-policies --set FUTURE

Ở chế độ này, hệ thống sẽ yêu cầu khóa RSA tối thiểu 3072-bit. Các thuật toán cũ như SHA-1 hay các giao thức dưới TLS 1.2 sẽ bị loại bỏ hoàn toàn.

3. Kích hoạt thay đổi

Công cụ sẽ tự động ghi đè cấu hình trong /etc/crypto-policies/back-ends/. Để đảm bảo mọi dịch vụ nhận diện thay đổi, hãy khởi động lại máy:

sudo reboot

Tại sao công cụ này lại thay đổi cuộc chơi?

Trước đây, quản lý mã hóa là một mớ hỗn độn. Mỗi phần mềm dùng một cú pháp riêng, khiến việc đồng bộ hóa cực kỳ khó khăn. update-crypto-policies giải quyết vấn đề này bằng cách tạo ra một lớp trừu tượng phía trên các thư viện lõi.

Hiện tại, nó đang quản lý cấu hình cho hầu hết các “ông lớn” như:

  • GnuTLS, OpenSSL, NSS: Xương sống của web server và trình duyệt.
  • JDK: Môi trường chạy ứng dụng Java.
  • OpenSSH: Quản lý truy cập từ xa.
  • Bind & Libgcrypt: Các dịch vụ hệ thống quan trọng.

4 cấp độ chính sách bạn cần biết

Tùy vào nhu cầu, bạn có thể chọn một trong các mức sau:

  1. LEGACY: Cho phép cả TLS 1.0 và RSA 1024-bit. Chỉ dùng khi bạn phải giao tiếp với các thiết bị cũ từ 10 năm trước.
  2. DEFAULT: Chặn các giao thức lỗi thời nhưng vẫn giữ lại TLS 1.2 để đảm bảo đa số ứng dụng web hoạt động bình thường.
  3. FUTURE: Chế độ “nội bất xuất, ngoại bất nhập”. Chỉ các thuật toán hiện đại nhất mới được chấp nhận.
  4. FIPS: Tuân thủ chuẩn FIPS 140-2 của Mỹ. Đây là yêu cầu bắt buộc nếu bạn làm dự án cho ngân hàng hoặc chính phủ.

Nâng cao: Tùy biến với Sub-policies

Đôi khi DEFAULT quá lỏng lẻo, nhưng FUTURE lại làm sập ứng dụng của khách hàng. Đây là lúc Sub-policies tỏa sáng. Giả sử bạn muốn dùng DEFAULT nhưng phải khai tử hoàn toàn SHA-1.

Cách tạo module NO-SHA1

Đầu tiên, hãy tạo một file chính sách con tại đường dẫn sau:

sudo nano /etc/crypto-policies/policies/modules/NO-SHA1.pmod

Thêm nội dung để vô hiệu hóa SHA-1 trong chữ ký số:

hash = -SHA1
sig = -RSA-PSS-SHA1 -RSA-SHA1 -ECDSA-SHA1

Kích hoạt chính sách lai

Bạn kết hợp chính sách chính và module bằng dấu hai chấm:

sudo update-crypto-policies --set DEFAULT:NO-SHA1

Cách làm này giúp hệ thống vừa linh hoạt, vừa đảm bảo an toàn mà không cần can thiệp sâu vào code ứng dụng.

Kinh nghiệm thực tế: Những bài học “đau thương”

Sau nhiều lần “vấp ngã” khi triển khai thực tế, mình có 3 lưu ý quan trọng cho anh em:

1. Đừng khóa cửa khi đang ở ngoài

Mình từng bật FUTURE trên một server từ xa và bị văng SSH ngay lập tức. Lý do là SSH client ở máy local quá cũ, không đáp ứng được tiêu chuẩn mới. Hãy luôn giữ ít nhất một phiên kết nối dự phòng hoặc có quyền truy cập console trước khi đổi policy.

2. Dấu hiệu nhận biết lỗi policy

Nếu ứng dụng Python hay Java đột ngột báo lỗi SSL Handshake Failed, đừng vội sửa code. Hãy kiểm tra log hệ thống. Rất có thể server đối tác đang dùng chứng chỉ RSA 2048-bit trong khi bạn đã yêu cầu tối thiểu 3072-bit.

3. Cẩn thận với mirror của DNF

Khi đặt chính sách quá gắt, lệnh dnf update có thể thất bại. Một số mirror cũ vẫn dùng thuật toán băm không còn an toàn. Nếu gặp lỗi này, hãy tạm đưa về DEFAULT để cập nhật xong rồi tính tiếp.

Lời kết cho Sysadmin

Việc quản lý mã hóa tập trung giúp giảm thiểu sai sót và tiết kiệm hàng giờ cấu hình thủ công. Nếu bạn đang quản trị hệ thống Fedora, hãy thử chạy update-crypto-policies --check để xem cấu hình có đang bị sai lệch không. Chỉ một thay đổi nhỏ cũng có thể nâng tầm bảo mật của bạn lên rất nhiều. Anh em có gặp lỗi kết nối nào sau khi đổi policy không? Để lại comment bên dưới mình cùng xử lý nhé!

Share: