SMTP-пароль сохраняется в открытом виде?

Здравствуйте,

Я новичок в установке Discourse и недавно настроил его на Droplet от Digital Ocean для использования в качестве корпоративного форума/страницы сообщества.

В процессе установки я заметил, что поле ввода пароля SMTP не защищено, и пароль хранится в виде обычного текста в файле app.yml.

Это кажется потенциальной проблемой безопасности. Однако я не являюсь экспертом в области сетей или безопасности, поэтому, возможно, такое решение вполне приемлемо по ряду причин. Но чтобы удовлетворить нашего IT-менеджера, мне было бы полезно лучше понять, почему всё реализовано именно так.

Я знаю, что Discourse широко используется многими компаниями, поэтому предполагаю, что эта тема уже достаточно обсуждалась.

Буду благодарен за любую помощь.

Спасибо!
Джейсон

Если у кого-то, кому вы не доверяете, есть доступ к вашему файлу app.yml, то пароль от SMTP — это наименьшая из ваших проблем.

Как бы вы предложили защитить это?

Хэши являются односторонними — их нельзя обратить обратно к исходным данным.

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

Довольно распространённой практикой является хранение таких данных, как пароли SMTP и API-ключи, в открытом виде. Они должны передаваться в исходной форме, поэтому их хэширование сделало бы их использование невозможным. Если бы сторонний сервис принимал хэш пароля, то хэширование не давало бы никаких преимуществ в качестве меры защиты.

Как уже отметил Джей выше, если будет нарушена физическая целостность вашего сервера и файл app.yml будет скомпрометирован, у вас возникнут гораздо более серьёзные проблемы, чем необходимость сброса пароля SMTP.

Одно важное предупреждение: вы не должны использовать этот пароль SMTP где-либо ещё. Это не специфично для Discourse — это хорошая практика безопасности для всех систем и всех учётных записей.

Как сказал Джей, если кто-то получил доступ к вашему файлу app.yml, у вас гораздо более серьёзные проблемы. Это означает, что у них, скорее всего, есть полный root-доступ к вашему серверу, включая вашу производственную базу данных.

Лучшая практика в данном случае — убедиться, что ваш сервер защищён.

Всем привет, спасибо за ответы.

Я согласен, что защита сервера — это первая линия обороны. Однако в данном случае это вне моего контроля, так как я установил Discourse на Droplet от Digital Ocean.

@Stephen — спасибо за справочную информацию о паролях SMTP. Я не знал, что для такого рода использования их часто хранят в открытом виде. Как я уже говорил, это не моя сфера компетенции. Это просто то, что привлекло мое внимание, и я хотел спросить.

Спасибо!
Джейсон

Не совсем :slight_smile: Вы можете ограничить вход только по SSH-ключу, настроить работающий фаервол и убедиться, что обновления безопасности применяются регулярно. Это значительная часть обеспечения безопасности Droplet.

Верно. И если у вас не зашифрована файловая система (что сложно реализовать), то вам также приходится доверять им. У них есть физический доступ к серверам и сети.

Как уже объяснялось, вам просто нужен пароль для его использования.