สิทธิ์ IIS_IUSRS และ IUSR ใน IIS8


146

ฉันเพิ่งย้ายออกจาก IIS6 บน Win2003 ไปยัง IIS8 บน Win2012 สำหรับโฮสต์แอปพลิเคชัน ASP.NET

ภายในโฟลเดอร์เดียวในแอปพลิเคชันของฉันฉันต้องสร้างและลบไฟล์ หลังจากคัดลอกไฟล์ไปยังเซิร์ฟเวอร์ใหม่ฉันยังเห็นข้อผิดพลาดต่อไปนี้เมื่อฉันพยายามลบไฟล์:

การเข้าถึงพา ธ 'D: \ WebSites \ myapp.co.uk \ companydata \ filename.pdf' ถูกปฏิเสธ

เมื่อฉันตรวจสอบ IIS ฉันเห็นว่าแอปพลิเคชันทำงานภายใต้บัญชี DefaultAppPool อย่างไรก็ตามฉันไม่เคยตั้งค่าการอนุญาต Windows ในโฟลเดอร์นี้เพื่อรวมIIS AppPool \ DefaultAppPool

แต่เพื่อหยุดกรีดร้องลูกค้าฉันได้รับอนุญาตต่อไปนี้ในโฟลเดอร์:

IUSR

  • อ่าน & ดำเนินการ
  • รายการเนื้อหาของโฟลเดอร์
  • อ่าน
  • เขียน

IIS_IUSRS

  • ปรับเปลี่ยน
  • อ่าน & ดำเนินการ
  • รายการเนื้อหาของโฟลเดอร์
  • อ่าน
  • เขียน

ดูเหมือนว่าจะได้ผล แต่ฉันกังวลว่ามีการตั้งค่าสิทธิ์มากเกินไป ฉันได้อ่านข้อมูลที่ขัดแย้งทางออนไลน์ว่าIUSRนั้นเป็นสิ่งจำเป็นหรือไม่ ทุกคนสามารถอธิบายได้ว่าผู้ใช้ / สิทธิ์ใดที่จะเพียงพอสำหรับสร้างและลบเอกสารในโฟลเดอร์นี้ นอกจากนี้ IUSR เป็นส่วนหนึ่งของกลุ่ม IIS_IUSRS หรือไม่

อัปเดต & โซลูชัน

โปรดดูคำตอบของฉันด้านล่าง ฉันต้องทำสิ่งนี้ด้วยความเศร้าเนื่องจากคำแนะนำล่าสุดบางอย่างนั้นไม่ได้คิดมากหรือปลอดภัย (IMO)


ในการทำให้ WordPress ทำงานบน IIS 8 บนเครื่องเสมือน Azure (Windows Server 2012 Datacenter) ฉันต้องให้สิทธิ์ที่คุณได้ระบุไว้สำหรับ IIS_IUSRS เพื่อ IUSR สำหรับไดเรกทอรีบล็อกใน inetpub / wwwroot
dumbledad

สำหรับผู้ที่เข้ามาที่เธรดนี้เพราะพวกเขากำลังพยายามเรียกใช้ Joomla ภายใต้ IIS และกำลังมีปัญหากับการตั้งค่าความปลอดภัยของไฟล์ฉันได้เขียนบทความในบล็อกด้วยสิ่งที่ฉันคิดว่าเป็นทางออกที่เหมาะสม อาจใช้กับ WordPress หรือโปรแกรมเว็บเซิร์ฟเวอร์อื่น ๆ ที่ใช้ PHP renniestechblog.com/index.php/information/…
RenniePet


ทำงานได้ดีหลังจากเพิ่มสิทธิ์แบบเต็มสำหรับโฟลเดอร์สำหรับกลุ่มผู้ใช้ IIS_IUSRS
Thulasiram

@Thulasiram แต่คุณได้ให้สิทธิ์เต็มที่กับผู้ใช้ IIS ทุกคน ลองคิดดูจากมุมมองของแฮ็กเกอร์ หนึ่งเว็บไซต์อ่อนแอและพวกเขาได้รับการควบคุมทั้งหมดของส่วนที่เหลือทั้งหมด
EvilDr

