Изоляция сайтов в рамках витруального хостинга Beget
08 Apr 2017 | Автор: dd |Пару недель назад я распинался касаемо защищенного хостинга Beget, в котором реализовано решение, предотвращающее заражение сайтов в одном аккаунте. То есть в случае взлома или заражения вирусами одного из сайтов в аккаунте виртуального хостинга, зараза локализуется и не выходит за пределы директории зараженного сайта. Это довольно актуальная услуга, особенно учитывая тот факт, что у многих хостинг провайдеров отсутствует даже изоляция между разными пользователями виртуального хостинга, т.ч зловреды не только заражают сайты внутри аккаунта, но и устраивают эпидемию на ноде, заражая все вокруг.
Собственно обезопасить сайты хостящиеся в одном аккаунте друг от друга можно только запуском демона вебсервера от непривилегированного пользователя, запертого в изолированной песочнице. Про разделение пользователей сервера, я думаю, даже и говорить не стоит, ибо это прописная истина безопасности. Реализовать это на собственном сервере – не проблема, а вот чтобы оформить тоже самое в автоматизированном варианте на виртуальном шаред хостинге – это уже сильно посложнее.
Ну я об этом писал, как раз в предыдущем посте.
И вот днях, один из инженеров хостинг провайдера Beget, поведал на серче о самой технологии, как она реализована на серверах хостинга. Так что это краткое изложение технологии изоляции сайтов в аккаунте.
При создании аккаунта, создается пользователь, которому принадлежат все файлы папки аккаунта, за исключением самих директорий сайтов, т.к они принадлежат суперюзеру, для избежания случайного удаления папок.
При этом демоны окружения веб-сервера (все процессы от php до nginx и ftp) работают от отдельного пользователя, находящегося в непривилегированной группе. С помощью модуля mpm_itk в виртуальных хостах этот пользователь прописывается для сайта, т.ч все процессы порождаемые веб-сервером запускаются так же от него (указываются id пользователя и его группы):
<IfModule mpm_itk_module>
MaxClientsVHost 30
AssignUserId #66493 #666
</IfModule>
Этот пользователь также используется для логина по ssh – весьма удобного дополнения к виртуальному хостингу, которое, тем не менее, присутствует далеко не у всех; что является следствием не проработанной технологии изолирования, даже на уровне пользователя виртуального хостинга. Также этот пользователь имеет право на запись/чтение внутри директории сайта, но не имеет доступа вне папки песочницы – к директориям других сайтов и корневой директории аккаунта виртуального хостинга.
Также, со слов сотрудника Beget, следует что процессы Apache мало того, что запускаются под отдельными пользователями, но и в docker контейнерах, что дополнительно изолирует процессы от основной системы.
Данная система возможно присутствует у каких то еще хостингов, но насколько я читал – из топ10, полноценная изоляция сайтов в аккаунте существует только у Beget.
Менее подробно, но с картинками и листингом директорий можно посмотреть на форуме серч.
Изоляция сайтов в рамках витруального хостинга Beget,
Автор:Zeus на 12 Mar 2018
На Макхосте все сайты изолированы друг от друга и дополнительно изолированы на уровне ядра с помощью CloudLinux. Но это играет злую шутку, когда нужно использовать мультисайтовость в Битриксе или Вордпрессе, она просто не работает на изолированных сайтах.
[Reply]