Інцидент безпеки Docker: Атака на MySQL через відкриті порти

Загальний опис інциденту

Під час роботи з Docker-інфраструктурою було виявлено ransomware атаку на базу даних MySQL. База file_storage була видалена, а замість неї з’явилася підозріла база RECOVER_YOUR_DATA – типова ознака ransomware атаки на базу даних.

Причина атаки

Головною причиною стало неправильне налаштування Docker мережевої безпеки:

  1. Відкритий MySQL порт через docker-compose конфігурацію
  2. Docker обходить ufw firewall автоматично
  3. Слабкий пароль за замовчуванням (secret)

Діагностика проблеми

Перевірка відкритих портів

Виявлення атаки на базу даних

Аналіз Docker мережевої конфігурації

Виправлення безпеки

1. Закриття небезпечних портів

Неправильно:

Правильно:

2. Використання expose замість ports

Для внутрішнього доступу:

3. Обмеження доступу до localhost

Якщо потрібен зовнішній доступ:

4. Налаштування Docker для поваги до ufw

5. Сильні паролі

Відновлення після атаки

1. Очистка пошкоджених даних

2. Створення нової бази

3. Відновлення структури

Аудит безпеки після інциденту

Перевірка процесів

Перевірка мережевої активності

Перевірка файлової системи

Запобіжні заходи

1. Принципи Docker безпеки

  • Ніколи не експортуйте порти баз даних назовні
  • Використовуйте внутрішні Docker мережі
  • Застосовуйте сильні паролі
  • Регулярно оновлюйте контейнери

2. Firewall конфігурація

3. Мониторинг

4. Бекапи

Висновки

Даний інцидент демонструє критичну важливість правильного налаштування Docker мережевої безпеки. Головні уроки:

  1. Docker за замовчуванням обходить системний firewall
  2. Експорт портів має бути мінімальним і обдуманим
  3. Внутрішні сервіси (БД, кеш) не повинні бути доступні з інтернету
  4. Сильні паролі обов’язкові навіть для внутрішніх сервісів
  5. Регулярний аудит безпеки має бути частиною DevOps процесів

Своєчасне виявлення та виправлення цих проблем запобігає серйозним інцидентам безпеки та втраті даних.

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

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

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