Uprawnienia IIS_IUSRS i IUSR w IIS8

146

Właśnie przeniosłem się z IIS6 na Win2003 do IIS8 na Win2012 w celu hostowania aplikacji ASP.NET.

W jednym folderze w mojej aplikacji muszę tworzyć i usuwać pliki. Po skopiowaniu plików na nowy serwer, przy próbie usunięcia plików ciągle pojawiały się następujące błędy:

Odmowa dostępu do ścieżki „D: \ WebSites \ myapp.co.uk \ companydata \ filename.pdf”.

Kiedy sprawdzam IIS, widzę, że aplikacja działa na koncie DefaultAppPool, jednak nigdy nie konfiguruję uprawnień systemu Windows w tym folderze, aby uwzględnić IIS AppPool \ DefaultAppPool

Zamiast tego, aby przestać krzyczeć klientów, przyznałem następujące uprawnienia do folderu:

IUSR

  • Przeczytaj i wykonaj
  • Wyświetl zawartość folderu
  • Czytać
  • pisać

IIS_IUSRS

  • Modyfikować
  • Przeczytaj i wykonaj
  • Wyświetl zawartość folderu
  • Czytać
  • pisać

Wydaje się, że to zadziałało, ale obawiam się, że ustanowiono zbyt wiele przywilejów. Przeczytałem w Internecie sprzeczne informacje o tym, czy IUSR jest tutaj w ogóle potrzebny. Czy ktoś może wyjaśnić, którzy użytkownicy / uprawnienia wystarczyłyby do tworzenia i usuwania dokumentów w tym folderze? Czy IUSR jest częścią grupy IIS_IUSRS?

Aktualizacja i rozwiązanie

Zobacz moją odpowiedź poniżej . Musiałem to niestety zrobić, ponieważ niektóre ostatnie sugestie nie były dobrze przemyślane, a nawet bezpieczne (IMO).

EvilDr
źródło
Aby WordPress działał z usługami IIS 8 na maszynie wirtualnej Azure (Windows Server 2012 Datacenter), musiałem przyznać uprawnienia, które podałeś dla IIS_IUSRS do IUSR dla katalogu blogów w inetpub / wwwroot
dumbledad
Dla tych, którzy przychodzą do tego wątku, ponieważ próbują uruchomić Joomla pod IIS i mają problemy z ustawieniami bezpieczeństwa plików, napisałem artykuł na blogu, który moim zdaniem jest właściwym rozwiązaniem. Prawdopodobnie ma to również zastosowanie do WordPress lub innych programów serwerowych opartych na PHP. renniestechblog.com/index.php/information/…
RenniePet
Działa dobrze po dodaniu pełnych uprawnień do folderu dla grupy użytkowników IIS_IUSRS.
Thulasiram
@Thulasiram, ale nadałeś pełne uprawnienia wszystkim użytkownikom usług IIS. Pomyśl o tym z perspektywy hakera. Jedna słaba strona i zyskują całkowitą kontrolę nad całą resztą
EvilDr

Odpowiedzi:

146

Nienawidzę publikować własnej odpowiedzi, ale niektóre odpowiedzi ostatnio zignorowały rozwiązanie, które zamieściłem w swoim własnym pytaniu, sugerując podejścia, które są niczym innym jak szalonym.

Krótko mówiąc - nie musisz w ogóle edytować żadnych uprawnień konta użytkownika Windows . Takie postępowanie tylko stwarza ryzyko. Proces jest w całości zarządzany w usługach IIS przy użyciu odziedziczonych uprawnień.

Stosując zmodyfikować / Zapis do Correct Konta Użytkownika

  1. Kliknij prawym przyciskiem myszy domenę, gdy pojawi się na liście Witryny, i wybierz opcję Edytuj uprawnienia

    wprowadź opis obrazu tutaj

    Na karcie Bezpieczeństwo zobaczysz MACHINE_NAME\IIS_IUSRSlistę. Oznacza to, że usługi IIS automatycznie mają uprawnienia tylko do odczytu katalogu (np. Do uruchamiania ASP.Net w witrynie). Nie musisz edytować tego wpisu .

    wprowadź opis obrazu tutaj

  2. Kliknij przycisk Edytuj , a następnie Dodaj ...

  3. W polu tekstowym wpisz IIS AppPool\MyApplicationPoolName, zastępując MyApplicationPoolNamenazwę swojej domeny lub inną pulą aplikacji uzyskującą dostęp do Twojej witryny, npIIS AppPool\mydomain.com

    wprowadź opis obrazu tutaj

  4. Naciśnij przycisk Sprawdź nazwy . Wpisany tekst zmieni się (zwróć uwagę na podkreślenie):

    wprowadź opis obrazu tutaj

  5. Naciśnij OK, aby dodać użytkownika

  6. Po wybraniu nowego użytkownika (Twojej domeny) możesz teraz bezpiecznie nadawać wszelkie uprawnienia do modyfikacji lub zapisu

    wprowadź opis obrazu tutaj

