Đây là một câu hỏi rất hay và đáng buồn là nhiều nhà phát triển không hỏi đủ câu hỏi về bảo mật IIS / ASP.NET trong bối cảnh là nhà phát triển web và thiết lập IIS. Vì vậy, ở đây đi ....
Để bao gồm các danh tính được liệt kê:
IIS_IUSRS:
Điều này tương tự với IIS_WPG
nhóm IIS6 cũ . Đó là một nhóm tích hợp với bảo mật được cấu hình sao cho bất kỳ thành viên nào trong nhóm này có thể hoạt động như một danh tính nhóm ứng dụng.
IUSR:
Tài khoản này tương tự như IUSR_<MACHINE_NAME>
tài khoản cục bộ cũ là người dùng ẩn danh mặc định cho các trang web IIS5 và IIS6 (tức là tài khoản được định cấu hình qua tab Bảo mật thư mục của các thuộc tính của trang web).
Để biết thêm thông tin về IIS_IUSRS
và IUSR
xem:
Hiểu tài khoản người dùng và nhóm tích hợp trong IIS 7
DefaultAppPool:
Nếu nhóm ứng dụng được định cấu hình để chạy bằng tính năng Nhận dạng nhóm ứng dụng thì tài khoản "tổng hợp" được gọi IIS AppPool\<pool name>
sẽ được tạo khi đang sử dụng làm nhận dạng nhóm. Trong trường hợp này, sẽ có một tài khoản tổng hợp được gọi là được IIS AppPool\DefaultAppPool
tạo cho thời gian tồn tại của nhóm. Nếu bạn xóa nhóm thì tài khoản này sẽ không còn tồn tại. Khi áp dụng quyền cho các tập tin và thư mục, chúng phải được thêm vào bằng cách sử dụng IIS AppPool\<pool name>
. Bạn cũng sẽ không thấy các tài khoản nhóm này trong Trình quản lý người dùng máy tính của mình. Xem phần sau để biết thêm thông tin:
Danh tính nhóm ứng dụng
ASP.NET v4.0:
-
Đây sẽ là Danh tính nhóm ứng dụng cho Nhóm ứng dụng ASP.NET v4.0. Xem DefaultAppPool
ở trên.
NETWORK SERVICE:
-
Các NETWORK SERVICE
tài khoản là một built-in sắc giới thiệu trên Windows 2003. NETWORK SERVICE
là một tài khoản đặc quyền thấp, theo đó bạn có thể chạy ứng dụng hồ bơi và các trang web của bạn. Một trang web chạy trong nhóm Windows 2003 vẫn có thể mạo danh tài khoản ẩn danh của trang web (IUSR_ hoặc bất cứ thứ gì bạn định cấu hình làm danh tính ẩn danh).
Trong ASP.NET trước Windows 2008, bạn có thể có các yêu cầu thực thi ASP.NET trong tài khoản Nhóm ứng dụng (thường NETWORK SERVICE
). Ngoài ra, bạn có thể định cấu hình ASP.NET để mạo danh tài khoản ẩn danh của trang web thông qua <identity impersonate="true" />
cài đặt trong web.config
tệp cục bộ (nếu cài đặt đó bị khóa thì cần phải được quản trị viên thực hiện trong machine.config
tệp).
Cài đặt <identity impersonate="true">
là phổ biến trong môi trường lưu trữ được chia sẻ, nơi các nhóm ứng dụng được chia sẻ được sử dụng (kết hợp với cài đặt tin cậy một phần để ngăn chặn việc hủy bỏ tài khoản mạo danh).
Hiện tại, điều khiển mạo danh IIS7.x / ASP.NET được cấu hình thông qua tính năng cấu hình Xác thực của trang web. Vì vậy, bạn có thể định cấu hình để chạy dưới dạng danh tính nhóm IUSR
hoặc tài khoản ẩn danh tùy chỉnh cụ thể.
LOCAL SERVICE:
Các LOCAL SERVICE
tài khoản là một built-in tài khoản được sử dụng bởi người quản lý kiểm soát dịch vụ. Nó có một bộ đặc quyền tối thiểu trên máy tính cục bộ. Nó có phạm vi sử dụng khá hạn chế:
Tài khoản dịch vụ địa phương
LOCAL SYSTEM:
Bạn đã không hỏi về điều này nhưng tôi đang thêm cho đầy đủ. Đây là một tài khoản tích hợp cục bộ. Nó có đặc quyền và sự tin tưởng khá rộng rãi. Bạn không bao giờ nên cấu hình một trang web hoặc nhóm ứng dụng để chạy dưới danh tính này.
Tài khoản hệ thống cục bộ
Trong thực tế:
Trong thực tế, cách tiếp cận ưa thích để bảo mật trang web (nếu trang web có nhóm ứng dụng riêng - mặc định cho một trang web mới trong MMC của IIS7) sẽ được chạy theo Application Pool Identity
. Điều này có nghĩa là đặt Danh tính của trang web trong Cài đặt nâng cao của Nhóm ứng dụng thành Application Pool Identity
:
Trong trang web, bạn nên định cấu hình tính năng Xác thực:
Nhấp chuột phải và chỉnh sửa mục xác thực ẩn danh:
Đảm bảo rằng "Nhận dạng nhóm ứng dụng" được chọn:
Khi bạn đến để áp dụng quyền truy cập tệp và thư mục, bạn cấp cho danh tính Nhóm ứng dụng bất kỳ quyền nào được yêu cầu. Ví dụ: nếu bạn đang cấp danh tính nhóm ứng dụng cho ASP.NET v4.0
quyền nhóm thì bạn có thể thực hiện việc này thông qua Explorer:
Nhấp vào nút "Kiểm tra tên":
Hoặc bạn có thể làm điều này bằng cách sử dụng ICACLS.EXE
tiện ích:
icacls c: \ wwwroot \ mysite / cấp "IIS AppPool \ ASP.NET v4.0" :( CI) (OI) (M)
... hoặc ... nếu nhóm ứng dụng của trang web của bạn được gọi BobsCatPicBlog
thì:
icacls c: \ wwwroot \ mysite / cấp "IIS AppPool \ BobsCatPicBlog" :( CI) (OI) (M)
Tôi hy vọng điều này sẽ giúp làm sáng tỏ mọi thứ.
Cập nhật:
Tôi chỉ tình cờ nhận được câu trả lời xuất sắc này từ năm 2009, trong đó có rất nhiều thông tin hữu ích, rất đáng để đọc:
Sự khác biệt giữa tài khoản 'Hệ thống cục bộ' và tài khoản 'Dịch vụ mạng'?