Для обеспечения безопасности и удобства администрирования я хочу установить LXD на моем облачном сервере либо на базе XEN, либо KVM. Как установить LXD на сервер Ubuntu Linux на базе технологии виртуализации KVM?
Вы можете реализовать контейнер Linux (LXD / LXC) для разделения вашего облачного сервера. Оба облачных сервера, его файлы и ресурсы получают доступ только к таким сервисам, как Apache, Nginx, MySQL, Proxy, Memcached и т. Д. Canonical LXD – это гипервизор с чистым контейнером, который запускает немодифицированные операционные системы и приложения Linux с операциями в стиле VM с невероятной скоростью и интенсивностью. В этом кратком руководстве вы узнаете, как установить последнюю стабильную версию контейнера LXD под облачным сервером KVM, размещенную в Linode для механизма безопасности на сервере LTS Ubuntu Linux 16.04.xx.
Шаг 1 – Настройте PPA
Для установки самой последней версии, вам необходимо использовать PPA следующим образом. Введите команду apt или apt-get так, как указано ниже для того, чтобы установить software-properties-common:
Примеры возможных выводов данных:
Обновите вашу систему:
Примеры возможных выводов данных:
Шаг 2 – Установка lxd
Введите следующие команды: apt команда или apt-get команда:
ИЛИ
Примеры возможных выводов данных:
Шаг 3 – Добавление пользовательского аккаунта для lxd
Введите следующую команду для того, чтобы добавить пользователя с именем vivek, для этого запустите:
Убедитесь, что vivek является частью вторичной группы под названием lxd группа, для этого введите:
Для проверки, запустите команду id command следующим образом:
Примеры возможных выводов данных:
Шаг 4 – Настройте lxd
Чтобы пройти начальную конфигурацию LXD, запустите:
Примеры возможных выводов данных:
Шаг 5 – Создание и использование вашего первого контейнера
Сначала войдите как пользователь vivek:
ИЛИ
Убедитесь, что клиент lxc взаимодействует LXD демоном:
Примеры возможных выводов данных:
Для создания вашего первого контейнера необходимо использовать следующий синтаксис:
Чтобы просмотреть все доступные образы для различных дистрибутивов Linux, выполните:
Для создания контейнера CentOS Linux v7.x:
Примеры возможных выводов данных:
Для создания контейнера Ubuntu Linux 16.4 LTS:
Примеры возможных выводов данных:
Анимированный рисунок 01: Lxc, создающий вашу виртуальную машину (VM)
Step 6 – Заходим в ваш первый контейнер
Введите следующую команду:
Теперь вы можете обновить свой контейнер или установить необходимое программное обеспечение.
Шаг 6 – Заблокировать пользователя root
Вам не нужен пользователь root или пользователь по умолчанию, такой как ubuntu / centos, созданный в вашем контейнере:
Заблокируйте доступ к учетной записи root, для этого запустите:
Удалите нежелательные пользовательские аккаунты с помощью команды userdel, для этого запустите:
Шаг 7 – Основные команды управления контейнерами Linux
Давайте посмотрим важные команды для управления вашими контейнерами.
Запустите контейнер
Остановить работу контейнера
Перезапуск контейнера
Удаление контейнера
Получить информацию о работающем в данный момент контейнере
Запустить указанную команду в контейнере
Создание моментального снимка контейнера только для чтения
Восстановить состояние контейнера до предыдущего моментального снимка
Я рекомендую вам позволить встроенному DHCP назначить статический IP для LXD контейнера/VM основанного на имени или MAC адресе для упрощения управления, включая взаимодействие, друг с другом. Я предлагаю вам установить стек LAMP следующим образом:
После запуска LXC VM. Войдите в каждый контейнер и настройте службы, то есть установите Apache и PHP на виртуальную машину apache-php1. Используйте Nginx (или любой другой прокси-сервер) или iptables на вашем облачном сервере для перенаправления трафика на порт 80/443 с вашего общего IP-адреса на контейнерную службу.
И вот у вас все получилось. Контейнер LXD/VM запускается для каждой службы, такой как веб-сервер, MySQL, Memcached, Proxy и т. д. Все ваши службы работают на отдельном экземпляре LXD vm. Естественно, это ограничивает количество других сервисов, которые могут быть взломаны, если злоумышленник может успешно использовать программную ошибку в одной сетевой службе.
Вы можете реализовать контейнер Linux (LXD / LXC) для разделения вашего облачного сервера. Оба облачных сервера, его файлы и ресурсы получают доступ только к таким сервисам, как Apache, Nginx, MySQL, Proxy, Memcached и т. Д. Canonical LXD – это гипервизор с чистым контейнером, который запускает немодифицированные операционные системы и приложения Linux с операциями в стиле VM с невероятной скоростью и интенсивностью. В этом кратком руководстве вы узнаете, как установить последнюю стабильную версию контейнера LXD под облачным сервером KVM, размещенную в Linode для механизма безопасности на сервере LTS Ubuntu Linux 16.04.xx.
Шаг 1 – Настройте PPA
Для установки самой последней версии, вам необходимо использовать PPA следующим образом. Введите команду apt или apt-get так, как указано ниже для того, чтобы установить software-properties-common:
Код:
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable
Код:
This PPA contains the latest stable release of LXD as well as the latest stable version of any of its dependencies.
More info: https://launchpad.net/~ubuntu-lxc/+archive/ubuntu/lxd-stable
Press [ENTER] to continue or ctrl-c to cancel adding it
gpg: keyring `/tmp/tmpgjzialhs/secring.gpg' created
gpg: keyring `/tmp/tmpgjzialhs/pubring.gpg' created
gpg: requesting key 7635B973 from hkp server keyserver.ubuntu.com
gpg: /tmp/tmpgjzialhs/trustdb.gpg: trustdb created
gpg: key 7635B973: public key "Launchpad PPA for Ubuntu LXC team" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
OK
Код:
$ sudo apt-get update
$ sudo apt-get dist-upgrade
Код:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
libseccomp2
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 36.9 kB of archives.
After this operation, 28.7 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://ppa.launchpad.net/ubuntu-lxc/lxd-stable/ubuntu xenial/main amd64 libseccomp2 amd64 2.3.1-2ubuntu2~ubuntu16.04.1~ppa1 [36.9 kB]
Fetched 36.9 kB in 0s (79.1 kB/s)
(Reading database ... 29837 files and directories currently installed.)
Preparing to unpack .../libseccomp2_2.3.1-2ubuntu2~ubuntu16.04.1~ppa1_amd64.deb ...
Unpacking libseccomp2:amd64 (2.3.1-2ubuntu2~ubuntu16.04.1~ppa1) over (2.2.3-3ubuntu3) ...
Processing triggers for libc-bin (2.23-0ubuntu5) ...
Setting up libseccomp2:amd64 (2.3.1-2ubuntu2~ubuntu16.04.1~ppa1) ...
Processing triggers for libc-bin (2.23-0ubuntu5) ...
Введите следующие команды: apt команда или apt-get команда:
Код:
$ sudo apt-get install lxd
Код:
$ sudo apt install lxd
Код:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
acl dns-root-data dnsmasq-base ebtables liblxc1 liblzo2-2 libnetfilter-conntrack3 lxc-common lxcfs lxd-client squashfs-tools uidmap
Suggested packages:
criu lxd-tools
The following NEW packages will be installed:
acl dns-root-data dnsmasq-base ebtables liblxc1 liblzo2-2 libnetfilter-conntrack3 lxc-common lxcfs lxd lxd-client squashfs-tools uidmap
0 upgraded, 13 newly installed, 0 to remove and 0 not upgraded.
Need to get 5,708 kB of archives.
After this operation, 24.2 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://mirrors.linode.com/ubuntu xenial/main amd64 liblzo2-2 amd64 2.08-1.2 [48.7 kB]
Get:2 http://mirrors.linode.com/ubuntu xenial/main amd64 acl amd64 2.2.52-3 [38.0 kB]
Get:3 http://mirrors.linode.com/ubuntu xenial/main amd64 dns-root-data all 2015052300+h+1 [15.0 kB]
Get:4 http://mirrors.linode.com/ubuntu xenial/main amd64 libnetfilter-conntrack3 amd64 1.0.5-1 [36.6 kB]
Get:5 http://mirrors.linode.com/ubuntu xenial-updates/main amd64 dnsmasq-base amd64 2.75-1ubuntu0.16.04.1 [294 kB]
Get:6 http://mirrors.linode.com/ubuntu xenial/main amd64 ebtables amd64 2.0.10.4-3.4ubuntu1 [79.6 kB]
Get:7 http://mirrors.linode.com/ubuntu xenial/main amd64 squashfs-tools amd64 1:4.3-3ubuntu2 [105 kB]
Get:8 http://mirrors.linode.com/ubuntu xenial/main amd64 uidmap amd64 1:4.2-3.1ubuntu5 [65.9 kB]
Get:9 http://ppa.launchpad.net/ubuntu-lxc/lxd-stable/ubuntu xenial/main amd64 lxc-common amd64 2.0.6-0ubuntu5~ubuntu16.04.1~ppa1 [77.2 kB]
Get:10 http://ppa.launchpad.net/ubuntu-lxc/lxd-stable/ubuntu xenial/main amd64 liblxc1 amd64 2.0.6-0ubuntu5~ubuntu16.04.1~ppa1 [252 kB]
Get:11 http://ppa.launchpad.net/ubuntu-lxc/lxd-stable/ubuntu xenial/main amd64 lxcfs amd64 2.0.5-0ubuntu2~ubuntu16.04.1~ppa1 [42.8 kB]
Get:12 http://ppa.launchpad.net/ubuntu-lxc/lxd-stable/ubuntu xenial/main amd64 lxd-client amd64 2.7-0ubuntu2~ubuntu16.04.1~ppa1 [1,923 kB]
Get:13 http://ppa.launchpad.net/ubuntu-lxc/lxd-stable/ubuntu xenial/main amd64 lxd amd64 2.7-0ubuntu2~ubuntu16.04.1~ppa1 [2,730 kB]
Fetched 5,708 kB in 3s (1,448 kB/s)
Selecting previously unselected package liblzo2-2:amd64.
(Reading database ... 29837 files and directories currently installed.)
Preparing to unpack .../liblzo2-2_2.08-1.2_amd64.deb ...
Unpacking liblzo2-2:amd64 (2.08-1.2) ...
Selecting previously unselected package acl.
Preparing to unpack .../acl_2.2.52-3_amd64.deb ...
Unpacking acl (2.2.52-3) ...
Selecting previously unselected package dns-root-data.
Preparing to unpack .../dns-root-data_2015052300+h+1_all.deb ...
Unpacking dns-root-data (2015052300+h+1) ...
Selecting previously unselected package libnetfilter-conntrack3:amd64.
Preparing to unpack .../libnetfilter-conntrack3_1.0.5-1_amd64.deb ...
Unpacking libnetfilter-conntrack3:amd64 (1.0.5-1) ...
Selecting previously unselected package dnsmasq-base.
Preparing to unpack .../dnsmasq-base_2.75-1ubuntu0.16.04.1_amd64.deb ...
Unpacking dnsmasq-base (2.75-1ubuntu0.16.04.1) ...
Selecting previously unselected package ebtables.
Preparing to unpack .../ebtables_2.0.10.4-3.4ubuntu1_amd64.deb ...
Unpacking ebtables (2.0.10.4-3.4ubuntu1) ...
Selecting previously unselected package lxc-common.
Preparing to unpack .../lxc-common_2.0.6-0ubuntu5~ubuntu16.04.1~ppa1_amd64.deb ...
Unpacking lxc-common (2.0.6-0ubuntu5~ubuntu16.04.1~ppa1) ...
Selecting previously unselected package liblxc1.
Preparing to unpack .../liblxc1_2.0.6-0ubuntu5~ubuntu16.04.1~ppa1_amd64.deb ...
Unpacking liblxc1 (2.0.6-0ubuntu5~ubuntu16.04.1~ppa1) ...
Selecting previously unselected package lxcfs.
Preparing to unpack .../lxcfs_2.0.5-0ubuntu2~ubuntu16.04.1~ppa1_amd64.deb ...
Unpacking lxcfs (2.0.5-0ubuntu2~ubuntu16.04.1~ppa1) ...
Selecting previously unselected package lxd-client.
Preparing to unpack .../lxd-client_2.7-0ubuntu2~ubuntu16.04.1~ppa1_amd64.deb ...
Unpacking lxd-client (2.7-0ubuntu2~ubuntu16.04.1~ppa1) ...
Selecting previously unselected package squashfs-tools.
Preparing to unpack .../squashfs-tools_1%3a4.3-3ubuntu2_amd64.deb ...
Unpacking squashfs-tools (1:4.3-3ubuntu2) ...
Selecting previously unselected package uidmap.
Preparing to unpack .../uidmap_1%3a4.2-3.1ubuntu5_amd64.deb ...
Unpacking uidmap (1:4.2-3.1ubuntu5) ...
Selecting previously unselected package lxd.
Preparing to unpack .../lxd_2.7-0ubuntu2~ubuntu16.04.1~ppa1_amd64.deb ...
Adding system user `lxd' (UID 111) ...
Adding new user `lxd' (UID 111) with group `nogroup' ...
Creating home directory `/var/lib/lxd/' ...
Adding group `lxd' (GID 118) ...
Done.
Unpacking lxd (2.7-0ubuntu2~ubuntu16.04.1~ppa1) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for libc-bin (2.23-0ubuntu5) ...
Processing triggers for dbus (1.10.6-1ubuntu3.3) ...
Processing triggers for systemd (229-4ubuntu16) ...
Processing triggers for ureadahead (0.100.0-19) ...
Setting up liblzo2-2:amd64 (2.08-1.2) ...
Setting up acl (2.2.52-3) ...
Setting up dns-root-data (2015052300+h+1) ...
Setting up libnetfilter-conntrack3:amd64 (1.0.5-1) ...
Setting up dnsmasq-base (2.75-1ubuntu0.16.04.1) ...
Setting up ebtables (2.0.10.4-3.4ubuntu1) ...
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
Setting up lxcfs (2.0.5-0ubuntu2~ubuntu16.04.1~ppa1) ...
Setting up lxd-client (2.7-0ubuntu2~ubuntu16.04.1~ppa1) ...
Setting up squashfs-tools (1:4.3-3ubuntu2) ...
Setting up uidmap (1:4.2-3.1ubuntu5) ...
Setting up liblxc1 (2.0.6-0ubuntu5~ubuntu16.04.1~ppa1) ...
Setting up lxd (2.7-0ubuntu2~ubuntu16.04.1~ppa1) ...
Setting up lxd dnsmasq configuration.
To go through the initial LXD configuration, run: lxd init
Setting up lxc-common (2.0.6-0ubuntu5~ubuntu16.04.1~ppa1) ...
Processing triggers for libc-bin (2.23-0ubuntu5) ...
Processing triggers for dbus (1.10.6-1ubuntu3.3) ...
Processing triggers for systemd (229-4ubuntu16) ...
Processing triggers for ureadahead (0.100.0-19) ...
Введите следующую команду для того, чтобы добавить пользователя с именем vivek, для этого запустите:
Код:
$ sudo adduser vivek
Код:
$ sudo usermod -a -G lxd vivek
Код:
$ id vivek
Код:
uid=1002(vivek) gid=1002(vivek) groups=1002(vivek),118(lxd)
Чтобы пройти начальную конфигурацию LXD, запустите:
Код:
$ sudo lxd init
Шаг 5 – Создание и использование вашего первого контейнера
Сначала войдите как пользователь vivek:
Код:
$ ssh vivek@server1.cyberciti.biz
Код:
$ su – vivek
Код:
$ lxc list
Код:
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+
Код:
lxc launch images:{distro}/{version}/{arch}{container-name-here}
Код:
$ lxc image list images
Код:
$ lxc launch images:centos/7/amd64 my-cenots
Код:
Creating my-cenots
Retrieving image: 100% (16.80MB/s)
Starting my-cenots
Код:
$ lxc launch images:ubuntu/xenial/amd64 my-ubuntu
Анимированный рисунок 01: Lxc, создающий вашу виртуальную машину (VM)
Step 6 – Заходим в ваш первый контейнер
Введите следующую команду:
Код:
$ lxc exec my-centos bash
$ lxc exec my-ubuntu bash
Шаг 6 – Заблокировать пользователя root
Вам не нужен пользователь root или пользователь по умолчанию, такой как ubuntu / centos, созданный в вашем контейнере:
Код:
$ lxc exec my-ubuntu bash
Код:
# passwd -l root
Код:
# userdel -r ubuntu
Давайте посмотрим важные команды для управления вашими контейнерами.
Запустите контейнер
Код:
$ lxc start containerName
Код:
$ lxc stop containerName
Код:
$ lxc restart containerName
Код:
$ lxc delete containerName
Код:
$ lxc info containerName
Код:
$ lxc exec containerName command1
$ lxc exec containerName command1 opt1
$ lxc exec containerName date
$ lxc exec containerName — command1 -arg1 -arg2
$ lxc exec my-cenots — yum update -y
Код:
$ lxc snapshot containerName snapShotName
$ lxc snapshot my-cenots snap0
$ lxc info my-cenots
Код:
$ lxc restore containerName snapShotName
$ lxc restore my-cenots snap0
$ lxc info my-cenots
$ lxc exec my-cenots bash
Код:
$ lxc launch images:ubuntu/xenial/amd64 db1
$ lxc launch images:ubuntu/xenial/amd64 nginx1
$ lxc launch images:ubuntu/xenial/amd64 apache-php1
$ lxc launch images:ubuntu/xenial/amd64 memcached
После запуска LXC VM. Войдите в каждый контейнер и настройте службы, то есть установите Apache и PHP на виртуальную машину apache-php1. Используйте Nginx (или любой другой прокси-сервер) или iptables на вашем облачном сервере для перенаправления трафика на порт 80/443 с вашего общего IP-адреса на контейнерную службу.
И вот у вас все получилось. Контейнер LXD/VM запускается для каждой службы, такой как веб-сервер, MySQL, Memcached, Proxy и т. д. Все ваши службы работают на отдельном экземпляре LXD vm. Естественно, это ограничивает количество других сервисов, которые могут быть взломаны, если злоумышленник может успешно использовать программную ошибку в одной сетевой службе.
Ссылка скрыта от гостей