Что является хорошей практикой для написания веб-приложений, управляющих демонами (и их конфигурационными файлами)

Может кто-нибудь предложить какой-то базовый совет по работе с веб-приложениями, которые взаимодействуют с файлами конфигурации, такими как 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

Другие вопросы по тегам