Я новичок в установке Discourse и недавно настроил его на Droplet от Digital Ocean для использования в качестве корпоративного форума/страницы сообщества.
В процессе установки я заметил, что поле ввода пароля SMTP не защищено, и пароль хранится в виде обычного текста в файле app.yml.
Это кажется потенциальной проблемой безопасности. Однако я не являюсь экспертом в области сетей или безопасности, поэтому, возможно, такое решение вполне приемлемо по ряду причин. Но чтобы удовлетворить нашего IT-менеджера, мне было бы полезно лучше понять, почему всё реализовано именно так.
Я знаю, что Discourse широко используется многими компаниями, поэтому предполагаю, что эта тема уже достаточно обсуждалась.
Хэши являются односторонними — их нельзя обратить обратно к исходным данным.
Пароли пользователей хэшируются, потому что они не должны быть обратимыми. Хэш пароля в базе данных используется только тогда, когда пользователь пытается войти в систему. Хэш предоставленного пароля сравнивается с хэшем пароля, хранящимся в записи этого пользователя.
Довольно распространённой практикой является хранение таких данных, как пароли SMTP и API-ключи, в открытом виде. Они должны передаваться в исходной форме, поэтому их хэширование сделало бы их использование невозможным. Если бы сторонний сервис принимал хэш пароля, то хэширование не давало бы никаких преимуществ в качестве меры защиты.
Как уже отметил Джей выше, если будет нарушена физическая целостность вашего сервера и файл app.yml будет скомпрометирован, у вас возникнут гораздо более серьёзные проблемы, чем необходимость сброса пароля SMTP.
Одно важное предупреждение: вы не должны использовать этот пароль SMTP где-либо ещё. Это не специфично для Discourse — это хорошая практика безопасности для всех систем и всех учётных записей.
Как сказал Джей, если кто-то получил доступ к вашему файлу app.yml, у вас гораздо более серьёзные проблемы. Это означает, что у них, скорее всего, есть полный root-доступ к вашему серверу, включая вашу производственную базу данных.
Лучшая практика в данном случае — убедиться, что ваш сервер защищён.
Я согласен, что защита сервера — это первая линия обороны. Однако в данном случае это вне моего контроля, так как я установил Discourse на Droplet от Digital Ocean.
@Stephen — спасибо за справочную информацию о паролях SMTP. Я не знал, что для такого рода использования их часто хранят в открытом виде. Как я уже говорил, это не моя сфера компетенции. Это просто то, что привлекло мое внимание, и я хотел спросить.
Не совсем Вы можете ограничить вход только по SSH-ключу, настроить работающий фаервол и убедиться, что обновления безопасности применяются регулярно. Это значительная часть обеспечения безопасности Droplet.
Верно. И если у вас не зашифрована файловая система (что сложно реализовать), то вам также приходится доверять им. У них есть физический доступ к серверам и сети.
Как уже объяснялось, вам просто нужен пароль для его использования.