🌱MongoDB или фейл года
Хочу поделиться одной поучительной и интересной историей, произошедшей буквально вчера. Новый год, так сказать, решил сразу во всей красе показать, чего ожидать от 2022-го.
Парочка существующих проектов используют в качестве основной небезызвестную MongoDB. Это шикарная база с удобными методами работы. Конечно, привлекает и NoSQL формат.
С первым апреля января!
База в основном используется в двух Telegram ботах и закрытом API-сервисе friday.daurge.ru. Однако, первого января после окончания новогоднего ивента и релиза «Assistant» случилось новогоднее чудо!
Мне написал один пользователь бота со словами "Привет, там куда-то все мои купленные товары исчезли". Проверил логи - покупки совершал, валюта списалась. Товара нет. Как так? Час назад был, сейчас нет. Подключаюсь к базе - пусто... Три коллекции MongoDB абсолютно чистенькие и появилась новая «READ__ME_TO_RECOVERY_YOUR_DATA» со следующей записью:
All your data is a backed up. You must pay 0.02 BTC to 17BRyuxS53TQshpcJYKCpPjHDFAFcCFAnJ 48 hours for recover it. After 48 hours expiration we will leaked and exposed all your data. In case of refusal to pay, we will contact the General Data Protection Regulation, GDPR and notify them that you store user data in an open form and is not safe. Under the rules of the law, you face a heavy fine or arrest and your base dump will be dropped from our server! You can buy bitcoin here, does not take much time to buy https://localbitcoins.com or https://buy.moonpay.io/ After paying write to me in the mail with your DB IP: recmydb+1o5bw@onionmail.org and you will receive a link to download your database dump.
Фразой "я был удивлен" сложно описать сок удивление. Кому необходимо было "взламывать" мою БД и требовать вознаграждение, на минуточку, практически в 70.000 ₽.
В логах удаление запущено явно с несуществующего ip, так что, особо не помогло это ничем. Пошарившись на просторах интернета, единственным упоминанием явилась эта статья.
«Береженого Бог бережёт»
Смысл этой фразы, к сожалению, или к счастью, я понял только после этой ситуации. Безумно благодарен своей случайной идее после переезда на новый сервер в Польше настроить резервное копирование коллекций раз в 48 часов. Спокойно восстановил данные, закрыл все подключения к портам в Firewall и добавил строгий White List для входящих подключений. Не знаю, почему не сдалал этого с самого начала, но, как известно, все мы учимся на своих ошибках.