Triển khai chứng chỉ số cho VPN – Phần 1


Xem thêm:
Triển khai chứng chỉ số cho VPN – Phần 1
Triển khai chứng chỉ số cho VPN – Phần 2
Triển khai chứng chỉ số cho VPN – Phần 3

————-

VPN (Virtual Private Network – mạng riêng ảo) là công nghệ cho phép người dùng kết nối từ xa, ví dụ như nhà riêng hay khách sạn, vào mạng của tổ chức để truy cập tới các tài nguyên nội bộ như tài liệu, máy in, cơ sở dữ liệu, v.v.. một cách an toàn.

Các kết nối VPN thường được phân làm hai loại chính là:

  • Remote Access VPN (hoặc Client-to-Gateway VPN): cho phép người dùng ở xa kết nối vào mạng nội bộ của tổ chức thông qua một mạng công cộng như Internet.
  • Site-to-Site VPN (hoặc Gateway-to-Gateway VPN): giúp kết nối các mạng cục bộ tại các vị trí khác nhau thông qua một mạng công cộng như Internet.

Phần này sẽ trình bày các chi tiết để triển khai chứng chỉ số dùng cho giải pháp Remote Access VPN trên nền tảng Windows Server 2008 trong môi trường domain.

Phần 1 – Giới thiệu các giao thức thường dùng trong VPN

Khi hoạch định triển khai chứng chỉ cho các giải pháp VPN thì yếu tố chính ảnh hướng tới việc xác định yêu cầu cho các chứng chỉ là các giao thức đường hầm (tunneling protocol) cùng với giao thức xác thực (authentication protocol) sẽ được dùng.

1.1   Point-to-Point Tunneling Protocol (PPTP)

PPTP đóng gói gói dữ liệu PPP (Point-to-Point) trong một phiên bản đã chỉnh sửa của giao thức GRE (Generic Routing Encapsulation). (Xem Hình 1).

 

Hình 1 – Cấu trúc của gói tin PPTP

Ngoài đóng gói dữ liệu PPP bên trong một GRE header, PPTP còn tạo ra một cổng TCP 1723 tại VPN server để đón nhận kết nối từ VPN client cũng như quản lý dữ liệu được trao đổi qua đường hầm. Giao thức MPPE (Microsoft Point-to-Point Encryption) sử dụng thuật toán RC4 để mã hóa gói dữ liệu PPTP.

PPTP không yêu cầu phải có chứng chỉ cho VPN server hay VPN client và MPPE cũng không sử dụng chứng chỉ cho việc mã hóa dữ liệu được trao đổi giữa hai máy tính.

Các lựa chọn xác thực cho VPN

Khi người dùng kết nối vào mạng thông qua một kênh VPN thì họ phải cung cấp thông tin nhận dạng như tên tài khoản cộng với mật khẩu cho VPN server để được xác thực và cấp quyền truy cập. Dưới đây là các giao thức sau được dùng trong các giải pháp VPN nhằm xác thực người dùng:

  • PAP (Password Authentication Protocol): truyền thông tin nhận dạng của người dùng gồm tên tài khoản cùng mật khẩu tới máy chủ dưới dạng bản rõ (không được mã hóa) và vì vậy mà không an toàn.
  • CHAP (Challenge Handshake Authentication Protocol): là hình thức xác thực mạnh hơn PAP với cơ chế làm việc như sau:
  1. Server gửi cho client một thông điệp challenge ngẫu nhiên.
  2. Client sử dụng thuật toán MD5 để tạo giá trị băm từ đầu vào là mật khẩu của người dùng cộng với thông điệp challenge. Sau đó gửi giá trị băm này tới server.
  3. Server thực hiện băm bằng thuật toán MD5 đối với giá trị đầu vào là mật khẩu của người dùng cộng với thông điệp challenge mà nó gửi cho client lúc đầu rồi đem so sánh giá trị băm mà nó tạo ra với giá trị băm mà nó nhận được từ client. Chỉ nếu như hai kết quả giống nhau thì người dùng mới được xác thực. Việc sử dụng thông điệp challenge ngẫu nhiên của server nhằm chống lại kiểu tấn công phát lại (replay attack).
  • MS-CHAP (Microsoft Challenge Handshake Authentication Protocol): hoạt động của MS-CHAP cũng giống với CHAP ngoại trừ hai điều là nó dùng MD4 làm thuật toán băm và dùng MPPE để mã hóa toàn bộ dữ liệu được truyền giữa client và server.
  • MS-CHAPv2: yêu cầu cả client và server xác thực lẫn nhau. Ngoài ra, MS-CHAPv2 sử dụng các khóa mã hóa mạnh hơn và có các khóa khác nhau cho việc mã hóa dữ liệu gửi đi và giải mã dữ liệu nhận được.
  • EAP (Extensible Authentication Protocol): cung cấp các phần mở rộng cho việc xác thực kết nối PPP cũng như mạng không dây. Các phần mở rộng này cung cấp các phương thức xác thực nâng cao như xác thực hai yếu tố (two-factor authentication), Kerberos, mật khẩu một lần (one-time password) hay chứng chỉ số. Một trong các phần mở rộng mà EAP có thể dùng là TLS. Với EAP-TLS, client và server sử dụng các chứng chỉ số để xác thực lẫn nhau.