คำตอบ:


146

ฉันเกลียดที่จะโพสต์คำตอบของตัวเอง แต่เมื่อไม่นานมานี้มีคำตอบบางส่วนที่ไม่สนใจคำตอบที่ฉันโพสต์ไว้ในคำถามของฉันเอง

กล่าวโดยย่อ - คุณไม่จำเป็นต้องแก้ไขสิทธิ์บัญชีผู้ใช้ Windowsเลย การทำเช่นนี้เป็นการแนะนำความเสี่ยงเท่านั้น กระบวนการได้รับการจัดการทั้งหมดใน IIS โดยใช้สิทธิ์ที่สืบทอดมา

ใช้การแก้ไข / เขียนสิทธิ์กับบัญชีผู้ใช้ที่ถูกต้อง

  1. คลิกขวาที่โดเมนเมื่อปรากฏภายใต้รายการไซต์และเลือกแก้ไขสิทธิ์

    ป้อนคำอธิบายรูปภาพที่นี่

    ใต้แท็บความปลอดภัยคุณจะเห็นMACHINE_NAME\IIS_IUSRSรายชื่ออยู่ ซึ่งหมายความว่า IIS มีสิทธิ์แบบอ่านอย่างเดียวในไดเรกทอรีโดยอัตโนมัติ (เช่นเรียกใช้ ASP.Net ในไซต์) คุณไม่จำเป็นต้องแก้ไขรายการนี้

    ป้อนคำอธิบายรูปภาพที่นี่

  2. คลิกปุ่มแก้ไขจากนั้นเพิ่ม ...

  3. ในกล่องข้อความพิมพ์IIS AppPool\MyApplicationPoolNameแทนที่MyApplicationPoolNameด้วยชื่อโดเมนของคุณหรือกลุ่มแอปพลิเคชันใด ๆ ที่เข้าถึงเว็บไซต์ของคุณเช่นIIS AppPool\mydomain.com

    ป้อนคำอธิบายรูปภาพที่นี่

  4. กดตรวจสอบชื่อปุ่ม ข้อความที่คุณพิมพ์จะแปลง (สังเกตเห็นขีดเส้นใต้):

    ป้อนคำอธิบายรูปภาพที่นี่

  5. กดตกลงเพื่อเพิ่มผู้ใช้

  6. ด้วยการเลือกผู้ใช้ใหม่ (โดเมนของคุณ) ตอนนี้คุณสามารถให้สิทธิ์แก้ไขหรือเขียนใด ๆ ได้อย่างปลอดภัย

    ป้อนคำอธิบายรูปภาพที่นี่


2
สิ่งนี้ไม่ทำงานบนเซิร์ฟเวอร์ IIS 8.5 ของฉัน การเพิ่มIUSRผลงาน การเพิ่มIIS AppPool\Cache(ชื่อกลุ่มแอปพลิเคชันของฉัน) ให้ผลลัพธ์HTTP Error 401.3 - Unauthorized
Charles Burns

14
@ CharlesBurns ฉันมีปัญหาเดียวกันฉันพบว่านี่เป็นสาเหตุของฉัน: techras.wordpress.com/2016/03/09/ … (รับรองความถูกต้องแบบไม่ระบุชื่อถูกตั้งค่าให้ใช้ IUSR แทน Application Pool Identity)
Jon

2
ฉันมีโฟลเดอร์ที่ใช้เป็นไดเรกทอรีเสมือนเท่านั้นและทำงานได้ดีจนกระทั่งฉันแชร์ (โฟลเดอร์ windows ที่ชี้ไป) กับบัญชีโดเมนอื่นดังนั้นจึงสามารถดูไฟล์ผ่านอินทราเน็ตของเรา เมื่อฉันทำสิ่งนี้ไฟล์ในไดเรกทอรีเสมือนไม่สามารถเข้าถึงได้ทันใดนั้น ฉันต้องเพิ่มทั้งสองอย่างMyComputerName\IIS_IUSRSและIUSRด้วยสิทธิ์แบบอ่านอย่างเดียวเพื่อให้ทำงานได้อีกครั้ง นี่เป็นเพียงไดเรกทอรีเสมือน (ไม่ใช่. แอปสุทธิ) แต่คิดว่าบางคนอาจพบว่ามีประโยชน์
MikeTeeVee

