Windows - Windows hizmeti için Yerel Hizmet ve / veya Ağ Hizmeti hesabını kullanma


18

Windows işletim sistemimizde belirli bir dizindeki dosyaları izleyen bir pencere hizmeti oluşturdum. Bir dosya algılandığında, hizmet bazı dosya G / Ç işlemleri yapar, dosyaları okur, alt dizinler oluşturur, vb. Bu hizmet aynı zamanda başka bir sunucuya bağlanmak için veritabanı bağlantısını kullanır. Planım, hizmetin varsayılan "Yerel Hizmet" hesabı olarak çalıştırılmasını sağlamak. Görünüşe göre "Yerel Hizmet" hesabının varsayılan olarak yapmadığı yazma / okuma ayrıcalıklarına izin vermem gerektiğinden, klasördeki "Yerel Hizmet" hesabı için açıkça "Tam Denetim" ayrıcalıklarını ayarlayacağım okuma ve yazma.

Yukarıdakilerin iyi olduğuna inanıyorum. Sorum şu: Okuduğum ve yazdığım klasör için tam kontrol erişimine sahip bir "Ağ Hizmeti" rolü oluşturmam gerekiyor mu? "Ağ Hizmeti" hesap kurulumuna ihtiyacım olursa hizmetimin başka bir sunucuya veritabanı bağlantısı kullandığı için merak ediyorum.

"Ağ Hizmeti" hesabının ne yaptığını yanlış anlıyor olabilirim.

Yanıtlar:


18

NT AUTHORITY\NetworkServiceHesap Erişim kontrolü için makinenizin kimlik gereken bir etki alanındaki diğer bilgisayarlarla iletişim yaparken sadece ihtiyaç vardır. Basit Internet / ağ erişimi için gerekli değildir. Bir Active Directory etki alanında yalnızca belirli amaçlar için gereklidir.

Ayrıca NT AUTHORITY\LocalServicehesabın tüm amacı, sistemde minimum ayrıcalıklara sahip olmasıdır. Daha ayrıcalıklı kılmak, sisteminizde, sunmak için tasarlandığı düşük ayrıcalık düzeyinde çalışmak üzere tasarlanmış birçok hizmetin güvenliğini azaltır. Hizmetiniz bunların üzerinde ve ötesinde ayrıcalıklar gerektiriyorsa, gerekli ayrıcalıklarla yeni bir hesap oluşturmalı ve bu hesabı hizmet özelliklerinin Oturum Açma sekmesinde ayarlamalısınız . (Bu programlı olarak da yapılabilir.)

Ayrıca , sisteminize sınırsız erişimi olan NT AUTORITY\LocalSystemhesabı kullanarak da çalıştırabilirsiniz , ancak LocalServicehesabı sağladığı daha fazla güvenlik için kullanmak istediğinizi varsayalım .


1
Bir klasörde (ve alt klasörlerde) LocalService hesabına tam denetim vermek diğer hizmetlerin güvenliğini nasıl azaltır?
contactmatt

1
@ user19185 Güvenliklerini kendiliğinden azaltmaz, ancak saldırı profilini yükseltir. Eğer olduğu gibi çalışan bir hizmet LocalService, açtığınız herhangi bir şeye erişebilirken LocalService, normalde hiçbir şeye erişemez. Bu 70'lerden beri standart bilgisayar güvenliği işletim prosedürü olmuştur .
Yamalar

1
Bunun LocalSystem, normal yönetici hesaplarından daha fazla hak ve ayrıcalığa sahip olduğunu belirtmek isteriz .
Stein Åsmul

@Stein Åsmul: Düzeltme için teşekkürler! Cevabımı bunu yansıtacak şekilde güncelledim.
Yamalar

2

Önceki cevap soruları doğrudan ele almadı, bu yüzden buna ekleyeceğimi düşündüm.

  1. Planım, hizmetin varsayılan "Yerel Hizmet" hesabı olarak çalıştırılmasını sağlamak. Okuduğum / yazdığım klasördeki "Yerel Hizmet" hesabı için açıkça "Tam Denetim" ayrıcalıklarını ayarlayacağım. Yukarıdakilerin iyi bir plan olduğuna inanıyorum.

Şahsen, bu planla ilgili büyük bir sorun görmüyorum. BUILTIN'lerle seçim aşağıdakiler arasındadır:

  1. LOCALSYSTEM olarak çalışıyor - bu nedenle bu hizmetin güvenliği ihlal edilirse, saldırgan her şeye sahip olur ve hemen.
  2. LOCALSERVICE olarak çalışıyor - bu nedenle bu hizmet veya bu hesap altında çalışan birçok hizmetten biri tehlikeye girerse, saldırganın fazladan bir dizine erişimi olur. *

