Начало работы
Введение
Что такое Maran, из каких трёх процессов состоит сервер и что корневой демон делать не станет — включая то, почему он не принимает shell-команд.
Maran — панель управления веб-хостингом для серверов Linux. Установите её на сервер и управляйте сайтами, версиями PHP, SSL-сертификатами, базами данных, файлами, резервными копиями и брандмауэром из браузера, с отдельным кабинетом для каждого клиента хостинга и API, которым биллинговая система создаёт аккаунты сама.
Три процесса, и root есть только у одного
На сервере с Maran работают ровно три процесса, и разделение между ними — главное решение продукта:
maran-api— сама панель. В ней вся бизнес-логика, и только она обращается к базе данных. Работает от непривилегированного системного пользователя.maran-agent— единственный процесс с root. Он не хранит состояние, у него нет базы и своих конфигурационных файлов, и только он трогает веб-сервер, php-fpm, сервер баз данных, SSH и передачу файлов, планировщик, брандмауэр и сертификаты.- PostgreSQL — доступен только из
maran-api, через unix-сокет, вообще без TCP-порта.
Панель просит у агента именованные операции через unix-сокет, с типизированными и проверенными аргументами. Нет операции, которая запускает переданную вызывающей стороной программу, и между ними нигде нет shell-строки: множество того, что можно заставить сделать корневой процесс, конечно, записано и поддаётся ревью.
Что такое аккаунт хостинга
Настоящий пользователь Linux со своим домашним каталогом и правами файловой системы. Его PHP работает в собственном пуле под собственным uid, и файловые операции идут от этого же uid — никогда от root. Каждая таблица, принадлежащая арендатору, ограничена аккаунтом на уровне базы, а запрос чужого ресурса отвечает 404, а не 403 — ошибка никогда не подтверждает, что строка существует.
Ни брокеров, ни сайдкаров
Фоновая работа идёт по надёжным очередям, хранящимся в PostgreSQL. Установка Maran не добавляет на сервер ни брокера сообщений, ни сайдкар, ни второй демон.