To bardzo dobre pytanie i niestety wielu programistów nie zadaje wystarczających pytań na temat bezpieczeństwa IIS / ASP.NET w kontekście bycia programistą i konfigurowania IIS. No i proszę…
Aby objąć wymienione tożsamości:
IIS_IUSRS:
Jest to analogiczne do starej IIS_WPG
grupy IIS6 . Jest to grupa wbudowana ze skonfigurowanymi zabezpieczeniami, dzięki czemu każdy członek tej grupy może działać jako tożsamość puli aplikacji.
IUSR:
To konto jest analogiczne do starego IUSR_<MACHINE_NAME>
konta lokalnego, które było domyślnym anonimowym użytkownikiem witryn IIS5 i IIS6 (tj. Skonfigurowanego za pomocą karty Zabezpieczenia katalogu we właściwościach witryny).
Aby uzyskać więcej informacji na temat IIS_IUSRS
i IUSR
zobacz:
Zrozumienie wbudowanych kont użytkowników i grup w IIS 7
DefaultAppPool:
Jeśli pula aplikacji jest skonfigurowana do uruchamiania przy użyciu funkcji Tożsamość puli aplikacji, wówczas „syntezowane” konto o nazwie IIS AppPool\<pool name>
zostanie utworzone w locie w celu użycia jako tożsamość puli. W takim przypadku zostanie utworzone konto syntetyczne o nazwie IIS AppPool\DefaultAppPool
utworzone na czas istnienia puli. Jeśli usuniesz pulę, to konto przestanie istnieć. Przy stosowaniu uprawnień do plików i folderów należy je dodać za pomocą IIS AppPool\<pool name>
. Nie zobaczysz również tych kont puli w Menedżerze użytkowników komputerów. Aby uzyskać więcej informacji, zobacz następujące informacje:
Tożsamości puli aplikacji
ASP.NET v4.0:
-
Będzie to tożsamość puli aplikacji dla puli aplikacji ASP.NET v4.0. Patrz DefaultAppPool
wyżej
NETWORK SERVICE:
-
NETWORK SERVICE
Konto jest wbudowany tożsamości wprowadzonym w systemie Windows 2003.NETWORK SERVICE
jest niska uprzywilejowane konto, na którym można uruchomić pul aplikacji i stron internetowych. Witryna działająca w puli systemu Windows 2003 może nadal podszywać się pod anonimowe konto witryny (IUSR_ lub cokolwiek skonfigurowanego jako anonimowa tożsamość).
W ASP.NET przed Windows 2008 możesz mieć ASP.NET wykonujący żądania w ramach konta w puli aplikacji (zwykle NETWORK SERVICE
). Alternatywnie można skonfigurować program ASP.NET tak, aby personifikował anonimowe konto witryny za pomocą lokalnego <identity impersonate="true" />
ustawienia web.config
pliku (jeśli to ustawienie jest zablokowane, administrator machine.config
pliku musi to zrobić ).
Ustawienie <identity impersonate="true">
jest wspólne w dzielonych środowiskach hostingowych, w których używane są współużytkowane pule aplikacji (w połączeniu z częściowymi ustawieniami zaufania, aby zapobiec odwróceniu personifikowanego konta).
W IIS7.x / ASP.NET kontrola personifikacji jest teraz konfigurowana za pomocą funkcji konfiguracji uwierzytelniania witryny. Możesz więc skonfigurować działanie jako tożsamość puli IUSR
lub określone niestandardowe anonimowe konto.
LOCAL SERVICE:
LOCAL SERVICE
Konto jest wbudowane konto używane przez menedżera sterowania usługami. Ma minimalny zestaw uprawnień na komputerze lokalnym. Ma dość ograniczony zakres zastosowania:
Konto LocalService
LOCAL SYSTEM:
Nie pytałeś o to, ale dodaję dla kompletności. To jest lokalne konto wbudowane. Ma dość szerokie przywileje i zaufanie. Nigdy nie należy konfigurować strony internetowej ani puli aplikacji, aby działały pod tą tożsamością.
Konto LocalSystem
W praktyce:
W praktyce preferowanym podejściem do zabezpieczania strony internetowej (jeśli witryna otrzyma własną pulę aplikacji - która jest domyślna dla nowej witryny w MMC IIS7) jest uruchomienie Application Pool Identity
. Oznacza to ustawienie Tożsamości witryny w ustawieniach zaawansowanych puli aplikacji na Application Pool Identity
:
Następnie na stronie internetowej należy skonfigurować funkcję uwierzytelniania:
Kliknij prawym przyciskiem myszy i edytuj wpis Anonimowego uwierzytelnienia:
Upewnij się, że wybrano „Tożsamość puli aplikacji” :
Kiedy przystępujesz do stosowania uprawnień do plików i folderów, przyznajesz tożsamości puli aplikacji, niezależnie od wymaganych uprawnień. Na przykład, jeśli przyznajesz tożsamość puli aplikacji dlaASP.NET v4.0
uprawnień puli, możesz to zrobić za pomocą Eksploratora:
Kliknij przycisk „Sprawdź nazwy”:
Lub możesz to zrobić za pomocą ICACLS.EXE
narzędzia:
icacls c: \ wwwroot \ mysite / grant "IIS AppPool \ ASP.NET v4.0" :( CI) (OI) (M)
... lub ... jeśli nazywa się pula aplikacji witryny BobsCatPicBlog
wtedy:
icacls c: \ wwwroot \ mysite / grant "IIS AppPool \ BobsCatPicBlog" :( CI) (OI) (M)
Mam nadzieję, że to pomoże wyjaśnić sytuację.
Aktualizacja:
Właśnie natknąłem się na tę doskonałą odpowiedź z 2009 roku, która zawiera wiele przydatnych informacji, które warto przeczytać:
Różnica między kontem „System lokalny” a kontem „Usługa sieciowa”?