EvilDr
źródło
2
To nie zadziałało na moim serwerze IIS 8.5. Dodawanie IUSRprac. Dodanie IIS AppPool\Cache(nazwa mojej puli aplikacji) dajeHTTP Error 401.3 - Unauthorized
Charles Burns
14
@CharlesBurns Miałem ten sam problem, stwierdziłem, że jest to moja główna przyczyna: techras.wordpress.com/2016/03/09/ ... (anonimowe uwierzytelnianie zostało ustawione na używanie IUSR zamiast tożsamości puli aplikacji)
Jon
2
Miałem folder używany tylko jako katalog wirtualny i działał dobrze, dopóki nie udostępniłem go (wskazanego folderu Windows) innemu kontu domeny, aby mógł przeglądać pliki w naszym intranecie. Kiedy to zrobiłem, pliki w katalogu wirtualnym nagle stały się nieosiągalne. Skończyło się na tym, że musiałem dodać oba MyComputerName\IIS_IUSRSi IUSRz uprawnieniami Tylko do odczytu, aby znów działał. Dotyczy to tylko katalogów wirtualnych (nie aplikacji .net), ale ktoś może uznać to za przydatne.
MikeTeeVee
13
Uwaga: podczas wyszukiwania użytkownika, gdy komputer jest członkiem domeny, zestaw IIS AppPool \ MyApplicationPoolName może nie zostać znaleziony. W moim przypadku musiałem kliknąć przycisk Lokalizacje i zmienić lokalizację na komputer lokalny.
statler
3
W moich testach nazwa użytkownika specjalnego, którego tu należy użyć, nie ma nic wspólnego z nazwą domeny. Jest to nazwa puli aplikacji przypisana do witryny w usługach IIS. Ta pula aplikacji może, ale nie musi, mieć nazwę zgodną z domeną Twojej witryny. Więc wzór jest: IIS AppPool\[APPLICATION POOL NAME]. Spacje w nazwie puli aplikacji są akceptowane. Należy również pamiętać, że ten użytkownik zostanie znaleziony tylko wtedy, gdy jako typ obiektu dla wyszukiwania nazwy zostanie zaznaczona opcja „Wbudowane podmioty zabezpieczeń” (górne pole w oknie dialogowym „Wybierz użytkowników lub grupy”).
Jpsy
49

IUSR jest częścią grupy IIS_IUSER, więc myślę, że możesz usunąć uprawnienia dla IUSR bez obaw. Dalsze czytanie

Jednak z czasem pojawił się problem, ponieważ coraz więcej usług systemu Windows zaczęło działać jako SERWIS SIECIOWY. Dzieje się tak, ponieważ usługi działające jako NETWORKSERVICE mogą modyfikować inne usługi działające pod tą samą tożsamością. Ponieważ procesy robocze usług IIS domyślnie uruchamiają kod innych firm (klasyczne ASP, ASP.NET, kod PHP), nadszedł czas, aby odizolować procesy robocze usług IIS od innych usług systemowych Windows i uruchamiać procesy robocze usług IIS z unikalnymi tożsamościami. System operacyjny Windows udostępnia funkcję o nazwie „Konta wirtualne”, która umożliwia usługom IIS tworzenie unikatowych tożsamości dla każdej z pul aplikacji. DefaultAppPool to domyślna pula przypisana do wszystkich tworzonych puli aplikacji.

Aby zwiększyć bezpieczeństwo, można zmienić tożsamość DefaultAppPool usług IIS na ApplicationPoolIdentity.

Jeśli chodzi o uprawnienia, tworzenie i usuwanie podsumowuje wszystkie prawa, które można nadać. Więc wszystko, co przypisałeś do grupy IIS_USERS, będzie wymagać. Nic dodać nic ująć.

mam nadzieję że to pomoże.

Travis G.
źródło
3
Właśnie zainstalowałem IIS 8 w Server Essentials 2012 R2. Ta maszyna jest także kontrolerem domeny. W przypadku użytkowników i komputerów usługi AD grupa IIS_IUSRS jest pusta - nie zawiera użytkownika IUSR. Przypuszczam, że mógłbym dodać go do grupy, ale w przypadku anonimowych witryn po prostu udzielę uprawnień użytkownikowi IUSR.
Mark Berry
7
Kiedy nadałem uprawnienia dla IUSR, zadziałało. Kiedy przyznałem uprawnienia IIS_IUSER, to nie zadziałało.
ihebiheb
Iusr nie jest członkiem IIS_Iusrs. (lub system Windows ma błąd) Ogólnie system Windows używa IIS_Iusrs. (wykonywanie stron dynamicznych lub uzyskiwanie dostępu do stron statycznych), ale w niektórych przypadkach system Windows używa Iusr, a nie IIS_Iusrs. przesyłanie plików za pomocą PHP jest jednym z takich przypadków. (a jeśli przyznałeś tylko iis_iusr, spotkasz się z wyjątkiem przywileju) Myślę, że M $ powinno dać „Najlepszą praktykę” nadawania uprawnień Iusr i IIS_Iusrs ...
finejustice
Myślę, że teraz jego zmieniono na grupę puli aplikacji tj. (IWGP). Dałem uprawnienia IWGP i zadziałało.
Rohit Arora
6
IUSR jest częścią IIS_IUSER. NIE, NIE JEST! IUSR to anonimowy użytkownik, IIS_IUSER to grupa dla użytkowników
apppool
6

