безопасное использование php exec shell_exec и т.п.

Qwest-fx

Профессор
Регистрация
3 Апр 2007
Сообщения
134
Реакции
41
Доброго времени суток, интересует информация как реализовывать безопасное использование например ImageMagick, или других внешних программ, которые нужно выполнять через shell.
И в случае если хост будет взломан, не допустить выполнение команд непосредственно на сервере.

В большинстве мануалов, описано только использование /usr/bin/false (у меня так)
nginx+apache+mod_php
Но мне нужно ограниченное использование оболочки.
Большая просьба оперировать примерами, а не только ссылками на man.
В моём случае нужно вызывать unoconv
Что посоветуете? Какие реализации используете Вы на своих серверах?
 
apache2-mpm-itk и /usr/bin/false. Можешь спокойно использовать shell_exec. Дальше своей директории тебя никто не пустит и страшного ничего не сделают.
 
задай разрешение апачу на запуск нужного софта (желательно с конкретными параметрами, во избежание злоупотребления в случае взлома)
/etc/sudoers
apache user_name =NOPASSWD: /usr/bin/convert

это то что ты хотел?
 
задай разрешение апачу на запуск нужного софта (желательно с конкретными параметрами, во избежание злоупотребления в случае взлома)
/etc/sudoers
apache user_name =NOPASSWD: /usr/bin/convert

это то что ты хотел?
Зачем? А если у него несколько пользователей на сервере? Тогда каждый сможет использовать это.
 
в /etc/sudoers.d/ добавь
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

# Host alias specification

# User alias specification

# Cmnd alias specification
Cmnd_Alias APACHECMNDS = /sbin/route, /sbin/iptables, /bin/bash
# User privilege specification

Defaults!APACHECMNDS exempt_group=secureservice
Ну и в Cmnd_Alias пиши чего нужно из прав, а юзеру, из под которого стартует сервис добавляй группу secureservice
А вобще не морочься этой фигнёй и поставь OSSEC, как хостовую IPS, Suricata, как сетевую IPS и к ним концентратор, он-же SIEM Prelude. Итог: все атаки на сетевом уровне отбивает Suricata, все хостовые атаки отбивает OSSEC, события группируются по IP в Prelude и если хочешь - можешь коррелировать их. И конкретно можешь прописать любое своё правило, например слать алерт и дропать того, кто shell использует.
Есть ещё более сложный вариант, если речь идёт о веб сервере - установить WAF, например mod_security, под nginx он тоже собран, незнаю как сейчас, но год назад не очень стабильным был. Под nginx есть ещё NAXSI как WAF. Правила можешь взять из открытых источников OWASP Comunity.
Ну и настроить мандатный доступ грамотно.
Если будешь играться с настройками сервера в плане безопасности, тестируй потом сервер яндекс.танком, иначе бывают проблемы потом, появляются неожиданные узкие места или какие-нибудь мерзкие сегфолты.
 
Назад
Сверху