На одном сервере ubuntu размещены 3 приложения, все в разных доменах.
У каждого приложения есть свои разработчики.
Разработчики приложений входят в группу linux "sftp".
chroot
разрешает доступ по паролю sftp для каждого разработчика приложения.
/home/app1/prod
/home/app2/prod
/home/app3/prod
В sshd_config
Match Group sftp
PasswordAuthentication yes
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Нас беспокоит программная уязвимость в одном приложении, вызывающая проблемы в двух других приложениях.
Должны ли мы использовать контейнер lxc вместо chroot? Зачем? Будет ли переход на контейнеры lxc прозрачным для разработчиков приложений?
Контейнеры Linux (LXC) - это метод виртуализации на уровне операционной системы для запуска нескольких изолированных серверных установок (контейнеров) на одном управляющем хосте. LXC не предоставляет виртуальную машину, а предоставляет виртуальную среду, которая имеет свой собственный процесс и сетевое пространство. Он похож на chroot, но предлагает гораздо больше изоляции.
Контейнеры Linux имеют несколько особенностей / преимуществ:
Преимущества:
Лучшая изоляция по сравнению с chroot (chroot jail). Низкие накладные расходы. LXC использует минимальные ресурсы с точки зрения ОЗУ и места на жестком диске без накладных расходов на установку гостевой ОС на виртуальной машине (VMWare / VirtualBox / KVM).
Приложения и службы (серверы) работают на собственной скорости.
В libvirt есть поддержка контейнеров Linux.
Контейнеры Linux хорошо работают с btrfs.
Но есть и обратная сторона:
Контейнеры Linux запускают процессы Linux в ядре Linux. Это означает, что вы можете запускать Linux (контейнер Fedora на хосте Ubuntu), но не другие операционные системы (не BSD / OSX / Windows).
Для настройки контейнеров и управления ими нет графических интерфейсов.
Документации по установке и настройке контейнера очень мало. Настройка контейнера требует скромных технических знаний и навыков (и большого терпения).