В предыдущей главе мы запустили VSCode Server на удаленном экземпляре.
Это победа. Однако в текущем виде ваша установка уязвима или, по крайней мере, не оптимально защищена. Трафик передается в открытом виде (HTTP), и порт 8080 доступен любому, кто сканирует наш IP-адрес.
Чтобы превратить этот прототип в повседневный рабочий инструмент, нам нужно настроить обратный прокси.
Его роль проста: перехватывать защищенные соединения (HTTPS) на стандартном порту 443 и перенаправлять их локально на наш сервис.
1. Предварительные требования: защита сетевой части
Прежде всего, нам нужно указать code-server больше не прослушивать соединения извне, а только те, которые поступают от самой машины (прокси).
Измените ваш файл конфигурации: nano ~/.config/code-server/config.yaml
Измените строку «bind-addr» следующим образом:
bind-addr: 127.0.0.1:8080
Затем перезапустите сервис.
ubuntu@vscode-server:~$ sudo systemctl restart code-server@$USER |
Это гарантирует, что vscode-server будет действительно «слушать» только локально и не сможет быть напрямую доступен извне.
2. Реализация обратного прокси
Здесь у вас есть два варианта:
- NGINX, который был стандартным выбором в течение многих лет
- Caddy, который имеет более простой (но всеобъемлющий) и новый подход.
Для этой статьи мы выбрали Caddy для примера и чтобы познакомиться с ним, если вы еще не знакомы!
Caddy изначально управляет обновлением SSL-сертификатов — это можно сделать через OVHcloud!
Установка (Debian/Ubuntu)
Более полную документацию для других систем или методов установки вы найдете в официальной документации: https://caddyserver.com/docs/install.
ubuntu@vscode-server:~$ sudo apt install -y debian-keyring debian-archive-keyring apt-transport-httpsubuntu@vscode-server:~$ curl -1sLf ‘https://dl.cloudsmith.io/public/caddy/stable/gpg.key’| sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpgubuntu@vscode-server:~$ curl -1sLf ‘https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt’| sudo tee /etc/apt/sources.list.d/caddy-stable.listubuntu@vscode-server:~$ sudo apt update && sudo apt install caddy -y |
Конфигурация: измените файл /etc/caddy/Caddyfile (очистите его и замените следующим):
Замените «dev.your-domain.uk» на ваше собственное доменное имя, с выбранным вами поддоменом, указывающим на IP экземпляра.
- Простая конфигурация только на HTTP порту (80)
| dev.your-domain.uk { reverse_proxy 127.0.0.1:8080 } |
- Рекомендуемая конфигурация на HTTPS порту (443) с использованием домена, размещенного в OVHcloud.
Для создания токенов API OVHcloud вы можете обратиться к этой странице: https://eu.api.ovh.com/createToken/.
dev.your-domain.uk {tls { dns ovh { endpoint “ovh-eu” application_key {$OVH_APPLICATION_KEY} application_secret {$OVH_APPLICATION_SECRET} consumer_key {$OVH_CONSUMER_KEY} } } reverse_proxy 127.0.0.1:8080} |
Для получения дополнительных сведений об управлении SSL-сертификатами обратитесь к официальной документации Caddy.
Применение:
ubuntu@vscode-server:~$ sudo systemctl reload caddy |
Если вы выбрали рекомендованную конфигурацию в HTTPS, ваша среда теперь защищена надежным SSL-шифрованием.
Вы больше не рискуете, что ваш пароль перехватят в общедоступном Wi-Fi, что является значительным шагом к нашей цели.
3. Сеть и брандмауэр
Теперь, когда точка доступа уникальна через HTTPS URL, настроенный выше, остальные порты, кроме SSH, можно закрыть.
Теперь реализуйте базовые правила в брандмауэре. В Ubuntu стандартным инструментом является UFW (Uncomplicated Firewall).
Начните с открытия портов, связанных с функциональными сервисами.
ubuntu@vscode-server:~$ sudo ufw allow ssh |
Активируйте брандмауэр:
ubuntu@vscode-server:~$ sudo ufw enable |
Проверьте реализацию правил.
ubuntu@vscode-server:~$ sudo ufw statusTo Action From |
Вы также можете добавить более строгие правила, чтобы явно отклонять все несанкционированное во входящем трафике, разрешая исходящий трафик.
ubuntu@vscode-server:~$ sudo ufw default deny incoming |
Отныне, если кто-то попытается получить доступ к IP на порту 8080, соединение будет однозначно отклонено.
Только доменное имя в HTTPS является легитимной точкой входа.
Этот удобный небольшой сервер разработки теперь скорее похож на крепость.
Но что произойдет, если вы решите удалить этот экземпляр, чтобы перейти на более мощный, и/или остановить его на неопределенный срок, пока ваш проект приостановлен?
Это вы узнаете в следующей части: как изолировать ваши данные и конфигурации на постоянном томе хранения, чтобы сделать вашу среду полностью взаимозаменяемой, а также как автоматизировать развертывание этой среды разработки!
Комментарии
Категории
Случайное

WordPress: 10 сниппетов кода для

150+ тем для разговора: как избежать

Аналитика для интернет-магазина: как

Почему ваш IP в черном списке?
