1. Giới thiệu
Ngày nay, hầu hết các trang web đều sử dụng giao thức https, nhưng bạn đã bao giờ kiểm tra cấu hình bảo mật TLS của trang web của mình được đánh giá như thế nào tại SSLLabs chưa? Rất dễ dàng, chỉ cần nhập tên miền của bạn tại SSLLabs và bạn sẽ nhận được báo cáo về cấu hình SSL của tên miền và đánh giá của nó. Bạn có thể làm điều này với bất kỳ trang web nào nếu bạn tò mò về cách server web được cấu hình.

Dưới đây là hướng dẫn từng bước để cấu hình pfSense và gói HAProxy để đạt được đánh giá 100% cho Chứng Chỉ, Hỗ Trợ Giao Thức, Trao Đổi Khóa và Sức Mạnh Mã Hóa. Bạn cũng sẽ nhận được đánh giá tổng thể A+ và 3 hàng màu xanh lá cây chỉ ra hỗ trợ TLS 1.3, HSTS và DNS CAA.
Tham khảo https://www.linkedin.com/pulse/configuring-pfsense-firewall-haproxy-maximum-security-goldhammer
2. Cài Đặt pfSense
Trong hướng dẫn này, tôi đã sử dụng phiên bản phát triển mới nhất, nhưng bạn cũng có thể sử dụng phiên bản ổn định mới nhất. Dưới đây là liên kết đến các phiên bản phát triển nếu bạn muốn sử dụng:
Các Bước Cài Đặt
Thay Đổi Giao Thức Web Cho Bảng Điều Khiển Quản Trị: Sau khi cài đặt, thay đổi giao thức web cho bảng điều khiển quản trị từ http sang https và chọn một cổng không chuẩn, như 10443.

Cài Đặt HAProxy và ACME: Đi tới System / Package Manager và cài đặt haproxy-devel
và acme
.

Tạo Chứng Chỉ: Đi tới Services / Acme / Account keys và tạo một khóa tài khoản mới.

Sau đó bấm Register ACME account key để đăng ký ACME () account key.

Tạo Chứng Chỉ Mới: Đi tới Certificates và nhấp vào Add.

Chọn tùy chọn 384-bit ECDSA cho private key tư để đạt được đánh giá 100% tại ssllabs.com.


Cấu Hình HAProxy: Đi tới Services / HAProxy / Settings. Bật HAProxy và nhập giá trị, ví dụ 1000 vào trường Maximum connections.

Thay đổi cài đặt mặc định cho “Max SSL Diffie-Hellman size” từ 2048 thành 4096.

Tạo Backend Server Pool: Đi tới HAProxy / Backend và nhấp vào Add. Nhập tên cho backend server và chọn địa chỉ IP của server. Sử dụng cổng 443 và chọn “Encrypt(SSL)” để giao tiếp với backend server.

Tạo Frontend Listener: Đi tới HAProxy / Frontend và nhấp vào Add. Tạo quy tắc chuyển hướng từ http sang https. Chọn 443 và tùy chọn “SSL Offloading”.

Tạo Quy Tắc Firewall: Đi tới Firewall / Rules và thêm quy tắc mới. Chọn giao diện WAN và giao thức TCP. Trong phần Destination, chọn “WAN address” và chọn “HTTP (80)” trong hai dropdown “Destination Port Range”.

3. Kiểm Tra Cấu Hình.
Kiểm Tra Chuyển Hướng: Sử dụng công cụ trực tuyến như httpstatus.io để kiểm tra tất cả 4 địa chỉ.
Kiểm Tra Chứng Chỉ SSL: Đi tới SSLLabs và nhập tên miền của bạn.

Tăng Cường Bảo Mật: Để đạt được đánh giá 100% cho trao đổi khóa, sử dụng các từ khóa “secp384r1” hoặc “secp521r1” trong cài đặt HAProxy.
curves secp384r1:secp521r1
Here it is in the HAProxy package settings of pfSense:

Let’s check SSLLabs again:

Tăng Cường Sức Mạnh Mã Hóa: Thêm các ciphers được phép vào trường “Advanced ssl options” dựa trên báo cáo của SSLLabs.
ciphers ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384
Thêm HSTS: Để bảo vệ người truy cập, thêm tiêu đề phản hồi HSTS trong cấu hình HAProxy.
Thêm Bản Ghi DNS CAA: Để hạn chế việc tạo chứng chỉ, thêm bản ghi DNS CAA cho Let’s Encrypt.
Kết Quả
Sau khi thực hiện các bước trên, bạn sẽ đạt được đánh giá 100% + 100% + 100% + 100% và đánh giá tổng thể A+ tại SSLLabs. Điều này đảm bảo rằng trang web của bạn có cấu hình bảo mật tối đa, hỗ trợ TLS 1.3, HSTS và DNS CAA.

In our current configuration (which is good, but not 100%), there are two ciphers using 128 bits:

Hy vọng bài viết này giúp bạn cấu hình pfSense và HAProxy để đạt được đánh giá cao bảo mật.