Лучшие практики веб-интерфейса Linux - PullRequest
0 голосов
/ 29 ноября 2008

Я хочу создать веб-интерфейс для управления / администрирования моей системы Linux. Например. Я хочу иметь возможность добавлять пользователей, управлять файловой системой и тому подобными вещами. Думайте об этом как клон cPanel, но скорее для системного администратора, а не для веб-администратора.

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

Полагаю, еще один важный вопрос: как мне поступить с безопасностью при создании чего-то подобного?

PS: Это как проект для домашних животных и опыт обучения, поэтому меня не интересуют существующие решения, которые делают подобное.

Ответы [ 2 ]

1 голос
/ 29 ноября 2008

Демон специализированной службы работает как отдельный пользователь - назовем его 'managerd'. Настройте файл / etc / sudoers так, чтобы 'managerd' мог выполнять различные команды, которые вы хотите, чтобы он мог запускать от имени пользователя root без пароля.

Пусть веб-сервер удаляет файлы «триггеров», содержащие команды для запуска, в каталоге, который находится в режиме «770», с группой, членами которой являются только пользователь веб-сервера и «managerd». Убедитесь, что 'managerd' проверяет, что файлы имеют правильное владение, перед выполнением команды.

Убедитесь, что сторона веб-интерфейса заблокирована - запустите ее только по протоколу HTTPS, потребуйте аутентификацию и, если это возможно, добавьте списки ACL для конкретного IP-адреса, чтобы вы могли получить к нему доступ только из известных мест.

1 голос
/ 29 ноября 2008

Ваше решение кажется очень разумным решением проблемы root.

Пара предложений:

  1. Привязка «специализированной службы» к localhost также поможет гарантировать, что запросы не могут быть сделаны извне.
  2. Проверка запроса вызова функций, которые выполняют действия, а не напрямую предоставляют сервису полный неограниченный доступ. Таким образом, вызывая функцию «addToGroup (пользователь, группа)» вместо универсального «executeAction (команда)».
...