Trong bài này chúng tôi sẽ cùng các bạn nghiên cứu một số cơ chế bảo mật có trong RDS cùng với đó là cách sử dụng Group Policy và các thiết lập cấu hình.
Remote Desktop Services (RDS) trong Windows Server 2008 R2 có nhiều tính năng mới so với dịch vụ Terminal Services cũ trước đây. Với các tính năng mới (một trong số chúng đã có ngay trong Windows Server 2008) chẳng hạn như RemoteApp, RD Gateway và RD Virtualization Host, Windows Server role này hiện cho phép bạn có thể linh động trong việc triển khai các ứng dụng riêng lẻ hoặc các máy trạm hoàn chỉnh qua giải pháp RDS hoặc VDI – trong nhiều trường hợp mà không cho các hệ thống Citrix hoặc các add-on của các hãng thứ ba khác.
Tuy nhiên về mặt bảo mật, những phức tạp bổ sung này biến thành những thức thức bảo mật mới. Chính vì vậy trong bài này, chúng tôi sẽ giới thiệu cho các bạn các cơ chế bảo mật bên trong RDS, sẽ giới thiệu cách sử dụng các thiết lập cấu hình và Group Policy để bảo mật tốt hơn, bên cạnh đó là cách thực hiện bảo mật tốt nhất cho một triển khai RDS.
Điểm mới trong R2
Nếu đến với RDS từ Windows Server 2008 Terminal Services, bạn sẽ không thấy nhiều thay đổi rõ dệt như khi nâng cấp lên từ Windows Server 2003. WS 2008 đã bổ sung thêm nhiều cải thiện lớn đối với Terminal Services, gồm có TS Web Access cho việc kết nối trình duyệt web, TS Gateway cho người dùng kết nối qua Internet, RemoteApp cho việc phân phối các ứng dụng đơn lẻ đến người dùng qua Remote Desktop Protocol (RDP) và Session Broker có trong tính năng cân bằng tải.
WS 2008 R2 đã bổ sung thêm nhiều điểm thú vị:
- Remote Desktop Virtualization cho giải pháp VDI
- RDS Provider cho PowerShell để các quản trị viên có thể thay đổi cấu hình và thực hiện các nhiệm vụ tại cửa sổ dòng lệnh và thông qua kịch bản.
- Remote Desktop IP Virtualization, cho phép gán các địa chỉ IP cho các kết nối trên cơ sở session hoặc chương trình.
- Một phiên bản RDP mới và máy khách Remote Desktop Connection (RDC), v. 7.0
- Fair Share CPU scheduling cho phép phân phối động thời gian xử lý giữa các session dựa trên số session tích cực.
- Windows Installer compatibility cho phép dễ dàng cài đặt các chương trình yêu cầu cấu hình trên người dùng.
- True multiple monitor hỗ trợ lên đến 16 màn hình, nhờ đó các chương trình hoạt động giống như chúng làm việc khi khi chạy trên máy khách.
Ngoài ra còn có nhiều cải thiện về audio/video cũng như sự hỗ trợ cho Windows Aero trong RD session (mặc dù vậy cần lưu ý rằng Desktop Composition, cho phép Aero, không được hỗ trợ trong một session đa màn hình).
Các cơ chế và sự ảnh hưởng bảo mật
Rõ ràng, các vấn đề bảo mật tiềm tàng phụ thuộc vào cách bạn triển khai RDS. Nếu bạn có một thiết lập phức tạp hơn, với những người dùng kết nối qua Internet hay thông qua một trình duyệt web, bạn sẽ có nhiều vấn đề bảo mật hơn so với trường hợp chỉ có một triển khai đơn giản, nơi người dùng chỉ có kết nối thông qua máy khách RDC qua LAN.
RDC gồm có một số cơ chế bảo mật có thể trợ giúp bạn tạo các kết nối RD an toàn hơn.
Nhận thực mức mạng (NLA)
Để bảo mật tốt nhất, bạn nên yêu cầu Network Level Authentication (NLA) cho tất cả kết nối. NLA yêu cầu người dùng cần được nhận thực đối với RD Session Host server trước khi tạo session. Điều này giúp bảo vệ máy tính từ xa tránh được người dùng nguy hiểm và mã độc. Để sử dụng NLA, máy khách phải sử dụng một hệ điều hành hỗ trợ các giao thức Credential Security Support Provider (CredSSP), có nghĩa Windows XP SP3 hoặc phiên bản hệ điều hành cao hơn, và đang chạy máy khách RDC 6.0 hoặc cao hơn.
NLA được cấu hình trên RD Session Host server thông qua Administrative Tools | Remote Desktop Services | Desktop Session Host Configuration. Để cấu hình một kết nối để sử dụng NLA, bạn thực hiện theo các bước sau:
- Kích phải vào Connection
- Chọn Properties
- Kích tab General
- Tích vào hộp chọn “Allow connections only from computers running Remote Desktop with Network Level Authentication” như thể hiện trong hình 1.
- Kích OK.
Hình 1
Transport Layer Security (TLS)
Một RDS session có thể sử dụng một trong ba lớp bảo mật để bảo vệ sự truyền thông giữa máy khách và RDS Session Host server:
- RDP security layer – Lớp này sử dụng mã hóa RDP nguyên bản và là lớp kém an toàn nhất. RD Session Host server không được nhận thực.
- Negotiate – Mã hóa TLS 1.0 (SSL) sẽ được sử dụng nếu máy khách hỗ trợ nó. Nếu không session sẽ quay trở lại bảo mật RDP.
- SSL – Mã hóa TLS 1.0 sẽ được sử dụng để nhận thực máy chủ và mã hóa dữ liệu được gửi giữa máy khách và Session Host server. Đây là tùy chọn an toàn nhất.
Để thực hiện bảo mật tốt nhất, bạn có thể yêu cầu mã hóa SSL/TLS. Để có được điều đó, bạn cần có một chứng chỉ số, đây là chứng chỉ có thể được phát hành bởi một CA nào đó hoặc tự ký.
Ngoài việc lựu chọn lớp bảo mật, bạn có thể chọn lớp mã hóa cho kết nối. Các tùy chọn bạn có thể lựa chọn ở đây là:
- Low – Sử dụng mã hóa 56 bit cho dữ liệu được gửi từ máy khách đến máy chủ. Không mã hóa dữ liệu được gửi từ máy chủ về máy khách.
- Client Compatible – Đây là tùy chọn mặc định. Nó sẽ mã hóa dữ liệu được gửi theo cả hai chiều giữa máy khách và máy chủ với độ dài khóa lớn nhất máy khách có thể hỗ trợ.
- High – Tùy chọn này sẽ mã hóa dữ liệu được gửi theo cả hai hướng giữa máy khách và máy chủ với mã hóa 128 bit.
- FIPS Compliant – Tùy chọn này mã hóa dữ liệu theo cả hai hướng giữa máy khách và máy chủ với mã hóa được FIPS 140-1.
Cần lưu ý rằng nếu bạn chọn mức High hoặc FIPS Compliant, các máy khách nào không hỗ trợ các mức này sẽ không thể kết nối.
Đây là cách cấu hình các thiết lập nhận thực máy chủ và mã hóa:
- Trên RD Session Host, mở Remote Desktop Session Host Configuration và hộp thoại Properties của kết nối như được mô tả ở trên.
- Trên tab General, chọn lớp bảo mật và mức mã hóa thích hợp từ các hộp sổ xuống, như thể hiện trong hình 2.
- Kích OK.
Hình 2
Bạn cũng có thể sử dụng Group Policy để điều khiển các thiết lập nhận thực và mã hóa này, cùng với các khía cạnh khác của RDS.
Group Policy
Có một số thiết lập Group Policy cho RDS trong Windows Server 2008 R2. Các thiết lập này được đặt bên dưới Computer Configuration"Policies"Administrative Templates"Windows Components"Remote Desktop Services trong Group Policy Management Console cho miền của bạn, như thể hiện trong hình 3.
Hình 3
Như những gì bạn có thể thấy, có nhiều chính sách để đăng ký, máy khách RDS và RD Session Host. Các chính sách có liên quan đến bảo mật cho RD Session Host gồm có:
- Server Authentication Certificate Template: Sử dụng chính sách này để chỉ định tên của mẫu chứng chỉ nhằm xác định chứng chỉ nào sẽ tự động được chọn để nhận thực RD Session Host server. Nếu bạn kích hoạt chính sách này, chỉ có các chứng chỉ được tạo bằng mẫu được chỉ định mới được xem xét trong khi chọn chứng chỉ để nhận thực RD Session Host server.
- Set Client Connection Encryption Level: Chính sách này được sử dụng để điều khiển xem có cần sử dụng mức mã hóa cụ thể nào không. Khi kích hoạt chính sách này, tất cả truyền thông phải sử dụng mức mã hóa cụ thể. Mức tùy chọn mặc định là High.
- Always Prompt for Password upon Connection: Bạn có thể sử dụng chính sách này để buộc RDS luôn yêu cầu mật khẩu người dùng khi đăng nhập vào một RD session, thậm chí nếu mật khẩu được nhập trong máy khách RDC. Mặc định, người dùng có thể đăng nhập tự động nếu mật khẩu được nhập trong máy khách RDC.
- Require Secure RPC Communication: Việc cho phép chính sách này có nghĩa chỉ các yêu cầu được nhận thực và được mã hóa từ máy khách mới được cho phép. Sự truyền thông với máy khách không tin cậy sẽ không được cho phép.
- Require Use of Specific Security Layer for Remote (RDP) Connections: Nếu bạn kích hoạt chính sách này, tất cả sự truyền thông giữa máy khách và Session Host server phải sử dụng lớp bảo mật mà bạn chỉ định ở đây (RDP, Negotiate hoặc SSL/TLS).
- Do Not Allow Local Administrators to Customize Permissions: Chính sách này sẽ vô hiệu hóa quyền quản trị đối với việc tùy chỉnh sự cho phép về bảo mật trong công cụ RD Session Host Configuration, mục đích là nhằm ngăn chặn các quản trị viên thay đổi nhóm người dùng trên tab Permissions trong công cụ cấu hình.
- Require User Authentication for Remote Connections by using Network Level Authentication: Với chính sách này, bạn có thể yêu cầu NLA cho tất cả các kết nối từ xa đến RD Session Host server. Chỉ các máy khách hỗ trợ NLA mới có thể kết nối.
Lưu ý:
Ở đây cách bạn có thể tìm ra liệu một máy khách có hỗ trợ Network Level Authentication hay không: Mở RDC client và kích vào biểu tượng ở góc trên bên trái, sau đó chọn “about”. Nếu NLA được hỗ trợ, bạn sẽ thấy “Network Level Authentication Supported”.
Các thiết lập Group Policy khác đáng kiểm tra đều nằm bên dưới nút RD Connection Client. Chúng gồm có:
- Do not allow passwords to be saved: Việc kích hoạt chính sách này sẽ vô hiệu hóa hộp kiểm lưu mật khẩu trong hộp thoại RDC client. Nếu một người dùng mở một file RDP và lưu các thiết lập của họ, các mật khẩu đã được lưu trước đó sẽ bị xóa. Điều này bắt buộc người dùng phải nhập vào mật khẩu mỗi khi họ đăng nhập.
- Specify SHA1 thumbprints of certificates representing trusted .rdp publishers: Với chính sách này, bạn có thể chỉ định danh sách các vân tay và khi một vân tay nào đó hợp lệ với một mẫu có trong danh sách, nó sẽ được cho là tin cậy.
- Prompt for credentials on the client computer: Chính sách này sẽ nhắc nhở người dùng về các chứng chỉ trên máy khách thay vì trên RD Session Host.
- Configure server authentication for client: Với chính sách này, bạn có thể xác định liệu máy khách có thể thiết lập một kết nối với RD Session Host hay không khi máy khách không thể nhận thực RD Session Host server. Thiết lập bảo mật cao nhất là “Do not connect if authentication fails”.
Bạn cũng có thể sử dụng Group Policy để cấu hình đồng thuận FIPS, tuy nhiên bạn sẽ không tìm thấy chính sách đó ở đây với các chính sách bảo mật RDS khác. Mà thay vào đó, nó nằm trong Computer Configuration"Windows Settings"Security Settings"Local Policies"Security Options. Trong panel phải, hãy cuộn xuống đến phần: “System Cryptography: use FIPS compliant algorithms for encryption, hashing and signing.” Khi bạn kích hoạt chính sách này, nó sẽ chỉ hỗ trợ thuật toán mã hóa Triple DES (3DES) để truyền thông RDS.
RD Web Access
Với các máy khách chưa cài đặt phần mềm RDC client, người dùng có thể truy cập các ứng dụng đã được publish với họ bằng trình duyệt web. Người dùng gõ Url vào trình duyệt để truy cập đến các tài nguyên RDS đã được publish với họ. RD Web Access Server là một máy chủ biệt lập với RD Session Host. Bạn định nghĩa các RD Web Access server nào có thể kết nối với RD Session Host server nào.
Giao diện web được cấu hình với SSL và người dùng phải được nhận thực với các chứng chỉ của họ. Người dùng đã qua nhận thực sẽ chỉ có khả năng xem các chương trình RemoteApp từ xa mà tài khoản của họ có quyền sử dụng vì các chương trình được publish sẽ bị cắt, bằng cách sử dụng danh sách điều khiển truy cập (ACL).
Web Access Server sử dụng chứng chỉ X.509 để cung cấp mã hóa. Mặc định, một chứng chỉ tự ký sẽ được sử dụng. Để bảo mật tốt hơn, bạn nên có một chứng chỉ từ một CA nào đó hoặc PKI của công ty bạn.
RD Gateway
RD Gateway (RDG) được sử dụng để cung cấp sự truy cập vào các tài nguyên RD đối với người dùng qua Internet. Máy chủ Gateway được đặt tại biên và nó sẽ lọc các yêu cầu RDS gửi đến theo Network Policy Server (NPS). NPS sử dụng hai chính sách: Chính sách nhận thực kết nối Connection Authorization Policy (CAP) dùng để liệt kê người dùng nào có thể truy cập RDG và chính sách nhận thực tài nguyên Resource Authorization Policy (RAP) dùng để chỉ định thiết bị nào mà người dùng CAP có thể kết nối với thông qua RDG.
Kết luận
Remote Desktop Services trong Windows Server 2008 R2 quả thực đã mở rộng thêm rất nhiều chức năng so với kẻ tiền nhiệm của nó, Terminal Services – tuy nhiên nó cũng có một số vấn đề bảo mật mới cần được đề cập đến. Các thực thi bảo mật tốt nhất trong cấu hình các thành phần trong triển khai RDS như RD Session Host, RD Web Access Server, RD Gateway và máy khách – và bằng cách sử dụng Group Policy để điều khiển cấu hình sẽ giúp bạn duy trì được một môi trường an toàn, trong khi đó vẫn cho bạn thu được nhiều lợi ích khác.
(Theo Windowsecurity )