Что является хорошей практикой для написания веб-приложений, управляющих демонами (и их конфигурационными файлами)
Может кто-нибудь предложить какой-то базовый совет по работе с веб-приложениями, которые взаимодействуют с файлами конфигурации, такими как httpd.conf, файлы зон привязки и т. Д.
Я понимаю, что это плохая практика, на самом деле очень опасно разрешать произвольное выполнение кода без полной его проверки и так далее. Но, скажем, вам поручено написать небольшое приложение, которое позволит вам добавить vhosts в конфигурацию apache.
Вы выполняете свой код с полными привилегиями, записываете ли вы будущие переменные в базу данных и выполняете ли задание cron (с полными привилегиями) сценарий, который извлекает переменные из базы данных и выбрасывает их в файл конфигурации шаблона и т. Д.
Некоторые мысли и вклады по этому вопросу будут оценены.
tl; dr - как вы можете безопасно написать веб-приложение для обновления / создания записей в файле конфигурации, таких как httpd.conf в Apache и т. д.
2 ответа
Я не гуру безопасности Unix, но думаю о некоторых основных вещах:
Убедитесь, что ваше веб-приложение работает от имени определенного пользователя, и убедитесь, что пользователь имеет привилегированные права только на те файлы, которые он должен изменять.
Не допускайте добавления произвольных входных данных в файлы, имейте строгие формы, где каждое поле проверяется на наличие только тех вещей, которые оно должно содержать, например, только az и 0-9 и т. Д.
Используйте HTTPS для доступа к сайту.
Я уверен, что от настоящих гуру есть что-то еще.
Я понимаю, что это плохая практика, на самом деле очень опасно разрешать произвольное выполнение кода без полной его проверки и так далее.
Правда.
Но, скажем, вам поручено написать небольшое приложение, которое позволит вам добавить vhosts в конфигурацию apache.
Не связано с первым пунктом. Совершенно не связаны. Действительно, почему первый пункт даже там?
Добавление vhosts - это простой скрипт. Вы просто пишете сценарий и заставляете его работать. Это требует чрезвычайных привилегий. Но это не "произвольное выполнение кода". И это будет "полностью подтверждено" (что бы это ни значило. Вы пишете это. Вы подтверждаете это.)
Это не хороший выбор для "веб-приложения". И это не хороший выбор для демона. Действительно, очень трудно увидеть связь между "добавлением vhosts в конфигурацию apache" и "веб-приложениями, управляющими демонами".
Это просто скрипт, который просто обновляет файл. Ничего особенного. Это требует привилегий, поэтому только несколько человек могут запустить его. Там тоже ничего особенного. использование sudo
,
Ваш код выполняется с полными привилегиями,
Очевидно. Скрипт не может обновить vhosts без каких-либо привилегий.
Если под "вашим кодом" вы не подразумеваете скрипт, который обновляет vhosts. Если вы имеете в виду что-то еще, например, веб-страницу, которая позволяет кому-то рутировать скрипт, который обновляет vhosts. В этом случае вы связали скрипт с веб-приложением, которое запускает скрипт.
записываете ли вы будущие переменные в базу данных и выполняете ли задание cron (с полными привилегиями) сценарий, который извлекает переменные из базы данных и выбрасывает их в файл конфигурации шаблона и т. д.
Конечно. Люди делают это. Это кажется ужасно сложным.
использование celery
вместо того, чтобы катить свой собственный фоновый процессор. http://ask.github.com/celery/getting-started/introduction.html