Quyền IIS_IUSRS và IUSR trong IIS8


146

Tôi vừa chuyển từ IIS6 trên Win2003 sang IIS8 trên Win2012 để lưu trữ các ứng dụng ASP.NET.

Trong một thư mục cụ thể trong ứng dụng của mình, tôi cần Tạo & Xóa các tệp. Sau khi sao chép các tệp vào máy chủ mới, tôi tiếp tục thấy các lỗi sau khi tôi cố xóa các tệp:

Truy cập vào đường dẫn 'D: \ WebSites \ myapp.co.uk \ companydata \ filename.pdf' bị từ chối.

Tuy nhiên, khi tôi kiểm tra IIS, tôi thấy rằng ứng dụng đang chạy trong tài khoản DefaultAppPool, tuy nhiên, tôi không bao giờ thiết lập quyền Windows trên thư mục này để bao gồm IIS AppPool \ DefaultAppPool

Thay vào đó, để ngừng la hét khách hàng, tôi đã cấp các quyền sau trên thư mục:

IUSR

  • Đọc và thi hành
  • Danh sách nội dung thư mục
  • Đọc
  • Viết

IIS_IUSRS

  • Sửa đổi
  • Đọc và thi hành
  • Danh sách nội dung thư mục
  • Đọc
  • Viết

Điều này dường như đã làm việc, nhưng tôi lo ngại rằng quá nhiều đặc quyền đã được thiết lập. Tôi đã đọc thông tin mâu thuẫn trên mạng về việc liệu IUSR có thực sự cần thiết ở đây không. Ai đó có thể làm rõ những người dùng / quyền nào đủ để tạo và xóa tài liệu trên thư mục này không? Ngoài ra, IUSR có phải là một phần của nhóm IIS_IUSRS không?

Cập nhật & Giải pháp

Xin vui lòng xem câu trả lời của tôi dưới đây . Tôi đã phải làm điều này một cách đáng buồn vì một số đề xuất gần đây không được suy nghĩ kỹ, hoặc thậm chí an toàn (IMO).


Để WordPress hoạt động trên IIS 8 trên máy ảo Azure (Trung tâm dữ liệu Windows Server 2012) Tôi cần cấp các quyền mà bạn đã liệt kê cho IIS_IUSRS cho IUSR cho thư mục blog trong inetpub / wwwroot
dumbledad

Đối với những người đến với chủ đề này bởi vì họ đang cố gắng chạy Joomla trong IIS và đang gặp vấn đề với cài đặt bảo mật tệp, tôi đã viết một bài viết trên blog với những gì tôi nghĩ là giải pháp phù hợp. Có lẽ cũng có thể áp dụng cho WordPress hoặc các chương trình máy chủ web dựa trên PHP khác. renniestechblog.com/index.php/inif/ khăn
RenniePet


Hoạt động tốt sau khi thêm quyền đầy đủ cho thư mục cho nhóm người dùng IIS_IUSRS.
Thicesiram

@Th Formulairam nhưng sau đó bạn đã cung cấp đầy đủ đặc quyền cho tất cả Người dùng IIS. Hãy nghĩ về điều đó từ quan điểm của hacker. Một trang web yếu và họ giành được toàn quyền kiểm soát tất cả phần còn lại
EvilDr

Câu trả lời:


146

Tôi ghét đăng câu trả lời của riêng tôi, nhưng một số câu trả lời gần đây đã bỏ qua giải pháp tôi đã đăng trong câu hỏi của riêng tôi, cho thấy các cách tiếp cận không có gì là ngu ngốc.

Nói tóm lại - bạn hoàn toàn không cần chỉnh sửa bất kỳ đặc quyền tài khoản người dùng Windows nào . Làm như vậy chỉ giới thiệu rủi ro. Quá trình này được quản lý hoàn toàn trong IIS bằng các đặc quyền được kế thừa.

Áp dụng Quyền Sửa đổi / Viết vào Tài khoản Người dùng Chính xác

  1. Nhấp chuột phải vào tên miền khi nó xuất hiện trong danh sách Trang web và chọn Chỉnh sửa quyền

    nhập mô tả hình ảnh ở đây

    Trong tab Bảo mật , bạn sẽ thấy MACHINE_NAME\IIS_IUSRSđược liệt kê. Điều này có nghĩa là IIS tự động có quyền chỉ đọc trên thư mục (ví dụ: để chạy ASP.Net trong trang web). Bạn không cần phải chỉnh sửa mục này .

    nhập mô tả hình ảnh ở đây

  2. Nhấp vào nút Chỉnh sửa , rồi Thêm ...

  3. Trong hộp văn bản, nhập IIS AppPool\MyApplicationPoolName, thay thế MyApplicationPoolNamebằng tên miền của bạn hoặc bất kỳ nhóm ứng dụng nào đang truy cập trang web của bạn, ví dụ:IIS AppPool\mydomain.com

    nhập mô tả hình ảnh ở đây

  4. Nhấn nút Kiểm tra tên . Văn bản bạn đã nhập sẽ chuyển đổi (chú ý phần gạch chân):

    nhập mô tả hình ảnh ở đây

  5. Nhấn OK để thêm người dùng

  6. Với người dùng mới (tên miền của bạn) được lựa chọn, bây giờ bạn có thể yên tâm cung cấp bất kỳ Sửa hoặc Write quyền

    nhập mô tả hình ảnh ở đây


2
Điều này không hoạt động trên máy chủ IIS 8.5 của tôi. Thêm IUSRcông trình. Thêm IIS AppPool\Cache(tên nhóm ứng dụng của tôi) mang lạiHTTP Error 401.3 - Unauthorized
Charles Burns

14
@CharlesBurns Tôi gặp vấn đề tương tự, tôi thấy đây là nguyên nhân cốt lõi của mình: techras.wordpress.com/2016/03/09/ Khăn (auth nặc danh đã được đặt để sử dụng IUSR thay vì Nhận dạng nhóm ứng dụng)
Jon

2
Tôi đã có một thư mục chỉ được sử dụng làm Thư mục ảo và nó hoạt động tốt cho đến khi tôi chia sẻ nó (thư mục windows được trỏ đến) với một tài khoản miền khác, để nó có thể xem các tệp qua mạng nội bộ của chúng tôi. Khi tôi làm điều này, các tệp trong Thư mục ảo đột nhiên không thể truy cập được. Cuối cùng tôi đã phải thêm cả hai MyComputerName\IIS_IUSRSIUSRvới quyền chỉ đọc để nó hoạt động trở lại. Điều này chỉ dành cho Thư mục ảo (không phải .net Apps), nhưng con số ai đó có thể thấy nó hữu ích.
MikeTeeVee

13
Chỉ cần một lưu ý: Khi bạn tìm kiếm người dùng và máy tính là thành viên của một tên miền, IIS AppPool \ MyApplicationPoolName có thể không được tìm thấy. Trong trường hợp của tôi, tôi cần nhấp vào nút Vị trí và thay đổi vị trí sang máy tính cục bộ.
statler

3
Trong các thử nghiệm của tôi, tên của người dùng đặc biệt sử dụng ở đây không liên quan gì đến một tên miền. Đó là tên của Nhóm ứng dụng được gán cho trang web trong IIS. Nhóm ứng dụng này có thể có hoặc không có tên phù hợp với tên miền của trang web của bạn. Vì vậy, mô hình là : IIS AppPool\[APPLICATION POOL NAME]. Khoảng trống trong tên nhóm ứng dụng được chấp nhận. Cũng xin lưu ý rằng người dùng này sẽ chỉ được tìm thấy, nếu "Hiệu trưởng bảo mật tích hợp" được chọn làm loại đối tượng cho tìm kiếm tên (trường trên cùng trong hộp thoại "Chọn người dùng hoặc nhóm").
Jpsy

49

IUSR là một phần của nhóm IIS_IUSER. Vì vậy, tôi đoán bạn có thể xóa các quyền cho IUSR mà không phải lo lắng. Đọc thêm

Tuy nhiên, một vấn đề nảy sinh theo thời gian khi ngày càng nhiều dịch vụ hệ thống Windows bắt đầu chạy như NETWORKSERVICE. Điều này là do các dịch vụ chạy dưới dạng NETWORKSERVICE có thể giả mạo các dịch vụ khác chạy dưới cùng một danh tính. Do các quy trình công nhân IIS chạy mã bên thứ ba theo mặc định (Classic ASP, ASP.NET, PHP code), nên đã đến lúc cách ly các quy trình công nhân IIS khỏi các dịch vụ hệ thống Windows khác và chạy các quy trình công nhân IIS theo các định danh duy nhất. Hệ điều hành Windows cung cấp một tính năng gọi là "Tài khoản ảo" cho phép IIS tạo các danh tính duy nhất cho mỗi Nhóm ứng dụng của nó. DefaultAppPool là nhóm mặc định được gán cho tất cả Nhóm ứng dụng bạn tạo.

Để đảm bảo an toàn hơn, bạn có thể thay đổi Nhận dạng IIS DefaultAppPool thành ApplicationPoolIdentity.

Về sự cho phép, Tạo và Xóa tóm tắt tất cả các quyền có thể được cung cấp. Vì vậy, bất cứ điều gì bạn đã gán cho nhóm IIS_USERS là họ sẽ yêu cầu. Không hơn không kém.

hi vọng điêu nay co ich.


3
Tôi vừa cài đặt IIS 8 trong Server Essentials 2012 R2. Máy này cũng là một bộ điều khiển miền. Trong Người dùng và Máy tính AD, nhóm IIS_IUSRS trống - nó không chứa người dùng IUSR. Tôi cho rằng tôi có thể thêm nó vào nhóm, nhưng đối với các trang web ẩn danh, tôi sẽ chỉ cấp quyền cho người dùng IUSR.
Mark Berry

7
Khi tôi cấp quyền cho IUSR, nó đã hoạt động. Khi tôi cấp quyền cho IIS_IUSER, nó không hoạt động.
ihebiheb