Chỉ nên dùng giao thức MS-CHAPv2 hoặc EAP-TLS để xác thức các kết nối VPN.

PPTP chỉ yêu cầu chứng chỉ nếu như EAP-TLS được chọn làm phương thức xác thực cho kết nối VPN, khi đó hai chứng chỉ cần phải có là:

  • User certificate: được cài đặt tại VPN server để xác thực tài khoản người dùng. Chứng chỉ này phải thỏa mãn các điều kiện sau:
    • Được cấp bởi CA mà chứng chỉ của CA này có trong đối tượng NTAuth trong AD DS (Active Directory Domain Services). Điều này chỉ cần thiết cho domain user có chứng chỉ được lưu trong smartcard.
    • Được cấp bởi CA nằm trong chuỗi chứng chỉ dẫn tới chứng chỉ của Root CA được tin cậy bởi cả VPN server và Authentication server.
    • Bao gồm Client Authentication OID trong extension EKU (Enhanced Key Usage).
    • Vượt qua các bước kiểm tra tính hiệu lực của chứng chỉ.
    • Bao gồm tên người dùng theo định dạng UPN (User Principal Name) trong extension Subject Alternative Name hoặc được ánh xạ tới một tài khoản trong AD DS.

Ngoài ra, có thể thêm vào User Certificate một application policy OID tùy chỉnh để chỉ ra rằng chứng chỉ này được dùng cho giải pháp VPN của tổ chức.

  • Authenticating server certificate: được cài đặt tại Authentication server. Nếu VPN server triển khai Windows Authentication thì chứng chỉ này được cài đặt tại VPN server còn nếu VPN server triển khai RADIUS được đặt tại RADIUS server. Chứng chỉ này phải thỏa mãn các điều kiện sau:
    • Được cấp bởi CA nằm trong chuỗi chứng chỉ dẫn tới chứng chỉ của Root CA được tin cậy bởi cả VPN server và Authentication server.
    • Bao gồm Server Authentication OID trong extension EKU.

1.2   Layer Two Tunneling Protocol (L2TP) với IPSec

L2TP kết hợp ưu điểm của PPTP và giao thức L2F (Layer Two Forwarding) của Cisco. Khi áp dụng L2TP, gói dữ liệu PPP gốc sẽ được đóng gói trong một L2TP header, và sau đó chúng được đóng gói trong một UDP header có UDP port là 1701 tại cả client và server. (Xem Hình 3).

L2TP không có sẵn cơ chế mã hóa như PPTP. Và để cung cấp khả năng mã hóa cho các phiên L2TP thì IPSec với ESP (Encapsulating Security Payload) được sử dụng. Như được thể hiện trong Hình 2 thì IPSec thực hiện cả hai việc là mã hóa và ký số để bảo vệ cho gói dữ liệu L2TP được đóng gói trong header của nó.

