TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Максим Максимов // IT, AI

4 Mar, 21:22

Открыть в Telegram Поделиться Пожаловаться

Как небольшие правки в Docker уменьшат количество ваших проблем

Недавно занимался развертыванием одного проекта на сервере. Столкнулся с проблемой, что проект начал периодически отваливаться. Сначала по логам я не понимал, в чем проблема (пример логов скинул на скриншоте).

Начал искать проблему в подключении к базе данных: в коде, в .env, в Docker. Но проблема оставалась.

Через некоторое время я вспомнил рассказ своего коллеги про похожий случай, в котором его проект тоже в какой-то момент упал из-за брутфорс-атаки. Далее он рассказал про злоумышленников, которые сканируют IP в сети и ищут открытые порты на сервере. После используя brute-force, пытаются подобрать креды для получения доступа к сервису.

Сделав предположение, что проблема в этом, я заглянул в свой docker-compose и увидел следующее:
...
postgres:
image: postgres:15
container_name: product_cards_postgres
ports:
- "5432:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres123
POSTGRES_DB: product_cards
volumes:
- postgres_data:/var/lib/postgresql/data
...

Здесь мы видим сразу несколько ошибок, которые я допустил:
1. Секция ports: "5432:5432".
Приложение было открыто для подключений с любого устройства в интернете. Поэтому тот самый подбор в целом мог сделать любой бот-сканнер.

2. Секция environment: POSTGRES_USER, POSTGRES_PASSWORD.
Здесь я думаю даже комментировать не нужно. Сразу после локального тестирования пытаться такое заливать на сервер - большая ошибка. Тот самый подбор тут срабатывал отлично. Стоило произвести всего лишь базовый перебор наиболее популярных паролей.

После этого я исправил эти грубые ошибки безопасности.
Для этого я закрыл доступ извне, убрав секцию ports (сервисы, которые запущены в одном compose вместе с этой БД - находятся в одной сети).
Еще это можно сделать, разрешив подключения к базе только внутри самого сервера:
...
ports:
- "127.0.0.1:5432:5432"
...

Также я поменял логин и пароль на более сложные.

И естественно после этого ошибки с
FATAL: password authentication failed for user "postgres" перестали появляться =)

Из этого случая вынес урок: после локальной разработки, при развертывании, не стоит оставлять "двери" (порты) открытыми, а пароль и логин - простыми. Возможно, эти вещи кажутся банальными, но зато я сам убедился, к чему приводит их игнорирование.

Максим Максимов // IT, AI

549 0 7 3 13
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot