Windows - ใช้บัญชี Local Service และ / หรือ Network Service สำหรับบริการ windows


18

ฉันได้สร้างบริการของหน้าต่างที่ตรวจสอบไฟล์ในไดเรกทอรีเฉพาะในระบบปฏิบัติการ Windows ของเรา เมื่อตรวจพบไฟล์บริการจะทำไฟล์ I / O บางไฟล์อ่านไฟล์สร้างไดเรกทอรีย่อยเป็นต้นบริการนี้ยังใช้การเชื่อมต่อฐานข้อมูลเพื่อเชื่อมต่อกับเซิร์ฟเวอร์อื่น แผนของฉันคือการให้บริการทำงานเป็นบัญชี "Local Service" เริ่มต้น เนื่องจากฉันต้องอนุญาตให้มีสิทธิ์ในการเขียน / อ่านซึ่งเห็นได้ชัดว่าบัญชี "Local Service" ไม่ได้ทำตามค่าเริ่มต้นฉันจะตั้งค่าสิทธิ์ "ควบคุมทั้งหมด" อย่างชัดเจนสำหรับบัญชี "Local Service" ในโฟลเดอร์ที่ฉัน การอ่าน / เขียนไปและกลับจาก

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

ฉันอาจเข้าใจผิดว่าบัญชี "บริการเครือข่าย" ทำอะไร

คำตอบ:


18

NT AUTHORITY\NetworkServiceบัญชีเป็นสิ่งจำเป็นเฉพาะเมื่อคุณกำลังสื่อสารกับคอมพิวเตอร์เครื่องอื่น ๆ ในโดเมนที่ต้องการข้อมูลประจำตัวของเครื่องสำหรับการควบคุมการเข้าถึง มันไม่จำเป็นสำหรับการเข้าถึงอินเทอร์เน็ต / เครือข่ายง่าย จำเป็นสำหรับวัตถุประสงค์เฉพาะในโดเมน Active Directory เท่านั้น

อีกทั้งจุดทั้งหมดของNT AUTHORITY\LocalServiceบัญชีคือมีสิทธิ์ขั้นต่ำในระบบ การให้สิทธิ์พิเศษยิ่งกว่านั้นจะลดความปลอดภัยของบริการต่างๆในระบบของคุณที่ออกแบบมาเพื่อทำงานในระดับสิทธิ์ต่ำที่ออกแบบมาเพื่อมอบให้ หากบริการของคุณต้องมีสิทธิ์เหนือกว่านั้นคุณควรสร้างบัญชีใหม่ด้วยสิทธิ์ที่จำเป็นและตั้งค่าบัญชีนั้นในแท็บเข้าสู่ระบบของคุณสมบัติของบริการ (สิ่งนี้สามารถทำได้โดยทางโปรแกรม)

คุณสามารถรันโดยใช้NT AUTORITY\LocalSystemบัญชีซึ่งมีการเข้าถึงระบบของคุณไม่ จำกัด แต่ฉันคิดว่าคุณต้องการใช้LocalServiceบัญชีเพื่อความปลอดภัยที่เพิ่มขึ้น


1
การให้บัญชี LocalService ควบคุมเต็มรูปแบบในโฟลเดอร์หนึ่ง (และโฟลเดอร์ย่อย) จะทำให้ความปลอดภัยของบริการอื่นลดลงได้อย่างไร
contactmatt

1
@ user19185 มันไม่ได้ลดความปลอดภัยของพวกเขาต่อ seแต่จะเพิ่มโปรไฟล์การโจมตี หากบริการที่ใช้งานไม่ได้รับบริการLocalServiceจะสามารถเข้าถึงสิ่งที่คุณเปิดใช้งานได้LocalServiceแต่โดยปกติจะสามารถเข้าถึงสิ่งใดก็ได้ นี้ได้รับการรักษาความปลอดภัยคอมพิวเตอร์ขั้นตอนการดำเนินงานมาตรฐานตั้งแต่ยุค 70
แพทช์