Iusr không phải là thành viên của IIS_Iusrs. (hoặc cửa sổ có lỗi) Nói chung, Windows sử dụng IIS_Iusrs. (thực thi các trang động hoặc truy cập các trang tĩnh) nhưng có một số trường hợp khi windows sử dụng Iusr, không phải IIS_Iusrs. tải lên tệp bằng PHP là một trong những trường hợp đó. (và nếu bạn chỉ cấp iis_iusr, bạn sẽ gặp ngoại lệ đặc quyền) Tôi nghĩ M $ nên đưa ra "Cách thực hành tốt nhất" để cấp phép cho Iusr và IIS_Iusrs ...
chỉnh

Tôi nghĩ bây giờ nó đã thay đổi thành nhóm nhóm ứng dụng tức là (IWGP). Tôi đã cấp quyền cho IWGP và nó đã hoạt động.
Rohit Arora

6
IUSR là một phần của IIS_IUSER. KHÔNG CÓ NÓ KHÔNG PHẢI LÀ! IUSR là người dùng không đồng nhất, IIS_IUSER là nhóm dành cho người dùng
apppool

6

Khi tôi thêm quyền IIS_IUSRS vào thư mục trang web - tài nguyên, như js và css, vẫn không thể truy cập được (lỗi 401, bị cấm). Tuy nhiên, khi tôi thêm IUSR - nó đã trở nên ổn. Vì vậy, để chắc chắn "bạn KHÔNG THỂ xóa quyền cho IUSR mà không phải lo lắng", @Travis G @ thân yêu


7
Đừng quên rằng (nếu bạn có IIS7 +), giải pháp chính xác là sử dụng IIS AppPool\MyApplicationPoolNametheo câu trả lời được cập nhật của tôi. Bạn không cần phải loay hoay với IUSR (S) nữa!
EvilDr

2
Tôi đã thử đề xuất của bạn, nhưng nó không hoạt động. Tôi đã xóa IUSR (S) khỏi sự cho phép và vẫn chỉ là tên nhóm, ứng dụng đang chạy. Tài nguyên trở nên không thể truy cập. IIS 8,5. Khi tôi thêm IUSR - nó đã hoạt động.
Alexander

Bạn cần đăng câu hỏi của riêng bạn với càng nhiều thông tin về tình huống của bạn xin vui lòng.
EvilDr

4

@EvilDr Bạn có thể tạo tài khoản IUSR_ [định danh] trong môi trường AD của mình và để nhóm ứng dụng cụ thể chạy trong tài khoản IUSR_ [định danh] đó:

"Nhóm ứng dụng"> "Cài đặt nâng cao"> "Danh tính"> "Tài khoản tùy chỉnh"

Đặt trang web của bạn thành "Người dùng Applicaton (xác thực thông qua)" chứ không phải "Người dùng cụ thể", trong Cài đặt nâng cao.

Bây giờ, cung cấp cho IUSR_ [định danh] các quyền NTFS phù hợp trên các tệp và thư mục, ví dụ: sửa đổi trên companydata.


Cảm ơn nhưng tôi không sử dụng AD. Cũng theo tài liệu MS gần đây, IIS 7 & 8 đã được cấu hình để hoạt động như bạn mô tả. Câu hỏi thực sự là liệu một trong những tài khoản được chỉ định có thực sự cần thiết hay không, và tài khoản nào thực hiện?
EvilDr

@EvilDr Cảm ơn bạn đã làm rõ bạn không sử dụng quảng cáo. Chà, IIS_IUSRS không phải là người dùng, nó là một nhóm. Giống như IIS_WPG trên IIS 6.0. Bạn có thể đọc về IIS_IUSRS và IUSR tại đây: link . Bạn có thể đặt quyền sửa đổi trên companydata * cho tài khoản IUSR và bạn có thể thêm người dùng này vào nhóm IIS_IUSRS và sử dụng tài khoản người dùng đó để chạy nhóm ứng dụng của bạn. Bạn chỉ cần cấp quyền lớn cho IIS_IUSRS trên các thư mục dùng chung (ví dụ TMP), nếu bạn có nhiều IUSR_accounts.
Jan Reilink

Jan, tôi luôn nghĩ rằng IUSR là một phần của nhóm IIS_IUSRS theo mặc định? Làm thế nào bạn có thể kiểm tra nếu điều này là như vậy, vì tài khoản IUSR là một tài khoản tích hợp. Bạn đang nói rằng tôi nên bỏ chọn Sửa đổi cho IIS_USRS và thay vào đó kiểm tra nó cho IUSR? Với yêu cầu ứng dụng đơn lẻ, tôi không nghĩ nó sẽ thực sự tạo ra sự khác biệt phải không?
EvilDr


0

Tôi sẽ sử dụng người dùng cụ thể (và người dùng KHÔNG ứng dụng). Sau đó, tôi sẽ kích hoạt mạo danh trong ứng dụng. Khi bạn thực hiện bất kỳ tài khoản nào được đặt là người dùng cụ thể, những thông tin đăng nhập đó sẽ được sử dụng để truy cập tài nguyên cục bộ trên máy chủ đó (Không dành cho tài nguyên bên ngoài).

Cài đặt người dùng cụ thể được dành riêng để truy cập tài nguyên cục bộ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.