Назад | Перейти на главную страницу

Какому пользователю следует дать разрешение в IIS?

Я запускаю сервер Windows 2012 с установленным IIS 8,
У меня есть скрипт php, который жалуется на отсутствие разрешения на запись в определенной папке.
Если я предоставлю разрешения этому пользователю IUSR, он будет работать нормально,
Но я не знаю, правильно ли это сделать или безопасно?
Я читал о IUSR, и там было множество описаний этого пользователя для анонимной аутентификации, я просто не понимал, есть ли какие-либо риски, дающие ему полное разрешение.
Поэтому я остановил работу и подумал, что было бы разумно сначала получить совет от экспертов.
Какому пользователю следует предоставить разрешения?
Спасибо!

Весь доступ к объектам в операционных системах на базе Windows NT осуществляется в контексте учетной записи пользователя. Когда анонимные пользователи обращаются к вашему веб-сайту, IIS обращается к файлам и сценариям под IUSR_machinename учетная запись пользователя. Эта учетная запись пользователя имеет очень ограниченные права и служит для разделения анонимного доступа.

Функциональность аутентификации в IIS позволяет удаленным пользователям аутентифицироваться таким образом, что IIS будет «олицетворять» свою учетную запись пользователя Windows и получать доступ к файлам и сценариям в их контекст учетной записи пользователя, а не контекст учетной записи анонимного пользователя.

Если у ваших удаленных пользователей нет учетных записей пользователей Windows, то они просто анонимные пользователи и не имеют возможности аутентифицироваться в IIS. В этом случае (который является типичным) вам просто нужно будет предоставить права анонимной учетной записи пользователя, чтобы делать все необходимое для работы вашего приложения. Так обстоит дело с некоторыми приложениями - у вас нет возможности для аутентификации пользователей, поэтому вы должны сделать должное с анонимным доступом и предоставлением разрешений анонимной учетной записи пользователя.

Это «рискованно»? Это зависит от вашего приложения. Если анонимные пользователи имеют возможность загружать произвольные файлы в каталог и, например, выполнять их, то вы фактически открываете доступ к общедоступной оболочке на своем сервере. Это будет определять архитектура приложения.

Приложения, которые позволяют анонимным пользователям загружать файлы произвольного типа, количества и размера на удаленный серверный компьютер, на первый взгляд кажутся мне очень рискованными. Это полная демонстрация, если каталог, в котором хранятся загрузки, доступен через веб-сервер для загрузок, потому что, по сути, вы только что сделали свой сервер общедоступным сайтом для обмена файлами. Это также полная остановка, если пользователь может заставить любой загружаемый контент (включая EXE-файлы и / или файлы сценариев) выполняться либо Windows, либо интерпретатором PHP.

Чем больше «удалена» запись из-под контроля пользователя (т.е. если сценарий просто хранит файлы там для отслеживания состояния, а не позволяет пользователям загружать произвольный контент), тем менее «рискованным» это кажется. Я бы искал сценарий, который хорошо справлялся бы с дезинфекцией пользовательского ввода и ограничивал количество данных, которые пользователь может заставить сценарий писать (для предотвращения DoS-атаки).

В конечном итоге вы действительно ищете обзор архитектуры безопасности приложений и, возможно, пентест. Если это широко используемый сценарий, который поддерживается и общедоступен, то, будем надеяться, простые ошибки безопасности уже должны быть устранены. Если это что-то более изысканное или нестандартное, я бы не стал доверять архитектуре безопасности приложения без ее проверки.