Як ми пережили Ransomware атаку і автоматизували відновлення Laravel проекту

13 вересня 2024 року о 23:58 наш сервер зазнав ransomware атаки. Ось історія того, як ми відновили систему і створили автоматизований startup процес, щоб це більше не повторилося.

Пролог: “Ваші дані захоплені”

Все почалося досить банально. Ранковий огляд системи показав, що база даних file_storage нашого Telegram API проекту зникла. Замість неї з’явилася підозріла база RECOVER_YOUR_DATA з єдиною таблицею, що містила повідомлення:

Типовий ransomware. Сума не велика (~$430), але принцип важливий – ми не платимо викупи.

Анатомія атаки

Як це сталося?

Швидка діагностика показала корінь проблеми:

Результат був невтішним – MySQL порт 3306 був відкритий назовні через конфігурацію Docker Compose:

Docker за замовчуванням обходить ufw firewall, роблячи MySQL доступним з інтернету. Поєднання з слабким паролем secret дало зловмисникам прямий доступ до бази.

Часова лінія атаки

Аналіз логів MySQL показав точну хронологію:

Атака була швидкою і цільовою – зловмисники точно знали що робити.

Процес відновлення

Крок 1: Діагностика втрат

Перше питання – що втрачено? Перевірка показала:

Дані проекту зникли, але структура системи залишилася неушкодженою.

Крок 2: Аналіз безпеки

На щастя, атака була обмежена лише MySQL – системного компрометування не виявлено.

Крок 3: Очищення та закриття уразливостей

Крок 4: Відновлення даних

Без бекапів довелося відновлювати структуру з нуля:

Народження автоматизованого рішення

Після відновлення стало зрозуміло – треба автоматизувати процес, щоб уникнути подібних проблем в майбутньому.

Принципи нового startup скрипта

  1. Перевірка безпеки – автоматичне виявлення відкритих портів
  2. Генерація стійких паролів – ніяких secret або password
  3. Автоматичне відновлення – створення баз та користувачів
  4. Валідація конфігурації – перевірка .env файлів

Архітектура рішення

Особливості реалізації

Генерація паролів:

Перевірка безпеки:

Автоматичне відновлення:

Результати автоматизації

Переваги нового підходу

До автоматизації:

  • Ручне налаштування 30+ команд
  • Слабкі паролі за замовчуванням
  • Відсутність перевірок безпеки
  • Час розгортання: 2+ години

Після автоматизації:

  • Одна команда: ./telegram-api-start.sh
  • Автогенерація стійких паролів
  • Вбудовані перевірки безпеки
  • Час розгортання: 5 хвилин

Структура проекту

Приклад використання

Уроки безпеки

Головні помилки

  1. Відкриті порти баз даних – найчастіша причина компрометації
  2. Слабкі паролі за замовчуваннямsecret, password, 123456
  3. Відсутність моніторингу – атака могла тривати годинами непоміченою
  4. Недостатні бекапи – автоматичні бекапи могли б врятувати дані

Рекомендації

Docker безпека:

Сильні паролі:

Мережева безпека:

Підсумки

Ransomware атака, хоч і неприємна, стала каталізатором для створення кращої системи розгортання. Автоматизований startup процес не тільки захищає від повторних атак, але й значно спрощує управління проектом.

Ключові досягнення

  • 🔒 Безпека: автоматичні перевірки та сильні паролі
  • Швидкість: розгортання за 5 хвилин замість годин
  • 🤖 Автоматизація: мінімум ручних дій
  • 📚 Документація: повний опис всіх процесів
  • 🛡️ Відновлення: швидке відновлення після інцидентів

Майбутні покращення

  • Автоматичні бекапи з шифруванням
  • Моніторинг безпеки в реальному часі
  • Інтеграція з системами сповіщення
  • Розширена діагностика мережевої безпеки

Головний урок: інвестиції в автоматизацію безпеки окупаються вже з першого інциденту. Краще витратити день на створення надійних скриптів, ніж тижні на відновлення після атак.


Всі скрипти та документація доступні в репозиторії проекту. Використовуйте, адаптуйте під свої потреби і пам’ятайте – безпека це не одноразова дія, а постійний процес.

Опубліковано в Docker

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *