Một số nâng cao có thể nói là tuyệt nhất cho Terminal Services trong bổ sung Windows Server 2008 đi liền với sự bảo mật toàn diện của nó. Trong bài này chúng tôi sẽ giới thiệu cho các bạn một số vấn đề giúp cho môi trường Terminal Server an toàn hơn. Sử dụng thẩm định hai hệ số
Có một vài hình thức khác nhau của thẩm định hai hệ số, tuy nhiên phương pháp chung nhất được hỗ trợ bởi Terminal Services là sử dụng Smart Cards. Sử dụng Smart Cards, người dùng không chỉ phải cung cấp các tiêu chuẩn đăng nhập hợp lệ mà còn phải có thể kết nối vật lý với thẻ thông minh đến thiết bị mà họ đang sử dụng như một thiết bị đầu cuối ở xa.
Để yêu cầu thẩm định thẻ thông minh, bạn phải tạo một Group Policy Object để sử dụng cho Terminal Server. Trong GPO, duyệt đến Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options và kích hoạt thiết lập Interactive Logon: Require Smart Card. Thêm vào đó bạn cũng cần phải kích hoạt Smart Cards để có thể chuyển hướng đến Terminal Server bằng cách tích vào hộp kiểm Smart Cards trên tab Local Resources của Remote Desktop Connection trên các máy trạm của người dùng.
Hình 1
Thực thi thẩm định mức mạng đối với tất cả máy khách
Trong các bổ sung trước của thẩm định Terminal Services cho máy chủ được thực hiện bởi việc kết nói đến một session trên máy chủ và việc nhập các tiêu chuẩn đăng nhập vào màn hình đăng nhập của Windows Server. Điều này tuy có vẻ khá bình thường nhưng từ phối cảnh bảo mật, việc hoàn tất một màn hình đăng nhập session có thể phơi bày các thông tin về mạng của bạn (tên miền và tên máy) hoặc để lại lỗ hổng trên máy chủ, tạo điều kiện cho kẻ tấn công có thể thực hiện hình thức tấn công DoS đến bất cứ ai có địa chỉ IP công của máy chủ.
Network Level Authentication (NLA) là một tính năng được giới thiệu trong phiên bản 6.0 của Remote Desktop Connection Client, tính năng này cho phép người dùng nhập vào trước các tiêu chuẩn đăng nhập của họ để sẽ được hiển thị tại cửa sổ đăng nhập của Windows Server. Windows Server 2008 cho phép chúng ta sử dụng tiện ích này và yêu cầu tất cả các máy khách đang kết nối để sử dụng nó.
Hình 2
Để sử dụng NLA, bạn phải sử dụng Windows 2008 Server, và các máy khách đang kết nối phải hỗ trợ CredSSP (Windows XP SP3, Windows Vista, Windows 7) cũng như đang chạy emote Desktop Connection 6.0 hoặc cao hơn. Bạn có thể cấu hình Terminal Server của mình để yêu cầu các máy khách của nó sử dụng NLA trong một số nơi khác nhau:
* Trong suốt quá trình cài đặt Terminal Services role ban đầu, khi bạn thấy màn hình Specify Authentication Method for Terminal Server, chọn tùy chọn Allow connections only from computers running Remote Desktop with Network Level Authentication.
* Truy cập Terminal Services Configuration MMC Snap-In, kích chuột phải vào kết nối terminal server đang được sử dụng bởi các máy khách và chọn properties, sau đó chọn tùy chọn Allow connections only from computers running Remote Desktop with Network Level Authentication.
* Tạo một Group Policy Object, duyệt đến Computer Configuration\Administrative Templates\Windows Components\Terminal Services\Terminal Server\Security, kích hoạt thiết lập Require user authentication for remote connections by using Network Level Authentication setting và sử dụng nó cho một OU gồm có terminal server.
Thay đổi cổng RDP mặc định
Mặc định, Terminal Server thường sử dụng cổng 3389 cho lưu lượng RDP. Và một số hacker thành thạo trên thế giới đều biết được điều đó. Chính vì vậy một trong những thay đổi nhanh nhất mà bạn có thể thực hiện đối với môi trường Terminal Server của mình để tránh những kẻ xâm nhập và thay đổi thỏa thuận cổng mặc định.
Để thay đổi cổng RDP mặc định cho Terminal Server, bạn hãy mở regedit và duyệt đến HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp. Tìm key PortNumber và thay thế giá trị hex 00000D3D (tương đương với 3389) thành một giá trị khác mà bạn muốn sử dụng.
Cách khác, bạn có thể thay đổi số cổng được sử dụng bởi Terminal Server của mình trên một kết nối cơ bản. Vẫn sử dụng regedit, duyệt đến HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\connection name. Tiếp đó, tìm đến key PortNumber và thay thế giá trị hex bởi một giá trị khác mà bạn muốn.
Cần phải lưu ý rằng khi thay đổi thiết lập trên máy chủ này, tất cả các máy khách kết nối cần phải được bảo đảm rằng chúng đang kết nối đến Terminal Server với cổng mới đã được gắn thẻ trên địa chỉ IP của các máy chủ. Cho ví dụ, việc kết nối đến Terminal Server với một địa chỉ IP trong là 192.168.0.1 có nghĩa hiện đang sử dụng cổng non-standard 8888 sẽ yêu cầu người dùng nhập 192.168.0.1:8888 vào Remote Desktop Connection.
Hình 3
In ấn dễ dàng và hạn chế máy in được chuyển hướng
Việc in ấn từ các thiết bị được kết nối nội bộ với các máy trạm client luôn là một yếu điểm của Terminal Services trước Windows Server 2008. Để thực hiện điều đó, bạn phải bảo đảm giống chính xác phiên bản của driver máy in đã được cài đặt trên cả máy chủ và máy khách, mặc dù vậy đôi khi sau đó vẫn không có sự làm việc. Từ quan điểm bảo mật, chúng ta không bao giờ muốn cài đặt thêm nhiều driver vào hệ thống của mình ngoài những gì bắt buộc. Mỗi một driver được cài đặt vào máy chủ đều có tiền ẩn khả năng mở rộng bề mặt tấn công của nó.
Windows Server 2008 đã giới thiệu một tính năng có tên Easy Print, tính năng này sẽ thay đổi triệt để cách kết nối nội bộ các máy in được quản lý. Về bản chất, TS Easy Print là một driver phục vụ như một proxy để tất cả dữ liệu máy in được chuyển hướng qua. Khi một máy khách in đến một thiết bị bằng driver Easy Print, các thiết lập dữ liệu và máy in sẽ được chuyển đổi thành định dạng phổ biến rồi gửi đến Terminal Server xử lý. Thực hiện điều này, sau khi kích in, hộp thoại máy in sẽ được khởi chạy từ máy khách, không trong terminal session. Điều này có nghĩa rằng không driver nào đã được cài đặt cho Terminal Server để xử lý các công việc in từ các thiết bị in kết nối nội bộ.
Để cấu hình Easy Print, bạn cần phải bảo đảm tất cả các thiết bị in được gắn nội bộ phải có các máy in logic được cấu hình trên các máy khách đã thiết lập để sử dụng driver của Easy Print. Tính năng Easy Print được hỗ trợ bởi tất cả các máy khách Windows XP SP3, Windows Vista và Windows 7 đang chạy Remote Desktop Connection 6.1 hoặc mới hơn và .NET Framework 3 SP1.
Hình 4
Khi đã cấu hình các thiết bị gắn nội bộ ở mức máy trạm, bạn cần bảo đảm rằng máy in duy nhất được chuyển hướng đến Terminal Server là máy in đang sử dụng TS Easy Print, thành phần được thiết lập như một máy in mặc định. Bạn có thể thực hiện điều này bằng cách tạo một Group Policy Object và duyệt đến Computer Configuration\ Administrative Templates\Windows Components\Terminal Services\Terminal Server\Printer Redirection, sau đó kích hoạt tùy chọn Redirect only the default client printer.
Hạn chế các tài khoản người dùng
Nếu bạn thuê một ai đó cày trên cánh đồng của mình thì tất cả những gì thuộc về cơ bản nhất mà bạn cần thực hiện là cho anh ta bộ chìa khóa của chiếc máy cày … mà không phải là những chiếc chìa khóa đa năng, nhà kho và xe con. Điều này không phải vì bạn không cần sự kết hợp để thực hiện một nhiệm vụ nào đó cho thuận tiện mà vì bạn thực sự không muốn thấy một chiếc John Deere mới toanh của bạn bị mất tích hay phải tìm mệt mỏi. Vấn đề cũng tương tự như vậy trong công nghệ, chúng ta cần phải biết rằng, khi một người dùng nào đó đang kết nối hay đang làm việc trực tiếp từ một máy chủ vốn đã có sự truy cập đến một vài thứ mà họ không cần đến, và để tạo một môi trường an toàn hơn, chúng ta cần phải hạn chế điều đó. Đây không chỉ là biện pháp để bảo vệ các tiêu chuẩn của người dùng đang được thỏa hiệp mà còn bảo vệ người dùng chính đáng với những ý định không chính đáng. Một số thứ mà chúng ta có thể thực hiện ở đây là:
Sử dụng các tài khoản cụ thể cho người dùng
Người dùng có thể làm việc nội bộ với các ứng dụng nào đó, sau đó truy cập vào Terminal Server để truy cập đến các ứng dụng khác. Việc sử dụng cùng một tài khoản cho truy cập nội bộ và truy cập từ xa sẽ đơn giản hơn trong vấn đề quản lý, tuy nhiên nó cũng dễ bị thỏa hiệp hơn bởi các kẻ tấn công có thể thỏa hiệp một loạt các tiêu chuẩn để truy cập vào các ứng dụng. Việc tạo một tài khoảng người dùng riêng biệt cho sự truy cập Terminal Server và hạn chế quyền của nó cho những ứng dụng cần thiết sẽ giảm nhẹ được sự ảnh hưởng của kiểu thỏa hiệp này.
Sử dụng các chính sách hạn chế phần mềm
Các chính sách hạn chế phần mềm có thể được cấu hình để cho phép hoặc từ chối sự sử dụng đối với một số ứng dụng nào đó và vẫn được sử dụng trong các máy tính công, mặc dù vậy chúng cũng rất tuyệt trong các môi trường Terminal Server.
Kiểm tra sự truy cập người dùng vào máy chủ Terminal bằng Group
Mặc định, chỉ có các thành viên của nhóm Terminal Servers Remote Desktop Users (và Domain/Local Administrators) mới có thể đăng nhập vào Terminal Server đó. Tuy nhiên bạn cần minh chứng và thẩm định các thành viên nhóm một cách thường xuyên. Nếu người dùng không cần đăng nhập vào một Terminal Server, hãy remove họ khỏi nhóm người dùng ở xa.
Cấu hình bảo mật bổ sung bằng Group Policy
Nhiều cải tiến bảo mật cho các môi trường Terminal Server được cung cấp thông qua Group Policy. Đây là một số ví dụ điển hình mà chúng tôi muốn giới thiệu cho các bạn.
1. Hạn chế người dùng Terminal Services vào một Session từ xa
Trong hầu hết các trường hợp, một người dùng không cần khởi tạo nhiều session trên một Terminal Server. Việc cho phép người dùng khởi tạo nhiều session sẽ làm cho môi trường của bạn có nhiều lỗ hổng cho tấn công từ chối dịch vụ (DoS), do các tiêu chuẩn của người dùng bị thỏa hiệp. Bạn có thể cấu hình thiết lập này bằng cách duyệt đến Computer Configuration\Administrative Templates\Windows Components\Terminal Services\Terminal Server\Connections bên trong GPO của bạn.
2. Không cho phép sự chuyển hướng drive
Trừ khi bạn có một nhu cầu nào đó thật cần thiết, khi đó mới cho phép người dùng truy cập vào các ổ đĩa nội bộ từ một Terminal Server session vì hành động này có thể tạo một kênh truyền thông không an toàn. Với khả năng này, người dùng không chỉ copy dữ liệu vào một Terminal Server mà dữ liệu có thể chứa mã độc và có thể được thực thi trên máy chủ.
Bạn có thể cấu hình thiết lập này bằng cách duyệt đến Computer Configuration\Administrative Templates\Windows Components\Terminal Services\Terminal Server\Device and Resource Redirection bên trong GPO.
3. Thiết lập hạn chế thời gian cho các Session bị hủy kết nối
Nhìn chung, chúng ta nên cho phép người dùng thoát khoải một session mà không cần đăng xuất hoàn toàn. Vì khi ai đó có thể tăng điều khiển trên session này thì họ có thể sẽ truy cập vào phần dữ liệu nhạy cảm hoặc biết được răng họ đã được xác thực cho ứng dụng mạng khác. Cách tốt nhất để khắc phục tình trạng này là thiết lập sự hạn chế về thời gian ở mức thấp để hủy kết nối các session. Khi đến giới hạn thời gian, session sẽ bị đóng lại.
Bạn có thể cấu hình thiết lập này bằng cách duyệt đến Computer Configuration\Administrative Templates\Windows Components\Terminal Services\Terminal Server\Session Time Limits bên trong GPO.
4. Vô hiệu hóa bộ cài Windows
Chỉ các quản trị viên mới có quyền cài đặt các ứng dụng vào Terminal Server. Trong hầu hết các trường hợp, không cho người dùng được phép cài đặt các ứng dụng nếu họ không đăng nhập với quyền quản trị viên. Mặc dù vậy, nếu một số người dùng nào đó được cho là cần phải có hành động nâng đặc quyền thì bạn có thể hạn chế khả năng cài đặt một số chương trình bằng cách vô hiệu hóa Microsoft Windows Installer.
Có thể cấu hình thiết lập này bằng cách duyệt đến Computer Configuration\Administrative Templates\Windows Components\Windows Installer bên trong GPO.
Cần lưu ý rằng bạn phải cấu hình thiết lập này là Enabled thay cho Always. Như vậy sẽ bảo đảm rằng bạn vẫn có thể publish các ứng dụng cho Terminal Server thông qua Group Policy. Còn sử dụng tùy chọn Always sẽ không cho phép bạn thực hiện điều đó.
5. Hạn chế thư mục
Mặc dù chúng ta (các quản trị viên) có cung cấp nhiều location riêng và công cho việc lưu trữ bảo mật dữ liệu nhưng một số người dùng của chúng ta vẫn tùy tiện lưu dữ liệu trên desktop của họ. Tuy nhiên có một cách để tạo một bức tường bảo vệ dữ liệu cho họ đó là chúng ta có thể chuyển hướng (redirect) desktop của họ đến một location lưu trữ thích hợp trên một file server.
Bạn có thể cấu hình thiết lập này bằng cách duyệt đến User Configuration\Windows Settings\Folder Redirection bên trong GPO. Desktop của người dùng là thư mục mà chúng ta có thể chuyển hướng.
6. Chặn truy cập vào Control Panel
Cũng như với Microsoft Installer, người thông thường không nên truy cập vào Control Panel nói chung. Mặc dù vậy, nếu những người nào đó cần phải có các đặc quyền quản trị viên để thực hiện một số thao tác thì bạn cũng có thể hạn chế sự truy cập của họ vào control panel bằng cách cấu hình thiết lập này.
Bạn có thể cấu hình thiết lập này bằng cách duyệt đến User Configuration\Administrative Templates\Control Panel bên trong GPO.
Kích hoạt sự thẩm định
Có một câu chuyện mà chúng tôi muốn kể với các bạn ở đây đối với một nhóm các sinh viên, họ được trợ cấp một chiếc tủ lạnh để sử dụng chung. Hầu hết mọi người khu trọ sử dụng quy tắc vàng đó là không ăn thức ăn không phải của mình, nhưng có một lần đã có xảy ra một vụ mất trộm thức ăn. Điều này diễn ra và thực sự không ai trong số họ có thể thực hiện gì để ngăn chặn điều này mà vẫn phải sử dụng nó. Khi đó, một vài người trong số các sinh viên này đã quyết định sử dụng một phương pháp để giải để tìm ra thủ phạm bằng cách đặt một ổ bánh vào tủ lạnh. Và cuối cùng họ đã tìm ra thủ phạm bằng cách để ý người nào dùng phần lớn thời gian của ngày tiếp theo trong phòng tắm. Phương pháp sử dụng công thức bánh nhuận tràng này đã phát huy tác dụng.
Quan điểm của câu chuyện là trong nhiều tình huống, chúng ta không thể ngăn chặn một lỗi bảo mật nào đó nhưng với một chiến lược thẩm định thích hợp, chúng ta hoàn toàn có thể tìm ra được nơi xuất hiện lỗ hổng, cách nó xuất hiện như thế nào và đôi khi phát hiện được cả ai đã thực hiện hành động đó. Tuy nhiên chúng ta cần chọn các thuật ngữ để thẩm định trên Terminal Server sao cho thích hợp để nhận được các thông tin cần thiết mà không bị quá tải do quá nhiều thông tin. Microsoft khuyên chúng ta nên sử dụng các thiết lập thẩm định dưới đây:
* Audit Account Logon Events - No Auditing
* Audit Account Management - Audit Success and Failure
* Audit Directory Services Access - No Auditing
* Audit Logon Events - Audit Success and Failure
* Audit Object Access - Audit Failure
* Audit Policy Change - Audit Success and Failure
* Audit Privilege Use - Audit Failure
* Audit Process Tracking - Audit Failure
* Audit System Events - Audit Success and Failure
Cùng với các thiết lập đó, bạn cũng có thể sử dụng thẩm định kết nối Connection Auditing bên trong Terminal Services. Cách thức này sẽ cho phép bạn thẩm định một vài mục cụ thể của Terminal Server. Để xem và cấu hình các thiết lập này, bạn hãy mở Terminal Services Configuration snap-in, kích chuột phải vào kết nối mà bạn muốn kích hoạt thẩm định, sau đó kích Properties. Vào tab Security, kích Advanced, đánh tên người dùng của tài khoản muốn kích hoạt thẩm định. Ở đây bạn có thể chọn một trong các tùy chọn được liệt kê sẵn.
Hình 5
Kết luận
Bài viết này là hướng dẫn khá đầy đủ mà bạn cần biết về bảo mật Terminal Server, tuy nhiên nó chỉ nhấn mạnh một vài vấn đề lớn lớn thực sự cần thiết. Terminal Services có một quãng đường đi rất dài từ khi khởi đầu và đó cũng là quãng đường đi mà bảo mật cần phải thực hiện kèm, tuy nhiên chắc chắn không lâu nữa chúng ta sẽ có được những thay đổi thích hợp về cấu hình.
(Windowsecurity)