Безопасный доступ для записи к системному файлу (/etc/aliases)

Это также, вероятно, связано с плагином WebEx. Мы пытались разыскать эту ошибку с частым возникновением с нашим клиентом. Однако мы интегрируем Живую Встречу в настоящее время и те же ошибочные возвраты для одного из наших пользователей. Интересно, формируется ли Живое использование Встречи подобный инструменту WebEx Outlook Integration 2.2, прежде чем они изменили его на плагин на их 3,2 версиях.

Что-то для размышления о...

0
задан 26 June 2011 в 12:42
2 ответа

Простой способ состоит в том, чтобы сделать /etc/aliases принадлежавший интернет-пользователю. Существует несколько способов, которыми можно сделать это более безопасным; это - вопрос того, какими угрозами Вы обеспокоены и сколько сложности Вы готовы добавить для смягчения их.

Если приложение, как только предполагается, изменяет некоторые псевдонимы, Вы смогли настраивать свой MTA, чтобы считать несколько файлов псевдонима и сделать только одного из них перезаписываемым Вашим приложением. Я не думаю, что это купит Вас много безопасности против дыры в системе безопасности в приложении: если взломщик добавляет перенаправление от webmaster кому: evil@mastermind.com, это не имеет значения, к какому файлу это было добавлено. Но это могло быть полезно в сочетании с механизмами обзора.

Если Вы хотите рассмотреть или контролировать то, что делает приложение, не давайте ему доступ для записи к /etc/aliases. Вместо этого заставьте его записать временный файл где-нибудь, затем вызвать привилегированную программу, чтобы проверить этот файл и объединить данные в /etc/aliases (или специализированный файл, как предложено выше). Привилегированная программа, давайте назовем его merge-myapp-aliases, должен быть исполняемый файл интернет-пользователем и setgid специализированной группе. Таким образом, merge-myapp-aliases должен принадлежать root:myapp-aliases и режим 2755 (rwxr-sr-x). Причина использовать группу, а не пользователя состоит в том, что, даже если существует дыра в системе безопасности в исполняемом файле, взломщик не сможет изменить исполняемый файл для введения троянца. Задание merge-myapp-aliases должен проверить содержание его входа (например, проверить, что он не устанавливает псевдонимы для пользователей системы), зарегистрируйте его действия и замените файл псевдонима новой версией.

Для устойчивости специализированный файл псевдонима должен быть в специализированном каталоге с разрешением записи группы. Заставьте программу записать новый файл (/etc/aliases.myapp/new), затем атомарно переместите его на месте (mv /etc/aliases.myapp/new /etc/aliases.myapp/current). Тем путем Вы не закончите с неполным файлом, если программа будет закрыта на полпути по любой причине.

Альтернативный способ продвинуть изменения в место, которое имеет преимущество автоматического отъезда полного журнала аудита, состоит в том, чтобы иметь CGI, передают файл системе управления версиями и нажимают на курок для другой программы для проверки последнего пересмотра. Большинство систем управления версиями имеет способ проверить фиксации.

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

3
ответ дан 4 December 2019 в 12:53

Вы не говорите, что MTS Вы используете. Но эта информация довольно важна. /etc/aliases считается механизмом совместимости Sendmail несколькими программным обеспечением MTS, собственные механизмы искажения которого более мощны, и обращаются к очень проблемам безопасности, которые Вы поражаете здесь. Для примеров:

  • В qmail fastforward дополнительные дескрипторы /etc/aliases путем включения его в собственное искажение qmail системы. Собственная система искажения, .qmail файлы, позволяет любому локальному пользователю fred@example.com иметь набор в расчете на пользователя псевдонимов fred-something@example.com определенный .qmail-something файлы в корневом каталоге того пользователя. Пользователю не нужен доступ к глобальным корневым файлам, и нет никакого пути к fredфайлы псевдонима для изменения, что jim-something@example.com и sheila-something@example.com карта к.
  • В Постфиксе можно включить recipient_delimiter опция получить подобный механизм, с fred+something@example.com псевдонимы, определенные .forward+something файлы в корневом каталоге того пользователя.
  • В exim, local_part_suffix опция может быть включена, и $local_part_suffix будет установлен на -something каждый раз, когда ~fred/.forward фильтр выполняется для почты, адресованной fred-something@example.com.

Результат всего этого - то, что, если Ваш MTS является qmail, Постфиксом или exim, для Вашего приложения WWW просто нужна одна непривилегированная учетная запись локального пользователя, чтобы взять под контроль полный набор почтовых ящиков и не нуждается или в доступе к базе данных псевдонима в масштабе всей системы или в любом set-UID/set-GID shenanighans. Для многих задач — выполняющий списки рассылки, например, которому нужны названные почтовые ящики list-subscribe, list-owner, list-unsubscribe, list-handle-bounce-from-mandy-example.net-of-message-437, и т.д — это достаточно.

Завися от того, каково Ваше приложение, это могло бы быть достаточно для Вас, также.

0
ответ дан 4 December 2019 в 12:53

Теги

Похожие вопросы