По умолчанию CapRover плохо приспособлен для работы только в домашней сети. Данная платформа использует стандартные порты и требует, чтобы они были открыты для доступа извне. Всё это создаёт множество возможностей для атак на сервер. Но есть несколько рекомендаций, которые в теории могут помочь усилить защиту CapRover и закрыть сразу несколько возможных векторов атак.
Совет №1: Принудительно включаем HTTPS
Инструмент, который используется не только в CapRover, но и много где ещё. HTTPS позволяет обезопасить передаваемые данные между клиентским компьютером и сервером от атак “между”. Даже если кто-то завладеет передаваемым трафиком, он будет зашифрован. Если во время установки CapRover вы использовали мой гайд, скорее всего HTTPS уже активирован. В остальных случаях рекомендуется принудительно активировать HTTPS через панель управления CapRover.
Совет №2: Прячем главный домен
Хорошей практикой для CapRover будет маскировка главного домена на 2 уровня глубже вашей dns записи. Допустим, вы указали следующую A-запись:
*.server.domain.ru
Во время первичной настройки CapRover в качестве главного домена укажите не server.domain.ru
, а случайное-слово.server.domain.ru
. Таким образом, вы сможете получить доступ к панели управления по адресу captain.случайное-слово.server.domain.ru
. Да, это трудно запомнить, но всегда можно добавить в закладки браузера.
Данный способ не является абсолютным щитом от атак, но это сделает жизнь брутфорсеров сложнее, так как в первую очередь они должны будут найти ваше доменное имя. Это же касается всех устанавливаемых приложений.
Совет №3: Задаём случайный пароль по умолчанию
Когда вы только установили CapRover, для входа в панель управления устаналивается стандартный пароль captain42
. Хотя следующим делом вы наверняка запустите первичную настройку и поменяете этот пароль, между самой установкой и процессом настройки может пройти до 30 секунд. Порой этого достаточно, чтобы атакующий мог получить доступ к панели управления до вас.
Скорее всего ничего подобного на практике не произойдёт, но лучше обезопасить себя и поменять стандартный пароль в скрипте установки. Делается это при помощи переменной DEFAULT_PASSWORD
:
docker run -e DEFAULT_PASSWORD='мой-безопасный-пароль' -p 80:80 -p 443:443 -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -v /captain:/captain caprover/caprover
Совет №4: Используем учетную запись служб для git
Одна из самых популярных возможностей CapRover – автоматическое развёртывание приложений и служб из Github, BitBucket, GitLab и пр.
По умолчанию для данного функционала пользователю необходимо вводить логин и пароль от этих сервисов. И, хотя они хранятся в CapRover в зашифрованном виде, лучшим вариантом будет использование учётной записи служб, которой вы предоставите доступ только к нужным репозиториям. Таким образом, если этот аккаунт будет скомпрометирован, вы всё ещё сможете войти под основным и удалить нежелательный доступ.
Итог. Для чего это нужно?
Сам по себе CapRover не отличается большой надёжностью, которой могут похвастаться те же Cloudron или YunoHost. Здесь нет двухфакторной аутентификации, правильно настроенного фаервола и других внутренних инструментов. И, несмотря на то, что озвученные рекомендации не могут служить полноценным гарантом безопасности (и далеко не так хороши, как у конкурентов) это не значит, что ими стоит пренебрегать.
А в качестве дополнения вы всегда можете косвенно усилить защиту CapRover через инструменты сервера, правильно настроив SSH или Fail2Ban.