13
เพียงข้อสังเกต: เมื่อคุณค้นหาผู้ใช้และคอมพิวเตอร์เป็นสมาชิกของโดเมนอาจไม่พบ IIS AppPool \ MyApplicationPoolName ในกรณีของฉันฉันจำเป็นต้องคลิกปุ่มสถานที่และเปลี่ยนสถานที่เป็นเครื่องคอมพิวเตอร์
Statler

3
ในการทดสอบของฉันชื่อของผู้ใช้พิเศษที่ใช้ที่นี่ไม่มีอะไรเกี่ยวข้องกับชื่อโดเมน เป็นชื่อของ Application Pool ที่กำหนดให้กับไซต์ใน IIS กลุ่มแอปพลิเคชันนี้อาจมีหรือไม่มีชื่อที่ตรงกับโดเมนของเว็บไซต์ของคุณ IIS AppPool\[APPLICATION POOL NAME]ดังนั้นแบบแผนคือ: ยอมรับช่องว่างในชื่อกลุ่มแอปพลิเคชัน โปรดทราบว่าผู้ใช้นี้จะพบได้เฉพาะในกรณีที่ "การรักษาความปลอดภัยในตัวเครื่อง" ถูกเลือกเป็นประเภทวัตถุสำหรับการค้นหาชื่อ (ช่องด้านบนในกล่องโต้ตอบ "เลือกผู้ใช้หรือกลุ่ม")
Jpsy

49

IUSR เป็นส่วนหนึ่งของกลุ่ม IIS_IUSER ดังนั้นฉันเดาว่าคุณสามารถลบการอนุญาตสำหรับ IUSR ได้โดยไม่ต้องกังวล อ่านเพิ่มเติม

อย่างไรก็ตามปัญหาเกิดขึ้นเมื่อเวลาผ่านไปเนื่องจากบริการระบบ Windows เริ่มทำงานเป็น NETWORKSERVICE มากขึ้นเรื่อย ๆ นี่เป็นเพราะบริการที่ทำงานเป็น NETWORKSERVICE สามารถยุ่งเกี่ยวกับบริการอื่น ๆ ที่ทำงานภายใต้ตัวตนเดียวกัน เนื่องจากกระบวนการของผู้ปฏิบัติงาน IIS เรียกใช้รหัสบุคคลที่สามโดยค่าเริ่มต้น (Classic ASP, ASP.NET, รหัส PHP) ถึงเวลาที่ต้องแยกกระบวนการผู้ปฏิบัติงาน IIS ออกจากบริการระบบ Windows อื่น ๆ และเรียกใช้กระบวนการผู้ปฏิบัติงาน IIS ภายใต้ตัวตนที่ไม่ซ้ำกัน ระบบปฏิบัติการ Windows มีคุณสมบัติที่เรียกว่า "บัญชีเสมือน" ที่อนุญาตให้ IIS สร้างข้อมูลเฉพาะตัวสำหรับแต่ละกลุ่มแอปพลิเคชัน DefaultAppPool เป็นพูลเริ่มต้นที่กำหนดให้กับ Application Pool ทั้งหมดที่คุณสร้าง

เพื่อให้ปลอดภัยยิ่งขึ้นคุณสามารถเปลี่ยน IIS DefaultAppPool Identity เป็น ApplicationPoolIdentity

เกี่ยวกับการอนุญาตสร้างและลบสรุปสิทธิ์ทั้งหมดที่สามารถได้รับ ดังนั้นสิ่งที่คุณได้กำหนดให้กับกลุ่ม IIS_USERS ก็คือพวกเขาจะต้องการ ไม่มีอะไรเพิ่มเติมไม่น้อยไปกว่านี้

หวังว่านี่จะช่วยได้


