Найти в Дзене

Виртуализация на VDS/VPS

Облегченная виртуализация с открытым исходным кодом с помощью LXC. LXD - это решение с открытым исходным кодом для управления виртуальными машинами и системными контейнерами. Оно обеспечивает безопасную и масштабируемую среду с минимальными затратами. С помощью удобного веб-интерфейса вы можете легко управлять рабочими нагрузками и настраивать их в соответствии с вашими потребностями. Сколько я собираю сервисов, столько же у меня всплывает вопрос - а как же безопасность? Ведь в каждом варианте, наружу торчит куча портов и панелей управления, а именно они и являются проводником к ядру сервера для хакеров. Вот и задумал использовать контейнеры и спрятать сервисы подалее с глаз. В общем концепция такая, нужные порты мы выпускаем наружу, а все интерфейсы для настройки, будут доступны только из локальной сети нашей "конторы". Для этих целей будем использовать LXC, LXD, Ztnet и Docker. В конечном итоге, мы сможем управлять не только локальной сетью предприятия а еще и выставлять наши сервисы
Оглавление

Облегченная виртуализация с открытым исходным кодом с помощью LXC.

LXD - это решение с открытым исходным кодом для управления виртуальными машинами и системными контейнерами. Оно обеспечивает безопасную и масштабируемую среду с минимальными затратами. С помощью удобного веб-интерфейса вы можете легко управлять рабочими нагрузками и настраивать их в соответствии с вашими потребностями.

Сколько я собираю сервисов, столько же у меня всплывает вопрос - а как же безопасность? Ведь в каждом варианте, наружу торчит куча портов и панелей управления, а именно они и являются проводником к ядру сервера для хакеров. Вот и задумал использовать контейнеры и спрятать сервисы подалее с глаз.

В общем концепция такая, нужные порты мы выпускаем наружу, а все интерфейсы для настройки, будут доступны только из локальной сети нашей "конторы". Для этих целей будем использовать LXC, LXD, Ztnet и Docker.

В конечном итоге, мы сможем управлять не только локальной сетью предприятия а еще и выставлять наши сервисы в интернет при необходимости. Бонусом - полная контейнеризация сервера что значительно облегчит администрирование и восстановление системы, и максимальная защита от взлома. Приступим.

Установка системы на VDS.

Ставить будем Ubuntu LTS, на данный момент это 24.04 версия. После установки обновим пакеты -

apt update
apt upgrade

Давайте сразу проверим какие порты у нас открыты. Я воспользуюсь сканером.

-2

Как видим, сканер говорит что у нас торчит наружу всего один порт - SSH. Его мы конечно оставим, но для безопасности стоит настроить вход по ключу. Как это сделать, спросим у ИИ -

Как настроить ssh доступ по ключу?

Для настройки доступа по ключу SSH выполните следующие шаги:
Создайте ключи SSH для аутентификации на локальном сервере с помощью утилиты ssh-keygen.
Загрузите ключ на удаленный сервер с помощью утилиты ssh-copy-id или вручную.
Отключите проверку пароля на сервере, открыв конфигурационный файл /etc/ssh/sshd_config и установив значение директивы PasswordAuthentication в No.
После выполнения этих шагов вы сможете входить на сервер без ввода пароля.

Только этот интеллект, умолчал о том что надо настроить клиента SSH. Но я думаю вы справитесь!

Следующим шагом, установим LXC (нативная виртуализация в Linux от Canonical) и LXD - демон для управления виртуализацией через API LXC, тоже от Canonical. Кстати если вы не знали -

Canonical — частная британская компания, основанная Марком Шаттлвортом для развития и популяризации проектов свободного программного обеспечения, прежде всего — Linux-дистрибутива Ubuntu.
Основана 5 марта 2004 года с целью разработки и коммерциализации Ubuntu. Также развивает и поддерживает производные от Ubuntu дистрибутивы: Kubuntu (использует KDE вместо Gnome), Xubuntu (использует менее требовательную к ресурсам среду рабочего стола Xfce) и Edubuntu (ориентирован на использование в образовательных учреждениях).

И опять от ИИ. Удобно блин!

Установка LXC и LXD

Я дольше писал этот абзац, насколько просто установить виртуализацию в Linux. Всего три команды -

snap install lxd Установка пакета
lxd init Инициализация (для VDS можно
оставить все по умолчанию.
Измените только -
[default=zfs]: btrfs и
[default=5GiB]: 10)
lxc config set core.https_address :8443 Разрешаем занять 8443 порт

На этом этапе, можно подключиться к интерфейсу по адресу - https://Ip:8443 и сгенерировать ключи доступа. При первом входе, увидим такую страницу -

-3

Нажмем зеленую кнопку и попадем на страницу генерации ключей доступа -

-4

В строке Импорт, выбираем тип вашего браузера и жмем зелененькую -

-5

Поступит предложение защитить ключ паролем. Можете ввести свой пароль и подтвердить -

-6

Теперь наши ключи сгенерированы, и осталось их скачать и установить в браузер. Как зарегистрировать ключи, написано в пункте импорт. Только не забудьте выбрать свой браузер.

-7

Для регистрации ключа и сертификата, нажмите Импорт, и выберите по очереди оба скачанных файла. Только не забудьте выбрать Автоматическое определение хранилища. Перезагружаем браузер и выбираем в окне наш сертификат. Вы сразу должны попасть в интерфейс администрирования. В ходе экспериментов, вылезла трабла, если через браузер прошел не один инстанс LXD, то появляется окно для подтверждения сертификата -

-8

Жмем ссылку Использовать существующий и переходим на страницу с описанием как это сделать -

-9

Нам при помощи команды представленной на странице -

lxc config trust add --name lxd-ui

требуется на сервере, сгенерировать ключ и ввести в форму на странице -

-10

Теперь копируем токен, и отправляем в форму -

-11

Жмем Импорт -

-12

И Ву Аля! Мы в интерфейсе, авторизованы по ключу.

Создаем контейнер LXC

Жмем кнопку Создать инстанс -

-13

Вводим имя контейнера и нажимаем кнопку выбора имиджа -

-14

Выбираем нужный имидж системы, я выбрал Ubuntu 24.04 LTS -

-15

Выбираем тип - Контейнер, и жмем Создать -

-16

Началось создание нашего контейнера -

-17

Контейнер создан и запущен, имеет IP -

-18

Заходим в свойства контейнера и открываем терминал -

-19

Для нормальной работы Docker, надо выполнить команду в терминале хоста -

lxc config set Servis security.nesting=true security.syscalls.intercept.mknod=true security.syscalls.intercept.setxattr=true

Теперь в терминале контейнера, можно установить Docker и Portainer.

Установка Docker

Здесь все просто, в терминале контейнера -

apt install curl
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Установка Portainer

Здесь еще проще, в терминале контейнера -

docker run -d -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.21.5

Теперь у нас на сервере стоят -

Виртуализация приложений - Docker
Виртуализация LXC (контейнеры) - LXD
Виртуализация KVM (Kernel-Based VM) - LXD

Собирать сервисы в стек, будем в следующей статье.

Всем удачи!