Установка защиты на базу данных от взлома

Установка защиты на базу данных от взлома

Всем привет, меня зовут Александр, я являюсь фронтенд разработчиком с 4-х летним опытом работы. Сегодня хочу рассказать о том, как злоумышленники ломали мою базу данных mongodb, и каким образом мне удалось ее защитить.

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

Алгоритм построения защиты

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

База данных, которую оставили злоумышленники, называлась «READ_ME_TO_RECOVER_YOUR_DATA». В нем было сообщение, что мои данные были похищены и чтобы их вернуть, то необходимо заплатить за них выкуп. На сайте хабра я нашел информацию, что такой способ вымогательства используется с июня 2020 года. В общем, мне стало понятно, что моя база данных была не защищена и с нее воровали данные. Такая ситуация меня не устраивала, поэтому было принято решение искать варианты защиты базы данных.

Соответственно первым найденным способом стало добавить в базу пользователя и заходить под ним. Обычным способом добавить пользователя у меня не получалось.

<p> Обычный способ добавления пользователя</p>

Обычный способ добавления пользователя

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

<p> Сообщение об ошибке после ввода данных для добавления пользователя</p>

Сообщение об ошибке после ввода данных для добавления пользователя

Решить проблему получилось после того, как к вышеописанным данным добавил строчку со следующими данными: passwordDigestor: "server", в итоге пользователя получилось добавить.

<p> Сообщение об удачном добавлении пользователя в базу данных</p>

Сообщение об удачном добавлении пользователя в базу данных

Решение вопроса

Как выяснилось позже, оказывается, что я неправильно устанавливал базу данных для своей платформы. В линуксе оказывается есть две системы инициализации: systemd, которая используется в более новых системах, System V init, она используется на более старых системах. Так вот, проблема заключалась в том, что я на систему инициализации systemd ставил пакеты, которые предназначались System V init, и что еще более ужасно, у меня после этого в системе оказывалось две версии mongodb и система не знала какую из них запускать. Чтобы в этом разобраться мне понадобилось убить два дня.

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

  • необходимо снять авторизация в конфигурационном файле и после этого зайти в базу данных, перед заходом в базу данных ее необходимо перезагрузить в настройках системы;

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

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

По итогу выполнения алгоритма у меня оставался еще один вопрос — это настроить подключение к базе данных моего бекенд фреймворака nest. В результате поисков я нашел решение в следующем запросе: mongodb://логин пользователя:пароль пользователя@127.0.0.1:27017/название базы в mongodb?authSource=admin', { useNewUrlParser: true })

Вывод

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

Больше статей в моем блоге. Спасибо, что дочитали и до новых встреч в следующих статьях.

Начать дискуссию