~ / blog / series / obshchiy-server-bezopasnost

Общий сервер: безопасность и восстановление

Цикл о сервере, на котором живут проекты разных команд: открытые порты, раннеры CI, уход подрядчика, массовый взлом через ядро WordPress и уборка после него, перебор паролей, резервные копии с защитой от удаления и мониторинг — с цифрами из реальных разборов.

#Серверы 4 мин

Аудит портов: опубликованный порт Docker обходит firewall

Из сорока контейнеров порты наружу публиковали шесть, а нужен был один прокси. Векторная база без ключа, PostgreSQL с доступом отовсюду, приложения мимо прокси — и почему ufw не закрыл бы ни одного из этих портов.

· · ·
#Серверы 4 мин

«Базе нужна открытая сеть»: как дать доступ, ничего не открывая

ports в compose — это вход из интернета, а не связь контейнеров. SSH-туннель вместо открытого PostgreSQL, почему пароль не заменяет закрытый порт и почему «в базе нет ничего важного» — довод не о том.

· · ·
#Серверы 4 мин

Раннер CI под root: кто правит .gitlab-ci.yml, тот владеет сервером

Внешний верстальщик должен выкладывать вёрстку на тестовый поддомен. Отдельный проектный раннер без root и с одной папкой, CI-файл из чужого репозитория, путь литералом, сборка на другом сервере — и почему add_header в location снимает noindex.

· · ·
#Серверы 4 мин

Подрядчик ушёл: ключи, учётки и образы, на которых стоит весь сервер

Ключ бывшего подрядчика нашёлся в чужом authorized_keys, его учётку лучше заблокировать, чем удалить, а группа docker — это тот же root. И самое неочевидное: образы всех сайтов скачивались из его личного реестра — удалит или перезальёт, и последствия будут у вас.

· · ·

$ tail -f /blog

Не пропустите новые статьи

Пишу разборы по скорости сайтов, кэшу и разработке — на живых проектах и с цифрами. Подпишитесь, и ссылка на новую статью придёт сразу после выхода. Без рекламы и спама, отписаться — в один клик.

В Telegramодна кнопка «Старт» в боте

или на почту

связаться

Расскажите о задаче