Какому пользователю я должен дать разрешение в IIS?
Я использую сервер Windows 2012 с установленным IIS 8,
У меня есть скрипт php, который жалуется на отсутствие разрешения на запись в определенную папку.
Если я даю разрешения этому пользователю IUSR, он работает просто отлично,
Но я не знаю, правильно ли это делать или это безопасно?
Я читал о IUSR, и было множество описаний этого пользователя для анонимной аутентификации, я просто не понимал, есть ли какие-либо риски, дающие полное разрешение на него.
Поэтому я остановил работу и подумал, что было бы целесообразно сначала получить совет от экспертов.
Какому пользователю я должен предоставить разрешения?
Спасибо!
1 ответ
Весь доступ к объектам в операционных системах на базе Windows NT осуществляется в контексте учетной записи пользователя. Когда анонимные пользователи получают доступ к вашему веб-сайту, IIS получает доступ к файлам и сценариям под учетной записью IUSR_machinename. Эта учетная запись пользователя имеет очень ограниченные права и служит для разделения анонимного доступа.
Функция проверки подлинности в IIS позволяет удаленным пользователям проходить проверку подлинности таким образом, что IIS будет "олицетворять" свою учетную запись Windows и получать доступ к файлам и сценариям в контексте их учетной записи, а не в контексте анонимной учетной записи пользователя.
Если ваши удаленные пользователи не имеют учетных записей Windows, то они просто анонимные пользователи и не имеют возможности проходить проверку подлинности в IIS. В этом случае (который является типичным) вам просто нужно предоставить права учетной записи анонимного пользователя, чтобы делать все необходимое для работы вашего приложения. Это так, как это происходит с некоторыми приложениями - у вас нет возможности аутентификации пользователей, поэтому вы должны сделать надлежащий доступ с анонимным доступом и предоставить разрешения учетной записи анонимного пользователя.
Это "рискованно"? Это зависит от вашего приложения. Если анонимные пользователи имеют возможность загружать произвольные файлы в каталог и выполнять их, например, то вы фактически открываете доступ к общедоступной оболочке на своем серверном компьютере. Архитектура приложения будет определять это.
Приложения, которые позволяют анонимным пользователям загружать файлы произвольного типа, количества и размера на удаленный сервер, кажутся мне очень рискованными. Это полная демонстрация, если каталог, в котором хранятся загружаемые файлы, доступен для загрузки через веб-сервер, потому что вы фактически превратили свой сервер в общедоступный сайт для обмена файлами. Это также полный showtopper, если пользователь может заставить любой загружаемый им контент (включая EXE-файлы и / или файлы сценариев) выполняться либо Windows, либо интерпретатором PHP.
Чем более "удалена" запись из-под контроля пользователя (т. Е. Если скрипт просто хранит там файлы для отслеживания состояния, а не позволяет пользователям загружать произвольный контент), тем менее "рискованно" это кажется. Я бы искал сценарий, который бы хорошо справлялся с дезинфекцией пользовательского ввода и ограничением количества данных, которые пользователь может заставить сценарий написать (чтобы предотвратить DoS-атаку).
В конечном счете, вы действительно ищете обзор архитектуры безопасности приложений, и, возможно, пентест. Если это широко используемый сценарий, который поддерживается и общедоступен, то, надеюсь, простые ошибки безопасности уже должны быть устранены. Если это что-то более модное или нестандартное, то я бы с осторожностью доверял архитектуре безопасности приложения без его проверки.