IP:18.226.214.91

Máy tính
Kiến thức cơ bản
Mạng & Internet
Tin học văn phòng
Bảo mật & AntiVirus
Tiện ích - Hệ thống
Lập trình - Cơ sở dữ liệu
Đồ họa & Multimedia
Thử nghiệm - Đánh giá
Kỹ thuật phần cứng




Khóa ứng dụng với Software Restriction Policies
29/09/2009 08:31 AM

Khi các chuyên gia IT tìm cách giảm chi phí quyền sở hữu, hoặc TCO, các desktop của họ, sẽ có hai chiến lược chính được thường nói đến. Đầu tiên là đưa tài khoản người dùng desktop ra khỏi nhóm Administrators...

Và thứ hai là hạn chế những ứng dụng người dùng có thể chạy. Tiếp cận những vấn đề này có thể khó khăn trong một môi trường công ty, nhưng Windows Vista® đã cung cấp những công nghệ giúp bạn đạt được điều này.

Windows Vista, và chức năng User Account Control (UAC) của nó, đã tiến một bước khổng lồ trong việc giúp các chuyên gia IT điều hành người dùng trong công ty của họ như là thành viên của nhóm Users ((Standard Users). UAC thay đổi nội dung an ninh mặc định của tất cả các ứng dụng để là của một User thay vì một Administrator. Di trú đến nhóm Users vẫn là một công việc khó khăn, nhưng khi được thêm vào hệ biến hoá mới này, công việc đã trở nên dễ dàng hơn.

Sau khi phân tích những khó khăn khi di chuyển người dùng vào nhóm Users, hay thỉnh thoảng trong quá trình này, nhiều quản trị viên biết được người dùng của họ cần chạy ứng dụng nào và xem xét những bước cần thiết để cho phép những ứng dụng này. Chức năng nguyên tắc hạn chế phần mềm được thiết kế để giúp những chuyên gia IT làm được điều này.

Bạn có thể đơn giản xác định xem những ứng dụng nào được cho phép chạy và sau đó triển khai nguyên tắc sử dụng Group Policy. Làm một nguyên tắc có hiệu lực trong suốt toàn bộ một doanh nghiệp có thể giảm bớt TCO, vì đóng cửa này sẽ hạn chế các vấn đề liên quan đến các ứng dụng không được hỗ trợ

Software Restriction Policy làm việc thế nào

Nguyên tắc hạn chế phần mềm mục đích là kiểm soát chính xác người dùng có thể thực hiện code nào trên một máy Windows Vista. Bạn, là quản trị viên, tạo một nguyên tắc xác định cái nào có thể(hay không thể) chạy trong môi trường của bạn. Nguyên tắc này sau đó được đánh giá ở bất kì nơi đâu và bất kì lúc nào code được thực hiện. Nó bao gồm cả quá trình khởi tạo, trong một call đến ShellExecute, và khi một script chạy.

Nếu nó xác định một ứng dụng được cho phép thực hiện, ứng dụng sẽ khởi động. Còn nếu nó xác định ứng dụng không được phép chạy, ứng dụng bị khoá và người dùng sẽ được thông báo. Ví dụ, nếu bạn cố chạy Solitaire từ menu Start và nó không được cho phép, bạn sẽ nhận được một hộp thông báo như hình 1.

 

UI cho việc xác định một nguyên tắc hạn chế phần mềm được hiện ở Group Policy Object Editor (GPOE), và đây là nơi nguyên tắc khoá được tạo ra. Có một vài phương pháp khác nhau để xác định code nào được chạy mà code nào không được chạy. Một khi nguyên tắc đã hoàn tất và đã kiểm tra xong, bạn có thể triển khai nó.

Xác định Software Restriction Policy

Quyết định quan trọng đầu tiên bạn thực hiện, một quyết định sẽ ảnh hưởng to lớn đến cách thức làm việc của nguyên tắc hạn chế phần mềm trong môi trường của bạn, là chọn dạng nguyên tắc mặc định. Các nguyên tắc hạn chế phần mềm có thể được triển khai trong hai chế độ: Allow List hay Deny List. Về cơ bản, tức là bạn chọn muốn tạo một nguyên tắc miêu tả mỗi ứng dụng được cho phép chạy trong môi trường của bạn hay là một nguyên tắc xác định mọi nguyên tắc không được chạy.

Trong chế độ Allow List, quy tắc mặc định trong nguyên tắc của bạn là Restricted và sẽ khoá tất cả các ứng dụng mà bạn không cho phép chạy. Trong chế độ Deny List, quy tắc mặc định là Unrestricted mà chỉ hạn chế các ứng dụng mà bạn đã liệt kê

Chế độ Deny List là một cách tiếp cận không thực tế nếu bạn đang tìm cách giảm nhiều TCO và cái lợi an nình từ các ứng dụng bị khoá. Tạo và duy trì một danh sách bao quát kháo các ứng dụng malware và những ứng dụng có vấn đề khác sẽ là điều không thể; do đó tôi khuyên các bạn nên triển khai nguyên tắc hạn chế phần mềm trong chế độ Allow List.

Kiểm kê các ứng dụng trong môi trường của bạn

Nếu bạn đang thiết kế một nguyên tắc xác định sẽ chạy ứng dụng nào, bạn cần xác định chính xác người dùng của bạn yêu cầu ứng dụng nào. Chức năng nguyên tắc hạn chế phần mềm cung cấp một chức năng logging nâng cao với một nguyên tắc rất đơn giản để hiểu chính xác ứng dụng nào đang chạy trên môi trường của bạn.

Trong một nhóm mẫu các máy tính trong môi trường của bạn, triển khai nguyên tắc hạn chế phần mềm với quy định mặc định là Unrestricted và đảm bảo remove toàn bộ những quy định khác. Kế hoạch là bật nguyên tắc hạn chế phần mềm nhưng không cho phép hạn chế ứng dụng; thay vào đó, bạn sử dụng nó để giám sát xem ứng dụng nào đang được chạy.

Tiếp theo, tạo gía trị registry sau để kích hoạt chức năng logging nâng cao và cài đường dẫn đến nơi file log nên được ghi:

"HKLM\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers"

String Value: LogFileName, <path to a log file>

Bây giờ, khi một ứng dụng chạy và nguyên tắc hạn chế phần mềm đánh giá nó (nó được đánh giá dẫu cho nó nguyên tắc cho phép chạy mọi thứ), một cổng vào được viết vào file log.

Mỗi cổng log bao gồm caller của nguyên tắc hạn chế phần mềm và tiến trình ID (PID) của quá trình call, đính được đánh giá, dạng quy định của nguyên tắc hạn chế phần mềm được hit, và một nhân diện cho quy định. Đây là một cổng vào mẫu được viết khi người dùng đôi chuột vào notepad.exe:

explorer.exe (PID = 3268) identified
C:\Windows\system32\notepad.exe as Unrestricted using path rule, Guid ={191cd7fa-f240-4a17-8986-94d480a6c8ca}

File log này đại diện cho mỗi mẩu của code thực thi mà nguyên tắc hạn chế phần mềm sẽ kiểm tra khi nó được kích hoạt và cài đặt khoá hệ thống. Điều đó có nghĩa bạn phải quyết định cho mỗi cổng vào trong file log liệu nó có được tính vào trong Allowed List của bạn không. Chú ý là bạn sẽ thấy một vài binary đang được check xem có là một phần của Windows® không và yêu cầu cho hệ thống để làm việc.

Kỹ thuật log mà chúng ta nói ở đây cung cấp một cách rõ ràng để bạn hiểu được chính xác ứng dụng nào nguyên tắc hạn chế phần mềm sẽ gặp trong ứng dụng của bạn. Nhưng đây không phải là cách duy nhất để thực hiện điều này.

Inventory Collector được tính là một phần của Microsoft® Application Compatibility Toolkit 5.0 cho bạn khả năng để kiểm kê các ứng dụng đang được môi trường của bạn sử dụng. Công cụ này cung cấp một cách khác để bạn phát hiện những ứng dụng nào được cài đặt trong môi trường của bạn, và cũng hiển thị kết quả trong một cơ sở dữ liệu trung tâm.

Tạo thêm các quy định

Bây giờ chúng ta đã có một danh sách các ứng dụng phải được cho phép chạy trong môi trường của bạn, bây giờ chúng ta sẽ tạo các quy định thật sự cho cho phép những ứng dụng này được chạy. Chức năng nguyên tắc hạn chế phần mềm sử dụng hai cách để xác định nguyên tắc - một là dựa trên các thuộc tính bằng mật mã của một ứng dụng (như dữ liệu hỏng của nó), và một cái khác là xác định Trusted Path hay folder mà ứng dụng được tin cậy nằm ở đó.

Hình 2 mô tả nơi bạn sẽ add quy định để cho phép ứng dụng chạy trong node Software Restriction Policies của GPOE (gpedit.msc). Cách dễ nhất để xác định ứng dụng trong môi trường của bạn là tạo ra một quy định dữ liệu hỏng cho mỗi binary mà bạn gặp trong suốt thời gian logging.

 

Vì hash là một giá trị duy nhất được trả lại cho một nhóm xác định các bit, mỗi binary trong nguyên tắc của bạn sẽ có một hash khác nhau. Cách tiếp cận này khá an toàn và chỉ cho phép các binary xác định trong nguyên tắc của bạn được chạy.

May mắn, trở ngại này có thể tránh bởi vì có hai cách khác để xác định quy tắc giúp nó dễ dàng hơn khi sử dụng các nguyên tắc hạn chế phần mềm trong môi trường của bạn. Tìm hiểu kĩ hơn về lộ trình an ninh mã hoá an ninh, bạn có thể tạo một quy tắc cho phép bất kì binary nào được kí kết bằng một chứng nhận xác định được phép chạy.

Làm điều này sẽ đơn giản hoá việc duy trì danh sách nguyên tắc, vì khi một ứng dụng được update, các binary mới sẽ được kí kết bằng cùng chứng nhận của binary trước.
Tuy nhiên, nếu bạn không muốn phiên bản trước của binary chạy trong môi trường của mình, bạn cần add mặc định quy tắc Restricted hash để chặn file không được cho phép.
Mặc định, đánh gía các nguyên tắc chứng nhận được tắt cho các nguyên tắc hạn chế phần mềm. Có hai lý do vì sao phải làm điều này.

Đầu tiên, các nguyên tắc chứng nhận trong nguyên tắc hạn chế phần mềm được xác định bằng cách xem store Trusted Publishers của hệ thống có cái gì. Vì store Trusted Publishers được dùng cho những mục đích khác chứ không chỉ cho các quy định nguyên tắc hạn chế phần mềm, điều này yêu cầu thêm thời gian và cần xem xét khi nào thì chức năng nguyên tắc hạn chế phần mềm nên sử dụng.

Lý do thứ hai là để xác định xem chữ kí của một file có hiệu lực không, bạn phải lấy một hash của file và so sánh nó với thông tin chữ ký. Hash một file là một hoạt động tốn kém - toàn bộ file phải được đọc trơ tru của đĩa và xử lý để tính toán hash này.

Để kích hoạt quy định chứng nhận, điều hướng đến node Software Restriction Policies chọn Enforcement Object trong pane kết quả. Đôi chuột để mở dialog thuộc tính của nó và chọn mục enforce certificate rules radio.

Một cách thông thường khác để xác định code là dùng đường dẫn của code trên máy local. Đây là một kĩ thuật hiệu quả và phù hợp, nhưng nó có một hạn chế - bạn phải cẩn thận đảm bảo cài đặt an ninh được cài đặt thích hợp trên folder.

Nếu bạn add một nguyên tắc đường dẫn xác định, và đường dẫn này cho phép người dùng viết những file ở đó (lên desktop, ví dụ), chúng sẽ thực hiện bất kì điều gì chúng muốn bằng cách đặt thực thi trên folder đó. Tuy nhiên, nếu người dùng của bạn không ở trong nhóm Administrators, chúng không có khả năng thay đổi bất cứ điều gì trong thư mục Program Files hay Windows. Điều đó có nghĩa nếu tất cả các ứng dụng của bạn nằm trong thư mục Program Files và người dùng của bạn không phải là Administrators, sau đó bạn nên tìm đến nguyên tắc đường dẫn để có được nguyên tắc đơn giản và hiệu quả.

Các nguyên tắc Network Zone

Nguyên tắc hạn chế phần mềm cũng có một nguyên tắc gọi là Network Zone rules, mặc dù dạng nguyên tắc này không được đồng ý. Ý định ban đầu của những nguyên tắc này dựa trên ý tưởng là nguồn của code thực thị xác định nên được xác định và tin tưởng, và do đó code sẽ được cho phép chạy. Không may, điều này khá khó thực hiện, và kết quả, không bao giờ làm việc tốt. Hiện nay, dạng nguyên tắc này không phải bắt buộc ở phần lớn các nơi trên các điểm cổng vào nguyên tắc hạn chế phần mềm.

Trong cách trường hợp phần lớn các ứng dụng được cài đặt vào thư mục %Program Files% nhưng có những file thực thu khác được cài đặt đâu đó và được một chứng nhận xác định chữ ký, cũng hợp lý để dùng những dạng nguyên tắc khác. Một vài nguyên tắc hash, một vài nguyên tắc đường dẫn, và bạn sẽ tìm được đúng nguyên tắc cho mình.

 

 Bắt buộc nguyên tắc

Chức năng nguyên tắc hạn chế phần mềm cung cấp một khoảng rộng trên hệ thống được bảo mật. Ý tưởng là từ bất kì vị trí nào code có thể được thực thi nên được tích hợp với nguyên tắc hạn chế phần mềm, và đổi lại, kiểm tra nguyên tắc xem code thực thi có được cho phép chạy không.

Có rất nhiều điểm để kiểm tra nguyên tắc hạn chế phần mềm, điểm cổng vào dễ nhất là CreateProcess. Trong suốt CreateProcess, nguyên tắc được kiểm tả để xác định liệu binary có đại diện cho ứng dụng được cho phép thực thi hay không. Kiểm tra nguyên tắc được thực hiện bằng SaferIdentifyLevel API, đã được ghi nhận công khai. Quá trình tổng quát được mô tả ở hình 4

 

Sau CreateProcess, cách dùng thông dụng nhất tiếp theo sử dụng API nơi bắt buộc nguyên tắc hạn chế phần mềm được là ShellExecute. Đây là API được gọi ra khi người dùng click vào một ứng dụng trên menu Start hay đôi chuột vào một thứ nào đó trên desktop.

ShellExecute có thể được gọi trên rất nhiều định dạng file. Trong trường hợp là file .txt, gọi ShellExecute trên file này không thật sự làm file được thực thi - về cơ bản, tất nhiên là file được mở ra. Vì lý do này, nguyên tắc hạn chế phần mềm chứa một danh sách cách dạng file thực thi để nó có thể kiểm soát dạng file nào được check khi gọi ra ShellExecute. Bạn có thể tuỳ chỉnh danh sách các dạng file thực thi này trong nguyên tắc hạn chế phần mềm UI.

Phần lớn các ứng dụng có một thực thi và một vài DLL được load. Và điển hình nhiều ứng dụng chạy trên hệ thống. Điều đó có nghĩa LoadLibrary sẽ yêu cầu nhiều check của nguyên tắc. Tuỳ thuộc vào nguyên tắc của bạn để xác định code, điều này có thể khá đắt để bắt buộc điểm cổng vào - tưởng tượng kiểm tra hash của mỗi DLL load trên hệ thống, và sau đó so sánh nó với một danh sách có thể lên đến hàng nghìn hash.

Chức năng này được tắt mặc định, nhưng có thể bật lên bằng tay. Để làm điều này, điều hướng đến node Software Restriction Policies trong gpedit.msc và đôi chuột vào Enforcement. Sau đó, chọn nút All software files radio

Như đã nhắc trước, nguyên tắc hạn chế phần mềm được tích hợp với phần lớn các script host trên hệ thống. Nó bao gồm cmd, VBScript, Cscript, and JScript®. Những cổng vào này, cũng như những cổng khác, sử dụng API nguyên tắc hạn chế phần mềm bắt buộc: SaferIdentifyLevel.

SaferIdentifyLevel API xác định liệu một thực thi cụ thể có được cho phép chạy hay không bằng cách tìm kiếm thông tin nhân diện trong các nguyên tắc hạn chế phần mềm phù hợp. Đây là một API được ghi chép công khai. Các host script thứ ba và các môi trường thực thi có thể và nên dùng để tích hợp với các nguyên tắc hạn chế phần mềm để nguyên tắc có thể xác định liệu một mẩu code thực thi có nên được cho phép chạy không.

Điều hành khi là Standard User

Một chức năng không quá nổi tiếng của nguyên tắc hạn chế người dùng là khả năng lọc đặc quyền của những ứng dụng nhất định khi chúng được launch. Chức năng này được giới thiệu trong Windows XP, nhưng nó không được expose trong nguyên tắc hạn chế phần mềm UI đến mãi Windows Vista.

Trong cách này, nó là một tiến thân đến Windows Vista UAC vì bạn có thể dùng nó để chạy một ứng dụng như là một Standard User ngay cả khi người dùng là một thành viên của nhóm Administrators. Điều này là những gì diễn ra khi bạn tạo một nguyên tắc và cài đặt Security Level to Normal User trong Additional Rules UI.

Cả chức năng lọc token của UAC và các quy định Normal User của một số nguyên tắc hạn chế phần mềm tận dụng ưu điểm của API nằm bên dưới triển khai cùng hành vi như của CreateRestrictedToken API. Tuy nhiên, toàn thể khác biệt cấu trúc trong các công nghệ là khá lớn. Nhưng UAC khác với những nguyên tắc hạn chế phần mềm ở một vài điều chủ chốt.

Đầu tiên, trong Windows Vista đã bật UAC, mỗi cài đặt được bắt đầu với một token an ninh tương tự như một thành viên của nhóm Users mặc định, ngay cả người dùng là một Administrator. Điều này có thể đạt được với nguyên tắc hạn chế phần mềm, nhưng không có nghĩa là khởi động một ứng dụng với token thật sự của người dùng - ví dụ, khi người dùng cần cài đặt một ứng dụng. Thay đổi trong nội dung an ninh mặc định và giảm bớt truy cập đến token quản trị đầy đủ của người dùng là những cái lợi chủ chốt của UAC

Khác biệt thứ hai là, trong trường hợp của các thực thị, chính code mô tả cấp độ đặc quyền được yêu cầu để nó hoạt động. Đây là khác biệt chủ chốt bởi vì nhà cung cấp phần mềm độc lập (ISVs) và các nhà phát triển cần thay đổi vài thứ để yêu cầu đặc quyền cần cho ứng dụng hơn là chỉ thực hiện một cấp độ đặc quyền xác định trên nó mà không có cách nào có sẵn để thay đổi cấp độ này.

Bây giờ, bạn nên tránh dùng nguyên tắc Normal User trừ khi bạn thật sự hiểu cách chúng làm việc. UAC là một cách tuyệt vời để giúp bạn đưa người dùng desktop ra khỏi nhóm Administrators, và bây giờ bạn nên xem xét cẩn thận đơn giản để lại UAC trong môi trường UAC của bạn.

Nguyên tắc hạn chế phần mềm hiện nay

Có một số phần đang di chuyển bạn cần xem xét khi bạn dùng nguyên tắc hạn chế phần mềm. Nhưng không như bạn nghĩ, thực tế, ngày nay bạn có thể dùng các nguyên tắc hạn chế phần mềm mà không nhận ra điều đó. Ví dụ, nếu bạn chạy Parental Controls trong một hệ thống Windows Vista, bạn đang sử dụng các nguyên tắc hạn chế phần mềm để kiểm soát thực thi ứng dụng.

Nguyên tắc hạn chế trong Windows Vista có một số mặt khó khăn cần được chau chuốt hơn, nhưng rõ ràng là các quản trị viên muốn dùng nó để gia tăng việc kiểm soát những chương trình đang chạy trong môi trường của mình. May mắn cho tất cả chúng ta là công nghệ này sẽ tiếp tục được phát triển hơn và các chuyên gia IT sẽ quản lý được hệ thống của họ và hạ thấp chi phí điều hành môi trường Windows.

Theo ITCNews




CÁC TIN KHÁC

• Diệt virus với Panda và Norton miễn phí 90 ngày (28/09/2009)
• 3 công cụ giúp ngăn ngừa lây lan virus từ thiết bị USB vào máy tính (21/09/2009)
• Khắc phục hậu quả virus máy tính với Re-Enable (15/09/2009)
• Tự bảo vệ trước virus, spyware... (13/09/2009)
• Bảo mật ứng dụng bằng AppLocker (06/09/2009)
• 3 phần mềm AntiVirus miễn phí và hữu dụng cho Windows (05/09/2009)
• Phòng tránh nguy cơ tấn công máy tính (05/09/2009)
• Phát hiện và tận diệt virus máy tính (02/09/2009)
• 10 cách phát hiện và tiêu diệt malware (28/08/2009)
• Tự động quản lý Group Policy Management với Windows PowerShell (27/08/2009)




BLUE IDEA Trading and Computer Technology Company Limited
Copyright © 2009 BLUE IDEA Co., Ltd