1
แค่อยากจะชี้ให้เห็นว่าLocalSystemมีมากขึ้นและสิทธิมนุษยชนกว่าบัญชีผู้ดูแลระบบปกติ
Stein Åsmul

@ Stein Åsmul: ขอบคุณสำหรับการแก้ไข! ฉันอัปเดตคำตอบเพื่อสะท้อนสิ่งนี้
แพทช์

2

คำตอบก่อนหน้านี้ไม่ปรากฏขึ้นเพื่อตอบคำถามโดยตรงดังนั้นฉันคิดว่าฉันจะเพิ่มไป

  1. แผนของฉันคือการให้บริการทำงานเป็นบัญชี "Local Service" เริ่มต้น ฉันจะกำหนดสิทธิ์ "ควบคุมทั้งหมด" อย่างชัดเจนสำหรับบัญชี "Local Service" ในโฟลเดอร์ที่ฉันกำลังอ่าน / เขียนไปยังและจาก ฉันเชื่อว่าข้างต้นเป็นแผนที่ดี

โดยส่วนตัวฉันไม่เห็นปัญหาใหญ่กับแผนนี้ ด้วย BUILTIN ตัวเลือกคือ:

  1. ทำงานเป็น LOCALSYSTEM - ดังนั้นหากบริการนี้ถูกโจมตีผู้โจมตีจะเป็นเจ้าของทุกอย่างและทันที
  2. ทำงานเป็น LOCALSERVICE - ดังนั้นหากบริการนี้หรือบริการอื่น ๆ ที่ทำงานภายใต้บัญชีนี้ถูกโจมตีผู้โจมตีจะสามารถเข้าถึงไดเรกทอรีพิเศษหนึ่งรายการ *

เนื้อหาที่เพิ่ม ACLs พิเศษสองสามตัวเพื่อให้สามารถใช้ตัวเลือกที่สองได้ดีกว่า ใช่ตัวเลือกที่ปลอดภัยที่สุดสำหรับบริการที่มีสิทธิ์ต่ำ แต่ให้ความสำคัญกับความปลอดภัยสูงนั้นจะต้องทำงานภายใต้บัญชีบริการที่มีสิทธิ์ต่ำ แต่ถ้าคุณไม่ต้องการสร้างบัญชีใหม่ / จัดการรหัสผ่านสำหรับทุกบริการที่คุณปรับใช้การใช้ LocalService สำหรับงานที่ไม่อ่อนไหวเล็กน้อยไม่ใช่เรื่องเลวร้าย คุณเพียงแค่ต้องทำการตัดสินใจอย่างรับผิดชอบตามการพิจารณาเหล่านี้เช่นสิ่งที่อยู่ในไดเรกทอรีนั้นหรือฐานข้อมูลนั้นส่งผลกระทบหากมีการละเมิด ฯลฯ

แม้ว่าอีกครั้งตามหลักการของสิทธิพิเศษอย่างน้อยที่สุดคุณควรตั้งค่าFull ControlหากModifyไม่เพียงพอจริงๆ

2. คำถามของฉันคือสำหรับโฟลเดอร์ที่ฉันกำลังอ่านและเขียนฉันจำเป็นต้องตั้งค่าบทบาท "บริการเครือข่าย" ด้วยการเข้าถึงการควบคุมทั้งหมดหรือไม่ ฉันสงสัยว่าบริการของฉันใช้การเชื่อมต่อฐานข้อมูลกับเซิร์ฟเวอร์อื่นหากฉันต้องการตั้งค่าบัญชี "บริการเครือข่าย"

หากฐานข้อมูลของคุณต้องการล็อกอิน Windows Integrated / SSPI ใช่คุณจะต้องใช้ NetworkService (หรือบัญชีบริการโดเมน) ทุกที่เช่น RunAs และการอนุญาตของไดเรกทอรี สมมติว่าคุณได้รับสิทธิ์ให้ $ $ หรือการเข้าถึงบัญชีโดเมนไปยังฐานข้อมูลนี้ ฉันสงสัยว่าคุณกำลังทำเช่นนั้นดังนั้นหากใช้การรับรองความถูกต้องชื่อผู้ใช้ / pwd ปกติคุณควรจะสามารถทำทุกอย่างด้วย LocalService คุณต้องให้สิทธิ์บัญชีเดียวในไดเรกทอรีนั้นไม่ว่าคุณจะใช้สิทธิ์ใดใน RunAs ไม่ใช่ทั้งสองอย่าง

