NoctisNode
← ГайдыSecurity2026-09-029 min

Защита self-hosted сервисов сверх безопасности сервера

Когда хост укреплён, атакуемая поверхность — приложение: минимальные привилегии, работа с секретами, доступность БД, бэкапы и настройки, важные для каждого сервиса.

Безопасность self-hosted сервиса — это не одна настройка, а набор привычек: не выставлять приложение в интернет напрямую, давать минимальные права, правильно обращаться с секретами и регулярно обновляться. Это руководство перечисляет конкретные меры, которые стоит внедрить на любом VPS с вашими сервисами.

Никогда не выставляйте приложение напрямую

Закрывайте всё, кроме обратного прокси. Сервисы слушают 127.0.0.1, а в интернет смотрит только Caddy или Nginx с TLS. Так вы получаете одну точку входа, а не пять открытых портов, каждый из которых — потенциальная дыра. Никогда не слушайте на 0.0.0.0 то, что не предназначено для публичного доступа.

Минимальные права для всего

  • ▹Каждый сервис — от отдельного системного пользователя, не от root.
  • ▹Контейнеры — с ограничением ресурсов и non-root пользователем внутри.
  • ▹Права на файлы и каталоги — по необходимости, а не chmod 777.
  • ▹Никаких прав root у приложений, которым они не нужны.

Секреты

Пароли, ключи и токены не должны лежать в репозитории или в файлах, доступных всем. Используйте переменные окружения с ограниченным доступом или менеджер секретов. Если секрет попал в публичный репозиторий — считайте его скомпрометированным и немедленно замените.

Note · Файл .env на сервере должен быть доступен только пользователю сервиса. Открытый .env с паролем базы данных — самая частая находка при аудите.

Базы данных никогда не должны быть в интернете

База данных слушает 127.0.0.1 и доступна только через обратный прокси или туннель. Никогда не открывайте порт PostgreSQL или MySQL наружу, даже если у вас сложный пароль: у базы данных не должно быть публичного интерфейса вообще.

Настройки сервисов, которые имеют значение

СервисЧто настроить
SSHТолько ключи, пароли выключить
Caddy / NginxTLS, заголовки безопасности, лимиты запросов
PostgreSQL / MySQLСлушать только localhost, минимум привилегий
Dockernon-root, drop capabilities, лимиты памяти
WordPress и подобныеУбрать публичные служебные файлы, обновлять плагины
Tor-релейКонсервативные лимиты

Бэкапы — это мера безопасности

Бэкап — ваша защита от шифровальщика, от ошибки обновления и от потери сервера. Храните копии вне машины, шифруйте и регулярно проверяйте, что с них можно восстановиться. Бэкап, который ни разу не восстановили, — это не бэкап.

Держите всё обновлённым

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

FAQ

QНужно ли ставить firewall?

AОбязательно, иначе всё слушающее видно интернету.

QКонтейнеры безопаснее обычных приложений?

AНе автоматически. Контейнер без non-root и ограничений — это те же риски.

QКак часто обновляться?

AАвтоматические обновления безопасности — каждый день, остальное — регулярно.

QЧто важнее всего?

AНе открывать лишних портов и регулярно обновляться. Это закрывает большинство рисков.

Защита self-hosted сервисов сверх безопасности сервера · NoctisNode