Muhtemelen, ikinci seçeneği kullanabilmek için birkaç ekstra EKL eklemek tercih edilir. Evet, düşük ayrıcalıklı ancak güvenliğe son derece duyarlı bir hizmet için en güvenli seçenek, özel olarak uyarlanmış, düşük ayrıcalıklı bir hizmet hesabı altında çalışmak olacaktır. Ancak, dağıttığınız her hizmet için yeni bir hesap oluşturmak / parolaları yönetmek istemiyorsanız, hassas olmayan küçük görevler için LocalService kullanmak bu kadar korkunç bir şey değildir. Sadece bu dizinde veya bu veritabanında bulunanlar, ihlal edildikleri takdirde etkisi gibi bu hususlara dayanarak sorumlu bir karar vermeniz gerekir.

Yine de, en azından ayrıcalık ilkesine göre, sadece gerçekten yeterli Full Controldeğilse ayarlamalısınız Modify.

2. Sorum şu: Okuduğum ve yazdığım klasör için tam kontrol erişimine sahip bir "Ağ Hizmeti" rolü oluşturmam gerekiyor mu? "Ağ Hizmeti" hesap kurulumuna ihtiyacım olursa hizmetimin başka bir sunucuya veritabanı bağlantısı kullandığı için merak ediyorum.

Veritabanınız Windows Tümleşik / SSPI oturum açma gerektiriyorsa, evet, her yerde NetworkService (veya bir etki alanı hizmet hesabı) kullanmanız gerekir, örn. RunAs ve dizin izinleri. Bilgisayarınızın $ veya alan adı hesabınıza bu veritabanına erişim izni verdiğinizi varsayarsak. Bunu yaptığınızdan şüpheliyim, bu yüzden normal kullanıcı adı / pwd kimlik doğrulaması kullanıyorsa, LocalService ile her şeyi yapabilmeniz gerekir. RunAs'ınızda hangisini kullanırsanız kullanın, her ikisinde birden değil, bu dizinde yalnızca bir hesap hakkı vermeniz gerekir.

3. "Ağ Hizmeti" hesabının ne yaptığını yanlış anlıyor olabilirim.

LocalService / NetworkService , yerel bilgisayardaki neredeyse aynı hesaplardır. Fark esas olarak ağ üzerinde yapabilecekleri şeydir. NS, ağda gerçek (bilgisayar) bir hesap olarak göründüğü için bazı ağ kaynaklarına erişebilir. Ancak LS, ANONYMOUS olarak görünecektir, bu nedenle çoğunlukla ağdaki her şey reddedilecektir.

Bu arada, bunun için bir hizmet değil Zamanlanmış Görev kullanmalısınız.

* Vista'dan itibaren, hizmet yalıtımı nedeniyle , güvenliği ihlal edilmiş bir LocalService işlemi diğerine kolayca saldıramaz. Her LocalService / NetworkService hizmet işlemi / örneği, Windows 2003'ün aksine kendi benzersiz oturum açma oturumu SID'sini (benzersiz sahibi) alır. Ancak bunun mükemmel olduğundan ve dosya ve kaynaklardaki DACL güvenlik açığını tam olarak azalttığından emin değilim. Kısıtlı SID'lerden ve yazma kısıtlamalı tokenlerden bu bağlamda bahsedilmektedir.


2

Diğer yanıtlar, Yerel Hizmet kullanımıyla ilgili söylediklerinizi doğrular. Özetlemek gerekirse, Ağ Hizmeti'nin ekstra Active Directory SSPI özelliklerine ihtiyacınız yoksa, Yerel Hizmet hizmetinizle birlikte kullanılması önerilen hesaptır.

Belirli bir klasöre okuma / yazma erişimini kısıtlamak için, genel Yerel Hizmet hesabına erişim vermekten daha iyisini yapabilirsiniz. Sorun, diğerlerinin de belirttiği gibi, bunun da Yerel Hizmet olarak çalışan diğer tüm hizmetlere okuma / yazma erişimi vermesi ve tüm hizmetler bunu yapması halinde, yavaş yavaş Yerel Hizmetin giderek daha önemli kaynaklara erişebilmesidir.

Çözüm, özel hizmet SID'inizi kullanarak klasörünüzü ACL yapmaktır. Yalnızca kendi hizmet işleminizle ilişkili hizmet SID'iniz vardır, bu nedenle kaynağınız daha da kilitlenir. Hizmet SID'sini kullanarak görüntüleyebilirsiniz sc showsid <service name>. Hizmet SID'si hizmet adından oluşturulur, bu nedenle tüm makinelerde aynı olur.

Hizmetinizin hizmet SID kullanımını etkinleştirmek için, ayarlanacak yapı ChangeServiceConfig2ile birlikte kullanın . Ayrıca , yalnızca hizmet SID'inizle açıkça izin verilen kaynaklara yazma erişimine izin veren daha da sınırlı bir SID almayı ayarlayabilirsiniz .SERVICE_SID_INFOSERVICE_SID_TYPE_UNRESTRICTEDSERVICE_SID_TYPE_RESTRICTED

Bu bağlantıda, hizmet SID'lerinin ve sınırlı hizmet SID'lerinin üst düzey açıklamaları bulunur: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and- 2008 / hh125927 (v = ws.10)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.