3
ฉันเพิ่งติดตั้ง IIS 8 ภายใต้ Server Essentials 2012 R2 เครื่องนี้ยังเป็นตัวควบคุมโดเมน ในผู้ใช้ AD และคอมพิวเตอร์กลุ่ม IIS_IUSRS ว่างเปล่า - ไม่มีผู้ใช้ IUSR ฉันคิดว่าฉันสามารถเพิ่มลงในกลุ่มได้ แต่สำหรับไซต์ที่ไม่ระบุตัวตนฉันจะให้สิทธิ์แก่ผู้ใช้ IUSR เท่านั้น
Mark Berry

7
เมื่อฉันได้รับอนุญาตสำหรับ IUSR มันทำงานได้ เมื่อฉันได้รับอนุญาตให้ IIS_IUSER มันไม่ทำงาน
ihebiheb

Iusr ไม่ได้เป็นสมาชิกของ IIS_Iusrs (หรือ windows มีข้อบกพร่อง) โดยทั่วไป Windows ใช้ IIS_Iusrs (ดำเนินการหน้าแบบไดนามิกหรือการเข้าถึงหน้าคงที่) แต่มีบางกรณีเมื่อ windows ใช้ Iusr ไม่ใช่ IIS_Iusrs การอัปโหลดไฟล์โดยใช้ PHP เป็นหนึ่งในนั้น (และถ้าคุณได้รับ iis_iusr เท่านั้นคุณจะได้พบกับข้อยกเว้นสิทธิพิเศษ) ผมคิดว่า M $ ควรให้ "เป็นปฏิบัติที่ดีที่สุด" สำหรับการอนุญาตให้ permssion ของ IUSR และ IIS_IUSRS ...
finejustice

ฉันคิดว่าตอนนี้มันเปลี่ยนเป็นกลุ่มแอพพลิเคชั่น ie (IWGP) ฉันให้สิทธิ์กับ IWGP และทำงานได้
Rohit Arora

6
IUSR เป็นส่วนหนึ่งของ IIS_IUSER ไม่มันไม่ใช่! IUSR เป็นผู้ใช้ anonimous, IIS_IUSER เป็นกลุ่มสำหรับผู้ใช้
apppool

6

เมื่อฉันเพิ่มสิทธิ์ IIS_IUSRS ไปยังโฟลเดอร์ไซต์ - ทรัพยากรเช่น js และ css ยังคงไม่สามารถเข้าถึงได้ (ข้อผิดพลาด 401, ถูกห้าม) อย่างไรก็ตามเมื่อฉันเพิ่ม IUSR - มันก็โอเค ดังนั้นแน่นอน "คุณไม่สามารถลบสิทธิ์สำหรับ IUSR โดยไม่ต้องกังวล", @ @ Travis G @


7
อย่าลืมว่า (ถ้าคุณมี IIS7 +) ทางออกที่ถูกต้องคือใช้IIS AppPool\MyApplicationPoolNameตามคำตอบที่อัปเดตของฉัน คุณไม่จำเป็นต้องยุ่งกับ IUSR (S) อีกต่อไป!
EvilDr

2
ฉันลองคำแนะนำของคุณแล้ว แต่มันไม่ทำงาน ฉันลบ IUSR (S) ออกจากการอนุญาตและยังคงเป็นชื่อพูลแอพที่กำลังทำงานอยู่ ทรัพยากรไม่สามารถเข้าถึงได้ IIS 8.5 เมื่อฉันเพิ่ม IUSR - มันทำงานได้
Alexander

คุณต้องโพสต์คำถามของคุณเองพร้อมข้อมูลเกี่ยวกับสถานการณ์ของคุณให้มากที่สุด
EvilDr

4

@EvilDr คุณสามารถสร้างบัญชี IUSR_ [ตัวระบุ] ภายในสภาพแวดล้อมโฆษณาของคุณและปล่อยให้แอปพลิเคชันพูลกลุ่มใดกลุ่มหนึ่งทำงานภายใต้บัญชี IUSR_ [ตัวระบุ]:

"กลุ่มแอปพลิเคชัน"> "การตั้งค่าขั้นสูง"> "ตัวตน"> "บัญชีที่กำหนดเอง"