Hình 2 – Cấu trúc của gói tin L2TP

Các chi tiết về sự kết hợp giữa L2TP với IPSec (còn gọi là L2TP/IPSec) được đặc tả trong RFC 3193: “Securing L2TP Using IPSec”.

Khi triển khai L2TP/IPSec cho giải pháp VPN thì tối thiểu cần có hai chứng chỉ sau cho việc xác thực các điểm đầu cuối trên kênh IPSec:

  • VPN Server certificate: được dùng tại VPN server để xác thực mối liên kết IPSec được thiết lập giữa VPN server và VPN client. Chứng chỉ này phải thỏa mãn các điều kiện sau:
    • Được cấp bởi CA nằm trong chuỗi chứng chỉ dẫn tới cùng một Root CA như chứng chỉ được cấp cho VPN client.
    • Bao gồm tên miền DNS của VPN server trong trường Subject hoặc extension Subject Alternative Name.
    • (Tùy chọn) bao gồm IKE (Internet Key Exchange) Intermediate OID. Nếu OID của application policy này không hiện diện thì chứng chỉ phải bao gồm Client Authentication OID.
  • Client Computer certificate: được dùng tại VPN client để xác thực mối liên kết IPSec được thiết lập giữa VPN server và VPN client. Chứng chỉ này phải thỏa mãn các điều kiện sau:
    • Được cấp bởi CA nằm trong chuỗi chứng chỉ dẫn tới cùng một Root CA như chứng chỉ được cấp cho VPN client.
    • Bao gồm IKE Intermediate OID.
    • Bao gồm tên DNS của VPN client trong trường Subject hoặc extension Subject Alternative Name.

Nếu muốn triển khai L2TP/IPSec mà không cần tới chứng chỉ số thì có thể sử dụng chế độ PSK (Preshared-Key) của IPSec. Tuy nhiên hình thức này không được khuyên dùng với lý do an toàn vì nếu một VPN client bị xâm hại thì buộc phải đổi shared key tại tất cả các VPN client và VPN server còn lại.

Ngoài hai chứng chỉ dành cho VPN server và VPN client ở trên thì ta cũng cần các chứng chỉ cho Authenticating server và VPN user nếu EAP-TLS được chọn làm phương thức xác thực cho kết nối L2TP/IPSec.

1.3   Secure Sockets Tunneling Protocol (SSTP)

SSTP là một giao thức đường hầm mới được giới thiệu trong Windows Server 2008 và Windows Vista SP1.

SSTP được phát triển nhằm cho phép các VPN client kết nối tới VPN server mà cần xuyên qua các thành phần ngăn cản việc truyền nhận các gói tin PPTP, L2TP/IPSec như firewall, NAT (Network Address Translator), và Web proxy. SSTP làm được điều này bằng cách đóng gói các gói tin PPP trong một kênh HTTPS (HTTP over SSL).

Như được thể hiện trong Hình 3, gói dữ liệu PPP (gồm payload và header) được đóng gói trong một SSTP header rồi sau đó chúng được mã hóa bằng một phiên SSL.

Hình 3 – Cấu trúc của gói tin SSTP

Để hoàn chỉnh gói tin, một TCP header và một IPv4 (hoặc IPv6) header được thêm vào. Nội dung của các header này (IP, port) có thể được chuyển đổi khi truyền qua các thiết bị firewall, NAT mà không làm thay đổi gói dữ liệu SSL được mã hóa.

Để triển khai SSTP thì chứng chỉ được cài đặt tại SSTP server cần thỏa mãn các điều kiện sau:

  • Được cấp bởi CA nằm trong chuỗi chứng chỉ dẫn tới chứng chỉ của Root CA được tin cậy tại máy VPN client.
  • Bao gồm Server Authentication OID trong EKU.
  • Tên trong trường Subject khớp với tên miền DNS được VPN client sử dụng để kết nối tới VPN server.

Ngoài ra, nếu chọn EAP-TLS làm phương thức xác thực cho kết nối SSTP thì ta cần thêm các chứng chỉ cho Authenticating server và VPN user.

–manthang

2 comments

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s