3. ฉันอาจเข้าใจผิดว่าบัญชี "บริการเครือข่าย" ทำอะไร

LocalService / NetworkServiceเป็นบัญชีที่เกือบเหมือนกันในเครื่องคอมพิวเตอร์ ความแตกต่างส่วนใหญ่คือสิ่งที่พวกเขาสามารถทำได้บนเครือข่าย NS สามารถเข้าถึงทรัพยากรเครือข่ายบางอย่างได้เนื่องจากจะปรากฏในเครือข่ายเป็นบัญชีจริง (คอมพิวเตอร์) แต่ LS จะปรากฏเป็น ANONYMOUS ดังนั้นมันจะถูกปฏิเสธส่วนใหญ่ทุกอย่างในเครือข่าย

อย่างไรก็ตามคุณควรใช้งานที่กำหนดเวลาไว้สำหรับสิ่งนี้ไม่ใช่บริการ

* จาก Vista เป็นต้นไปเนื่องจากการแยกการบริการกระบวนการ LocalService ที่ถูกบุกรุกอย่างหนึ่งไม่สามารถโจมตีได้อย่างง่ายดาย แต่ละกระบวนการ / อินสแตนซ์ของบริการ LocalService / NetworkService จะได้รับเซสชันการเข้าสู่ระบบที่เป็นเอกลักษณ์ของตัวเอง SID (เจ้าของที่ไม่ซ้ำ) ซึ่งแตกต่างจาก Windows 2003 แต่ฉันไม่แน่ใจว่านี่เป็นวิธีที่สมบูรณ์แบบและลดช่องโหว่ DACL ในไฟล์และทรัพยากร SID ที่ถูก จำกัด และ โทเค็นที่ จำกัด การเขียนถูกกล่าวถึงในบริบทนี้


2

คำตอบอื่น ๆ ยืนยันสิ่งที่คุณพูดเกี่ยวกับการใช้บริการในท้องถิ่น เพื่อสรุปย่อ Local Service เป็นบัญชีที่แนะนำให้ใช้กับบริการของคุณเว้นแต่ว่าคุณต้องการคุณสมบัติพิเศษ Active Directory SSPI ของ Network Service

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

วิธีแก้ไขคือแทนที่ ACL โฟลเดอร์ของคุณโดยใช้ SID บริการเฉพาะของคุณ เฉพาะกระบวนการบริการของคุณเท่านั้นที่มี SID บริการของคุณเชื่อมโยงอยู่ด้วยดังนั้นสิ่งนี้จะล็อคทรัพยากรของคุณต่อ คุณสามารถดู SID sc showsid <service name>ใช้บริการ SID ของบริการนั้นสร้างจากชื่อบริการดังนั้นมันจะเหมือนกันในทุกเครื่อง

ต้องการเปิดใช้งานการใช้งาน SID บริการโดยบริการของคุณให้ใช้ChangeServiceConfig2กับโครงสร้างชุดSERVICE_SID_INFO SERVICE_SID_TYPE_UNRESTRICTEDคุณยังสามารถตั้งค่าSERVICE_SID_TYPE_RESTRICTEDให้รับ SID ที่ จำกัด ยิ่งขึ้นซึ่งอนุญาตให้เข้าถึงการเขียนไปยังทรัพยากรที่อนุญาตด้วย SID บริการของคุณเท่านั้น

ลิงก์นี้มีคำอธิบายระดับสูงของ SID ของบริการและ SID ของบริการที่ถูก จำกัด : https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and- 2008 / hh125927 (v = ws.10)

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