ตั้งค่าเว็บไซต์ของคุณเป็น "ผู้ใช้ Applicaton (การตรวจสอบสิทธิ์แบบพาส - ทรู)" และไม่ใช่ "ผู้ใช้เฉพาะ" ในการตั้งค่าขั้นสูง

ตอนนี้ให้ IUSR_ [ตัวระบุ] สิทธิ์ NTFS ที่เหมาะสมในไฟล์และโฟลเดอร์ตัวอย่างเช่น: แก้ไขบน companydata


ขอบคุณ แต่ฉันไม่ได้ใช้โฆษณา นอกจากนี้ตามเอกสาร MS ล่าสุด, IIS 7 และ 8 ได้รับการกำหนดค่าให้ทำงานตามที่คุณอธิบาย คำถามคือจริง ๆ ว่าบัญชีใดบัญชีหนึ่งที่ระบุจำเป็นต้องใช้จริงหรือไม่และบัญชีใดที่ทำธุรกิจ
EvilDr

@EvilDr ขอบคุณที่ชี้แจงว่าคุณไม่ได้ใช้โฆษณา IIS_IUSRS ไม่ใช่ผู้ใช้ แต่เป็นกลุ่ม เช่นเดียวกับ IIS_WPG บน IIS 6.0 คุณสามารถอ่านเกี่ยว IIS_IUSRS และ IUSR ที่นี่: การเชื่อมโยง คุณสามารถตั้งค่าการแก้ไขสิทธิ์บน companydata * สำหรับบัญชี IUSR และคุณสามารถเพิ่มผู้ใช้นี้ในกลุ่ม IIS_IUSRS และใช้ useraccount นั้นเพื่อเรียกใช้กลุ่มแอปพลิเคชันของคุณ คุณจะต้องได้รับอนุญาตอย่างยิ่งใหญ่สำหรับ IIS_IUSRS ในโฟลเดอร์ที่ใช้ร่วมกัน (TMP เป็นต้น) หากคุณมี IUSR_account หลายรายการ
Jan Reilink

ม.ค. ฉันคิดเสมอว่า IUSR เป็นส่วนหนึ่งของกลุ่ม IIS_IUSRS โดยค่าเริ่มต้นหรือไม่ คุณจะตรวจสอบว่าเป็นเช่นนั้นได้อย่างไรเนื่องจากบัญชี IUSR เป็นบัญชีในตัว คุณกำลังบอกว่าฉันควรยกเลิกการเลือก Modify สำหรับ IIS_USRS และตรวจสอบ IUSR แทนหรือไม่ จากข้อกำหนดของแอปพลิเคชันเดี่ยวฉันไม่คิดว่ามันจะสร้างความแตกต่างได้จริงหรือ
EvilDr

3

กลุ่ม IIS_IUSRS มีความโดดเด่นเฉพาะถ้าคุณใช้ ApplicationPool Identity แม้ว่าคุณจะมีกลุ่มนี้ดูว่างเปล่าในเวลาทำงาน IIS เพิ่มในกลุ่มนี้เพื่อเรียกใช้กระบวนการของผู้ปฏิบัติงานตามเอกสารประกอบของ Microsoft


ไม่แน่ใจว่าทำไมสิ่งนี้จึงถูกลดระดับลง docs.microsoft.com/en-us/iis/get-started/planning-for-security/…
Greg

0

ฉันจะใช้ผู้ใช้เฉพาะ (และไม่ใช่ผู้ใช้แอปพลิเคชัน) จากนั้นฉันจะเปิดใช้งานการแอบอ้างบุคคลอื่นในแอปพลิเคชัน เมื่อคุณทำสิ่งที่บัญชีถูกตั้งค่าเป็นผู้ใช้เฉพาะข้อมูลประจำตัวเหล่านั้นจะใช้ในการเข้าถึงทรัพยากรท้องถิ่นบนเซิร์ฟเวอร์นั้น (ไม่ใช่สำหรับทรัพยากรภายนอก)

การตั้งค่าผู้ใช้เฉพาะนั้นมีความหมายโดยเฉพาะสำหรับการเข้าถึงทรัพยากรในท้องถิ่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.