Đăng Nhập

Vui lòng khai báo chính xác tên truy cập và mật khẩu!

Quên mật khẩu?

    Bảo mật của PowerShell

      Tony Stark

      Giới tính : Nam

      Tuổi : 31

      Đến từ : Cần thơ

      Ngày Tham gia : 10/01/2012

      Tổng số bài gửi : 750

      #1

       Sat Mar 10, 2012 10:32 am

      Nếu đã từng nghe thấy
      PowerShell thì chắc hẳn bạn đang phân vân PowerShell có tác dụng bảo mật
      như thế nào. Với tất cả sự cố gắng và công sức đã bỏ ra, cỗ máy kịch
      bản này hiện đang trưởng thành hơn với những tính năng bảo mật nâng cao.
      PowerShell không chỉ là một ngôn ngữ kịch bản thường trình của bạn. Có
      nhiều tính năng bảo mật được xây dựng kèm trong nó cũng như một số bảo
      mật bổ sung mà bạn có thể cấu hình trong PowerShell.


      Bảo mật mặc định của PowerShell

      Đầu
      tiên phải vào giao diện của PowerShell trước khi thực hiện những gì bạn
      muốn. Trong giao diện có một số phương thức bảo mật mặc định được thiết
      kế để bảo đảm bất cứ ai có mang theo mã độc sẽ bị từ chối mọi cố gắng
      truy cập.

      Nội dung đường dẫn


      Phương
      thức bảo mật đầu tiên mà bạn sẽ bắt gặp là PowerShell sẽ không chạy các
      kịch bản trong thư mục hiện hành. Điều này nhằm để các kịch bản mã độc
      đang cố gắng xâm nhập vào nhằm chống phá cmdlet và các lệnh sẽ bị thất
      bại.

      Ví dụ, nếu bạn muốn chạy một kịch bản có tên Example.ps1 từ thư mục C:\scripts, thì bạn cần phải đưa đường dẫn đầy đủ vào kịch bản, thậm chí cả khi bạn đang ở thư mục C:\scripts trong PowerShell. Hình 1 minh chứng cho các bạn thấy những gì xảy ra khi cố gắng chạy Example.ps1 mà không có đường dẫn.

      Bảo mật của PowerShell PowerShell-1
      Hình 1: Các kịch bản phải chứa đường dẫn

      Hãy quan sát những gì xảy ra khi chạy kịch bản có đường dẫn trong kịch bản trong hình 2.

      Bảo mật của PowerShell PowerShell-2
      Hình 2: Khi đường dẫn được đưa vào, kịch bản sẽ chạy mà không bị vướng mắc

      Tại sao lại bị hạn chế?

      Thiết
      lập mặc định khác có liên quan trực tiếp đến bảo mật là tất cả các kịch
      bản phải được chạy một cách tương tác qua lại. Đây chính là một phương
      pháp bảo mật để bảo đảm rằng các kịch bản của PowerShell không bị thực
      thi từ một kịch bản có dính líu tới virus. Điều đó có nghĩa là bạn phải ở
      trong giao diện PowerShell và chạy kịch bản theo thời gian thực.

      Thiết
      lập mặc định này có liên quan tới ExecutionPolicy thiết lập bên trong
      PowerShell. ExecutionPolicy được thiết lập mặc định là Restricted (hạn
      chế), như trong hình 3.

      Bảo mật của PowerShell PowerShell-3
      Hình 3: ExecutionPolicy mặc định được thiết lập là Restricted
      để bảo vệ việc thực thi các kịch bản PowerShell từ xa

      Tầm ảnh hưởng của các bảo mật mặc định

      ExecutionPolicy
      mặc định trong PowerShell ở mức rất an toàn. Nó không cho phép bất kỳ
      kịch bản nào có thể chạy từ bất cứ một nơi nào. Vì vậy các kịch bản bạn
      tạo và đặt vào trong một hệ thống sẽ không chạy. Các kịch bản download
      từ Internet cũng sẽ không chạy. Các kịch bản mà thậm chí đã được xác
      nhận và bảo mật ở mức độ nào đó cũng sẽ không chạy. Chính bởi vậy bạn
      cần phải thiết lập lại mức ExecutionPolicy trước khi chạy các kịch bản
      của mình.

      Thiết lập mức bảo mật cho ExecutionPolicy


      bốn mức bảo mật cho ExecutionPolicy mà bạn có thể thiết lập ó. Bốn mức
      bảo mật này cung cấp cho bạn những tính năng bảo mật tuyệt vời trên
      những gì mà kịch bản của bạn có thể chạy và nhu cầu gì cần thiết có liên
      quan để kịch bản có thể chạy. Bốn mức này và các yêu cầu gồm có:

      Restricted

      Đây
      là cấu hình mặc định trong PowerShell. Thiết lập này có nghĩa rằng
      không một kịch bản nào có thể chạy, không quan tâm đến định danh của nó.
      Những thứ có thể chạy trong PowerShell với thiết lập này là các lệnh
      riêng rẽ.

      AllSigned

      Thiết lập này cho
      phép các kịch bản có thể chạy trong PowerShell. Tuy nhiên các kịch bản
      phải có định danh số từ một nhà xuất bản tin cậy. Sẽ có một nhắc nhở
      trước khi chạy các kịch bản từ nhà xuất bản tin cậy. Điều này cho phép
      bạn tránh được các kịch bản có chứa mã độc.

      RemoteSigned

      Kịch
      bản này cho phép các kịch bản có thể chạy, nhưng yêu cầu kịch bản và
      file cấu hình phải được download từ Internet có định danh số từ một nhà
      xuất bản tin cậy. Các kịch bản chạy từ máy tính cục bộ không cần phải ký
      như vậy. Không có nhắc nhở nào trước khi chạy kịch bản. Tuy nhiên bạn
      vẫn có thể tránh được các kịch bản mã độc.

      Unrestricted

      Đây
      không phải là thiết lập được đề xuất! Mức bảo mật này cho phép các kịch
      bản không có định danh, có thể gồm tất cả các kịch bản và file cấu hình
      đã được tải về từ Internet. Rủi ro ở đây chắc hẳn bạn sẽ đoán được, đó
      là các mã độc có thể xâm nhập một cách dễ dàng.

      Để thiết lập bầt kỳ mức bảo mật nào, bạn phải nhập vào mức bảo mật () như thể hiện trong hình 4.

      Bảo mật của PowerShell PowerShell-4
      Hình 4: Thiết lập ExecutionPolicy

      Sử dụng Group Policy

      PowerShell
      là tuyệt vời, nhưng nếu các kịch bản không thể chạy trên máy tính trong
      môi trường của bạn thì nó rõ ràng có những hạn chế. Đầu tiên, bạn phải
      có PowerShell trên mỗi máy tính. Khi PowerShell được đặt thông qua một
      file EXE, nó rất dễ để cài đặt ứng dụng. Bạn có thể sử dụng một file ZAP
      và đẩy nó ra bằng Group Policy, hoặc có thể sử dụng phương pháp cài đặt
      các ứng dụng hiện thời. Tuy nhiên bạn nên lưu ý rằng PowerShell được
      xem xét như một hotfix, vì vậy Windows Update cũng có thể đẩy ra cài đặt
      của PowerShell.

      Sau khi đã cài đặt PowerShell cho các máy tính,
      bạn cần phải kích hoạt các kịch bản để chạy. Với ExecutionPolicy được
      thiết lập ở mức Restricted mặc định, bạn cần phải cấu hình mỗi máy tính
      để chạy các kịch bản muốn chạy. Điều này có thể mất đến nhiều ngày nếu
      muốn thực hiện nó một cách thủ công.

      Mặc dù bạn cũng có thể sử
      dụng Group Policy để có được những thực hiện như trên. Tuy nhiên có thể
      tạo Administrative Template (file ADM) của chính bạn để thực hiện sự
      thay đổi này, hoặc tải mẫu ADM mà Microsoft cung cấp. Chúng tôi khuyên
      bạn thực hiện bằng cách [You must be registered and logged in to see this link.].


      Sau
      khi download, bạn cần phải cài đặt MSI. Tuy nó không phải là sự cài đặt
      hiệu quả nhất. Nhưng sau khi cài đặt, file ADM được đưa vào trong thư
      mục C:\program files\Microsoft Group Policy. Đây là một sự bảo mật tuyệt vời! File cần import vào Group Policy Object Editor là PowerShellExtensionPolicy.ADM. Sau khi import, bạn sẽ có hai nút mới trong Group Policy Object, một ở Computer Configuration\Administrative Templates\Windows Components\Windows PowerShell và một ở User Configuration\Administrative Templates\Windows Components\Windows PowerShell, như trong hình 5.

      Bảo mật của PowerShell PowerShell-5
      Hình 5: PowerShell ADM template bổ sung thêm các thiết lập vào Computer Configuration
      và User Configuration cho thực thi kịch bản

      Khi cấu hình chính sách này, bạn sẽ có 3 tùy chọn cho một thiết lập như trong hình 6.

      Bảo mật của PowerShell PowerShell-6
      Hình 6: Các thiết lập ExecutionPolicy cho PowerShell trong GPO

      Kết luận

      PowerShell
      là một thành phần được tích hợp trong sản phẩm Windows Server 2008, hệ
      điều hành sẽ được phát hành vào đầu năm 2008, và PowerShell sẽ cất cánh
      giống như một chiếc phi thuyền động cơ tên lửa. Với tất cả những quan
      tâm mà PowerShell đang cố gắng, mọi người hy vọng rằng nó đã sẵn sàng
      với các tính năng bảo mật nâng cao. Sự thật là tất cả các kịch bản được
      thiết lập để có một chính sách thực thi hạn chế là điều không tưởng. Cho
      dù bạn có một file .PS1, thì sự tồn tại kịch bản liên quan với Notepad
      là một bảo mật mặc định tốt. Dù là bạn có thể có giao diện PowerShell,
      thì sự thật đường dẫn cho kịch bản vẫn cần phải được đánh thêm vào.
      Ngoài các bảo mật mặc định, bạn còn có thể thiết lập chính sách thực thi
      và kiểm soát PowerShell thông qua Group Policy để kiểm soát tập trung
      sự bảo mật của PowerShell.