Kiedy dodałem uprawnienia IIS_IUSRS do folderu witryny - zasoby, takie jak js i css, nadal były niedostępne (błąd 401, zabroniony). Jednak kiedy dodałem IUSR - było ok. Więc na pewno „NIE MOŻESZ usunąć uprawnień dla IUSR bez obaw”, drogi @Travis G @

Alexander
źródło
7
Nie zapominaj, że (jeśli masz IIS7 +) poprawnym rozwiązaniem jest użycie IIS AppPool\MyApplicationPoolNamezgodnie z moją zaktualizowaną odpowiedzią. Nie musisz już więcej bawić się z IUSR (S)!
EvilDr,
2
Wypróbowałem twoją sugestię, ale nie działa. Usunąłem IUSR (S) z uprawnień i pozostałem tylko nazwa puli, pod którą działa aplikacja. Zasoby stały się niedostępne. IIS 8.5. Kiedy dodałem IUSR - zaczęło działać.
Alexander,
Musisz zadać własne pytanie, podając jak najwięcej informacji o swojej sytuacji.
EvilDr
4

@EvilDr Możesz utworzyć konto IUSR_ [identyfikator] w swoim środowisku AD i pozwolić określonej puli aplikacji działać pod tym kontem IUSR_ [identyfikator]:

„Pula aplikacji”> „Ustawienia zaawansowane”> „Tożsamość”> „Konto niestandardowe”

Ustaw swoją witrynę internetową na „Użytkownik aplikacji (uwierzytelnianie przekazywane)”, a nie „Określony użytkownik”, w Ustawieniach zaawansowanych.

Teraz nadaj temu IUSR_ [identyfikator] odpowiednie uprawnienia NTFS do plików i folderów, na przykład: modyfikuj dane firmy.

Jan Reilink
źródło
Dzięki, ale nie używam AD. Ponadto, zgodnie z najnowszą dokumentacją MS, IIS 7 i 8 są już skonfigurowane do pracy zgodnie z opisem. Pytanie naprawdę brzmi, czy jedno z określonych kont jest rzeczywiście potrzebne, czy nie, i który z nich prowadzi działalność?
EvilDr
@EvilDr Dziękujemy za wyjaśnienie, że nie używasz reklamy. Cóż, IIS_IUSRS nie jest użytkownikiem, to grupa. Podobnie jak IIS_WPG w usługach IIS 6.0. Możesz przeczytać o IIS_IUSRS i IUSR tutaj: link . Możesz ustawić modyfikacje uprawnień do danych firmy * dla konta IUSR i możesz dodać tego użytkownika do grupy IIS_IUSRS i użyć tego konta użytkownika do uruchamiania puli aplikacji. Potrzebujesz tylko wielkich uprawnień dla IIS_IUSRS do folderów współdzielonych (na przykład TMP), jeśli masz wiele kont IUSR_account.
Jan Reilink
Jan, zawsze myślałem, że IUSR był domyślnie częścią grupy IIS_IUSRS? Jak sprawdzić, czy tak jest, skoro konto IUSR jest kontem wbudowanym. Czy chcesz powiedzieć, że powinienem odznaczyć opcję Modyfikuj dla IIS_USRS i zamiast tego sprawdzić IUSR? Biorąc pod uwagę wymóg dotyczący pojedynczej aplikacji, nie sądzę, aby to naprawdę miało znaczenie, prawda?
EvilDr
3

Grupa IIS_IUSRS ma znaczenie tylko wtedy, gdy używasz tożsamości ApplicationPool. Mimo że ta grupa wygląda na pustą w czasie wykonywania, usługi IIS dodają ją do tej grupy w celu uruchomienia procesu roboczego zgodnie z literaturą firmy Microsoft.

Ashburn RK
źródło
Nie jestem pewien, dlaczego ten głos został odrzucony. docs.microsoft.com/en-us/iis/get-started/planning-for-security/ ...
Greg
0

Użyłbym konkretnego użytkownika (a NIE użytkownika aplikacji). Następnie włączę podszywanie się w aplikacji. Gdy to zrobisz, niezależnie od konta, które jest ustawione jako określony użytkownik, te poświadczenia będą używane do uzyskiwania dostępu do zasobów lokalnych na tym serwerze (nie w przypadku zasobów zewnętrznych).

Określone ustawienie użytkownika jest przeznaczone specjalnie do uzyskiwania dostępu do zasobów lokalnych.

programista747
źródło