URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7418
[ Назад ]

Исходное сообщение
"Защита Apache"

Отправлено Dmitry , 05-Дек-11 10:54 
Подскажите пожалуйста как можно запретить выполнение произвольного кода из PHP скриптов вне корня сайта. Просто нам сейчас изготовили сайт, где часть служебной информации расположена на уровень ниже корня сайта (DocumentRoot). В связи с этим у меня возникло желание запретить любые обращения из PHP скриптов куда бы то ни было кроме корня сайта и одного уровня ниже, типа ../Sessions. Сервер расположен на
CentOs 6.0
Apache 2.2.15
PHP 5.3.2

Содержание

Сообщения в этом обсуждении
"Защита Apache"
Отправлено Pahanivo , 05-Дек-11 12:35 
> Подскажите пожалуйста как можно запретить выполнение произвольного кода из PHP скриптов
> вне корня сайта. Просто нам сейчас изготовили сайт, где часть служебной
> информации расположена на уровень ниже корня сайта (DocumentRoot). В связи с
> этим у меня возникло желание запретить любые обращения из PHP скриптов
> куда бы то ни было кроме корня сайта и одного уровня
> ниже, типа ../Sessions. Сервер расположен на
> CentOs 6.0
> Apache 2.2.15
> PHP 5.3.2

поиск, маны - не?


"Защита Apache"
Отправлено Dmitry , 05-Дек-11 14:05 
> поиск, маны - не?

Этим сейчас и занимаюсь. Пока безуспешно. Была идея вывести апач в чрут, но т.к. сайт завязан на пхп и мускул здесь тоже все не так просто.



"Защита Apache"
Отправлено Pahanivo , 05-Дек-11 14:35 
>> поиск, маны - не?
> Этим сейчас и занимаюсь. Пока безуспешно. Была идея вывести апач в чрут,
> но т.к. сайт завязан на пхп и мускул здесь тоже все
> не так просто.

очень редкая конфигурация апача

вопрос как ограничить доступные каталоги для php - задается регулярно, В ПОИСК! В ГУГЛ!


"Защита Apache"
Отправлено Dmitry , 05-Дек-11 15:45 
> вопрос как ограничить доступные каталоги для php - задается регулярно, В ПОИСК!
> В ГУГЛ!

Спасибо за обстоятельный ответ. Он мне очень помог. Все бы так отвечали. ГУГОЛ - и все ясно.



"Защита Apache"
Отправлено Pahanivo , 05-Дек-11 20:23 
>> вопрос как ограничить доступные каталоги для php - задается регулярно, В ПОИСК!
>> В ГУГЛ!
> Спасибо за обстоятельный ответ. Он мне очень помог. Все бы так отвечали.
> ГУГОЛ - и все ясно.

гугол+"php security" - первая ссылка


"Защита Apache"
Отправлено Dmitry , 06-Дек-11 10:24 
> гугол+"php security" - первая ссылка

Сенкс. Посмотрю.



"Защита Apache"
Отправлено Dmitry , 06-Дек-11 11:22 
>> гугол+"php security" - первая ссылка
> Сенкс. Посмотрю.

Зашел. Посмотрел. Не устроилою. Как выяснилось этот документ смотрел раньше. В нем рекомендации по ПХП программированию для обеспечения безопастности кода при реализации сайта. В моем же случае сайт написан сторонними людьми и проверять на безопастность тысячи строк кода - бесполезно. Проще написать новый сайт.

Т.ч. в моем случае надо рассматривать настройки апача и ОСи для ограничения доступа пхп скриптов. Т.ч. здесь я склоняюсь именно к чруту.


"Защита Apache"
Отправлено Pahanivo , 06-Дек-11 17:23 
>>> гугол+"php security" - первая ссылка
>> Сенкс. Посмотрю.
> Зашел. Посмотрел. Не устроилою. Как выяснилось этот документ смотрел раньше. В нем
> рекомендации по ПХП программированию для обеспечения безопастности кода при реализации
> сайта. В моем же случае сайт написан сторонними людьми и проверять
> на безопастность тысячи строк кода - бесполезно. Проще написать новый сайт.

товаришь, бздеть не надо.
надо просто научится читать

> Т.ч. в моем случае надо рассматривать настройки апача и ОСи для ограничения
> доступа пхп скриптов. Т.ч. здесь я склоняюсь именно к чруту.

там они также рассмотрены


"Защита Apache"
Отправлено ne4to , 05-Дек-11 18:22 
> Этим сейчас и занимаюсь. Пока безуспешно. Была идея вывести апач в чрут,
> но т.к. сайт завязан на пхп и мускул здесь тоже все
> не так просто.

у меня на неком хостинге работает апач+пхп в чруте.. ничего сложно .. ldd тебе расскажет что надо в чрут принести с собой.
мускул крутится без чрута.. создает сокет в каталоге с чрутом к которому и коннектится собтсвенно пхп


"Защита Apache"
Отправлено Dmitry , 06-Дек-11 10:25 
> ldd тебе расскажет что надо в чрут принести с собой.

Можно уточнить, что это за зверь такой - ldd ?



"Защита Apache"
Отправлено Pahanivo , 06-Дек-11 10:31 
>> ldd тебе расскажет что надо в чрут принести с собой.
> Можно уточнить, что это за зверь такой - ldd ?

дак спросил бы сразу и про чрут за одно - че тянуть то?


"Защита Apache"
Отправлено Dmitry , 06-Дек-11 11:29 
> дак спросил бы сразу и про чрут за одно - че тянуть
> то?

Так я и написал чуть выше:

>>>Была идея вывести апач в чрут, но т.к. сайт завязан на пхп и мускул здесь тоже все не так просто.


"Защита Apache"
Отправлено Pahanivo , 06-Дек-11 17:45 
>>>>Была идея вывести апач в чрут, но т.к. сайт завязан на пхп и мускул здесь тоже все не так просто.

как бээ после вопроса про ldd вообще есть сомнения в понимании термина chroot )


"Защита Apache"
Отправлено Дядя_Федор , 06-Дек-11 11:03 
> Можно уточнить, что это за зверь такой - ldd ?

Кроме Гугла в список нелюбимых попал, похоже, еще и man. Как же все запущено-то.



"Защита Apache"
Отправлено Dmitry , 06-Дек-11 11:28 
>> Можно уточнить, что это за зверь такой - ldd ?
>  Кроме Гугла в список нелюбимых попал, похоже, еще и man. Как
> же все запущено-то.

Зачем же так. Это первое что я сделал:

=====================
NAME
       ldd - print shared library dependencies
=====================

Просто не совсем понял смысла как с этим работать. Это что. Имеется ввиду поиск всех шаред библиотек, которые нужно закинуть в чрут, чтобы все работало? Так что-ли. Только это все следствие. Точнее второй (а то и третий шаг) настройки, оптимизации. А где сам мануал по организации чрута для связки апач+пхп+мускул. Именно его я искал.



"Защита Apache"
Отправлено Дядя_Федор , 06-Дек-11 12:17 
> Просто не совсем понял смысла как с этим работать. Это что. Имеется
> ввиду поиск всех шаред библиотек, которые нужно закинуть в чрут, чтобы
> все работало? Так что-ли.

Так что ли.


"Защита Apache"
Отправлено Dmitry , 06-Дек-11 12:29 
>  Так что ли.

Осталось найти грамотный мануал вывода всего хозяйства в чрут.

Хотя можно попробовать покопать еще в области настроек SELinux. М.б. через него удасться ограничить доступ апача в системные папки.



"Защита Apache"
Отправлено Pahanivo , 06-Дек-11 13:19 
> Осталось найти грамотный мануал вывода всего хозяйства в чрут.

можно было в этому посту уже в принципе освоить гугла )))


"Защита Apache"
Отправлено Дядя_Федор , 06-Дек-11 13:45 
> Осталось найти грамотный мануал вывода всего хозяйства в чрут.

Найдите. Я разрешаю.



"Защита Apache"
Отправлено Dmitry , 06-Дек-11 15:13 
>  Найдите. Я разрешаю.

Надо же. Еще один спец по ГУГЛЮ отыскался. Что бы я без вас всех делал. Ума не приложу.



"Защита Apache"
Отправлено Дядя_Федор , 06-Дек-11 16:34 
> Надо же. Еще один спец по ГУГЛЮ отыскался. Что бы я без
> вас всех делал. Ума не приложу.

При подобных Вашим вопросам Вам вряд ли удастся что-либо куда-либо приложить. За неимением предмета приложения. Вы бы за то время, которое тратите на глупости, которые Вы постоянно несете - уже раз 10 бы нашли уйму руководств по настройке Апача+пых-пых+мускул в чруте. Они есть, и немало - уверяю Вас.


"Защита Apache"
Отправлено Dmitry , 06-Дек-11 16:46 
> Они есть, и
> немало - уверяю Вас.

Да кто-ж спорит. Второй день читаю. Просто, задавая вопрос,  я думал что встречу тех, кто на эти грабли уже наступил и даст конкретные советы. Дельный совет пришел только один. Остальные сплошные ГУГЛЯторы, которым делать нечего и они пишут свои тупые посты направо и налево.



"Защита Apache"
Отправлено Pahanivo , 06-Дек-11 17:21 
> делать нечего и они пишут свои тупые посты направо и налево.

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



"Защита Apache"
Отправлено Dmitry , 06-Дек-11 17:31 
> я надеюсь, настанет тот светлый день озарения, когда вы наконец то поймете,
> чьи именно посты в этом топе были тупы.

Это я уже понял. Желаю вам самому вместо конкретного ответа встретить подобный отсыл в гугол, когда вам что-то будет нужно.  

> если этот день не настанет в ближайшие время - крайне рекомендую сменить сферу деятельности

А вот это не вам мне советовать. Я работаю в сфере IT уже более 25 лет (и программером и админом, и админом/программером баз данных) и "менять сферу деятельности" не собираюсь.

PS: Т.ч. идите сами в гугол. М.б. научитесь вежливости и культуре общения в форумах.



"Защита Apache"
Отправлено Pahanivo , 06-Дек-11 17:51 
> PS: Т.ч. идите сами в гугол. М.б. научитесь вежливости и культуре общения
> в форумах.

и это говорит человек который назадавал кучу идиотских вопросов, а потом обругал всех тупыли гуглерами? :)


"Защита Apache"
Отправлено Дядя_Федор , 06-Дек-11 21:04 
> и это говорит человек который назадавал кучу идиотских вопросов, а потом обругал
> всех тупыли гуглерами? :)

Коллега, тут случай действительно клинический. :)


"Защита Apache"
Отправлено ne4to , 06-Дек-11 13:38 
>> ldd тебе расскажет что надо в чрут принести с собой.
> Можно уточнить, что это за зверь такой - ldd ?

[ne4to@project ~]$ ldd /usr/lib64/php5.3/bin/php
        linux-vdso.so.1 =>  (0x00007ffff73ff000)
        libc-client.so.1 => /usr//lib64/libc-client.so.1 (0x00007fe2bf4ab000)
        libz.so.1 => /lib64/libz.so.1 (0x00007fe2bf293000)
        libreadline.so.6 => /lib64/libreadline.so.6 (0x00007fe2bf04c000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fe2bedcb000)
        libsybdb.so.5 => /usr//lib64/libsybdb.so.5 (0x00007fe2beb77000)
        libmcrypt.so.4 => /usr//lib64/libmcrypt.so.4 (0x00007fe2be944000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fe2be740000)
        libonig.so.2 => /usr//lib64/libonig.so.2 (0x00007fe2be4d7000)
        libt1.so.5 => /usr//lib64/libt1.so.5 (0x00007fe2be278000)
        libfreetype.so.6 => /usr//lib64/libfreetype.so.6 (0x00007fe2bdfda000)
        libpng14.so.14 => /usr//lib64/libpng14.so.14 (0x00007fe2bddb3000)
        libjpeg.so.8 => /usr//lib64/libjpeg.so.8 (0x00007fe2bdb79000)
        libdb-4.8.so => /usr//lib64/libdb-4.8.so (0x00007fe2bd800000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fe2bd5e3000)
        libgdbm.so.3 => /usr//lib64/libgdbm.so.3 (0x00007fe2bd3dd000)
        libcurl.so.4 => /usr//lib64/libcurl.so.4 (0x00007fe2bd182000)
        libbz2.so.1 => /lib64/libbz2.so.1 (0x00007fe2bcf72000)
        libpcre.so.0 => /lib64/libpcre.so.0 (0x00007fe2bcd36000)
        libssl.so.1.0.0 => /usr//lib64/libssl.so.1.0.0 (0x00007fe2bcada000)
        libcrypto.so.1.0.0 => /usr//lib64/libcrypto.so.1.0.0 (0x00007fe2bc731000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fe2bc51b000)
        libmysqlclient.so.16 => /usr/lib64/mysql/libmysqlclient.so.16 (0x00007fe2bc19b000)
        libnetsnmp.so.15 => /usr//lib64/libnetsnmp.so.15 (0x00007fe2bbece000)
        libxml2.so.2 => /usr//lib64/libxml2.so.2 (0x00007fe2bbb79000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fe2bb813000)
        libpam.so.0 => /lib64/libpam.so.0 (0x00007fe2bb605000)
        libncurses.so.5 => /lib64/libncurses.so.5 (0x00007fe2bb3b5000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fe2bf7b6000)
        librt.so.1 => /lib64/librt.so.1 (0x00007fe2bb1ac000)
        libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00007fe2baf6e000)
        libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00007fe2baca0000)
        libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00007fe2baa76000)
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007fe2ba872000)
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007fe2ba66f000)
        libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00007fe2ba466000)


"Защита Apache"
Отправлено Dmitry , 06-Дек-11 13:47 
>>> ldd тебе расскажет что надо в чрут принести с собой.
>> Можно уточнить, что это за зверь такой - ldd ?
> [ne4to@project ~]$ ldd /usr/lib64/php5.3/bin/php

Сенкс.


"Защита Apache"
Отправлено Boris Syomov , 08-Дек-11 23:44 
Ещё проще - с mysql прекрасно можно работать не через сокет а по сети.



"Защита Apache"
Отправлено KarD_IO , 07-Дек-11 07:35 
А изучали вопрос про chroot? Апач можно запустить в изолированном окружении и он не будет "знать" о реальной части системы.

А настройки ниже корня - нормально, иначе доступ к ним будет через веб, что не правильно, т.к. можно подсмотреть, к примеру, пароль на БД.


"Защита Apache"
Отправлено Dmitry , 07-Дек-11 09:16 
> А изучали вопрос про chroot? Апач можно запустить в изолированном окружении и
> он не будет "знать" о реальной части системы.

Этим я сейчас и занимаюсь.

> А настройки ниже корня - нормально, иначе доступ к ним будет через
> веб, что не правильно, т.к. можно подсмотреть, к примеру, пароль на
> БД.

Полностью согласен. Хотя у данных "сайтописцев" как раз настройки на базу лежат выше корня сайта, но т.к. данному узверю разрешен вход только с локалхост, то, думаю, это не критично. Хотя и демонстрирует их "уровень", как программеров.

У меня-то вопрос был (учитывая их "уровень") в том, чтобы через кривые пхп скрипты невозможно было добраться до системных настроек ОСи. И в этом, пока вижу только пару механизмов. Либо чрут, либо СЕЛинух, либо их комбинация. Думал обойтись настройками апача, но инфу пока не нарыл.



"Защита Apache"
Отправлено KarD_IO , 07-Дек-11 09:34 
>  т.к. данному узверю разрешен вход только с
> локалхост, то, думаю, это не критично. Хотя и демонстрирует их "уровень",
> как программеров.

Юзер для базы, может быть использован через SQL-иньекции для получения нужной информации типа других пользователей БД и их паролей, информации из БД и тп. Чтобы этого избежать доступ тогда у него должен быть только для нужной базы и ничего более. Ну если оттуда сопрут инфу, то "криворукость" программеров однозначна...


> У меня-то вопрос был (учитывая их "уровень") в том, чтобы через кривые
> пхп скрипты невозможно было добраться до системных настроек ОСи. И в
> этом, пока вижу только пару механизмов. Либо чрут, либо СЕЛинух, либо
> их комбинация. Думал обойтись настройками апача, но инфу пока не нарыл.

Это системные механизмы, еще вроде можно запретить фукнции ПХП, которые это могут сделать. В документации по ПХП что-то такое мелькало. Как вариант. Ну и chroot, точно лишним не будет.

Один раз настроить и пусть "балуются" :)



"Защита Apache"
Отправлено Dmitry , 07-Дек-11 12:40 
> Юзер для базы, может быть использован через SQL-иньекции для получения нужной информации

Сенкс. Об этом не подумал.

> Ну если оттуда сопрут инфу,
> то "криворукость" программеров однозначна...

Особенно в свете закона №152 :)

> Это системные механизмы, еще вроде можно запретить фукнции ПХП, которые это могут
> сделать. В документации по ПХП что-то такое мелькало.

Посмотрел. Запретить exec не удасться, т.к. он использован скриптами для вызова /usr/bin/convert

> Ну  и chroot, точно лишним не будет.
> Один раз настроить и пусть "балуются" :)

Попробую разобраться. Самому интересно.


"Защита Apache"
Отправлено ne4to , 07-Дек-11 11:03 
>> А изучали вопрос про chroot? Апач можно запустить в изолированном окружении и
>> он не будет "знать" о реальной части системы.
> Этим я сейчас и занимаюсь.

я какбы вообще не вижу смысла запускать Вам апач в чруте.. тем более если сайт нормально функционирует в safe_mode .. тогда вам понадобится только open_base .. это решит все ваши проблемы.
если с safe_mode проблемы .. то тогда в помощЪ open_base + disable_functions на предмет всякихЪ exec, system, etc.
а если заменить mod_php на php-cgi и выставить кошерные права на папки то вообще никто ничего не увидит .


"Защита Apache"
Отправлено Dmitry , 07-Дек-11 12:37 
> я какбы вообще не вижу смысла запускать Вам апач в чруте.. тем
> более если сайт нормально функционирует в safe_mode .. тогда вам понадобится
> только open_base .. это решит все ваши проблемы.

Спасибо. Не знал. В safe_mode сайт вроде работает. Open_base, насколько я понял, это open_basedir. Ок. Посмотрю.

> если с safe_mode проблемы .. то тогда в помощЪ open_base + disable_functions
> на предмет всякихЪ exec, system, etc.

Запретить exec не получится. Он использован для вызова /usr/bin/convert. Т.ч. надо посмотреть.

> а если заменить mod_php на php-cgi и выставить кошерные права на папки
> то вообще никто ничего не увидит .

Ок. Посмотрю.


"Защита Apache"
Отправлено Dmitry , 07-Дек-11 13:16 
Из-за внешнего вызова /usr/bin/convert галерея сайта отказалась работать. Т.ч. теперь остался единственный действенный механизм защиты - чрут. Его и буду копать.

PS: Все равно спасибо. Узнал кое что новое в защите пхп.


"Защита Apache"
Отправлено ne4to , 07-Дек-11 13:35 
> Из-за внешнего вызова /usr/bin/convert галерея сайта отказалась работать. Т.ч. теперь
> остался единственный действенный механизм защиты - чрут. Его и буду копать.
> PS: Все равно спасибо. Узнал кое что новое в защите пхп.

safe_mode_exec_dir


"Защита Apache"
Отправлено Dmitry , 07-Дек-11 14:53 
> safe_mode_exec_dir

Попробовал сразу. Не помогло. Даже выносил convert в другую папку (в структуру сайта, на уровень ниже) - тоже мимо. От рута запускается - от апача нет. М.б. дело в шаредлабах. Может их (или ссылки на них) попробовать добавить в exec_dir.



"Защита Apache"
Отправлено Дядя_Федор , 09-Дек-11 08:13 
> Попробовал сразу. Не помогло. Даже выносил convert в другую папку (в структуру
> сайта, на уровень ниже) - тоже мимо. От рута запускается -
> от апача нет. М.б. дело в шаредлабах. Может их (или ссылки
> на них) попробовать добавить в exec_dir.

Предложу вариант из старой практики работы с биллингом UTM. Прописать в /etc/sudoers права Апачу на запуск convert с правами рута без пароля. Типа от такого:
apache ALL=(ALL) NOPASSWD:/путь/convert


"Защита Apache"
Отправлено Dmitry , 12-Дек-11 16:00 
>  Предложу вариант из старой практики работы с биллингом UTM. Прописать в
> /etc/sudoers права Апачу на запуск convert с правами рута без пароля.
> Типа от такого:
> apache ALL=(ALL) NOPASSWD:/путь/convert

Проверил. Не помогло. Хотя идея хорошая. Сенкс. Буду иметь ввиду.



"Защита Apache"
Отправлено ne4to , 12-Дек-11 19:20 
>>  Предложу вариант из старой практики работы с биллингом UTM. Прописать в
>> /etc/sudoers права Апачу на запуск convert с правами рута без пароля.
>> Типа от такого:
>> apache ALL=(ALL) NOPASSWD:/путь/convert
> Проверил. Не помогло. Хотя идея хорошая. Сенкс. Буду иметь ввиду.
>> safe_mode_exec_dir
> Попробовал сразу. Не помогло. Даже выносил convert в другую папку (в структуру
> сайта, на уровень ниже) - тоже мимо. От рута запускается -
> от апача нет. М.б. дело в шаредлабах. Может их (или ссылки
> на них) попробовать добавить в exec_dir.

как сайт до этого работал ?? из под рута чтоли ?? оО


"Защита Apache"
Отправлено Boris Syomov , 08-Дек-11 23:50 
>> А изучали вопрос про chroot? Апач можно запустить в изолированном окружении и
>> он не будет "знать" о реальной части системы.
> Этим я сейчас и занимаюсь.
>> А настройки ниже корня - нормально, иначе доступ к ним будет через
>> веб, что не правильно, т.к. можно подсмотреть, к примеру, пароль на
>> БД.
> Полностью согласен. Хотя у данных "сайтописцев" как раз настройки на базу лежат
> выше корня сайта, но т.к. данному узверю разрешен вход только с
> локалхост, то, думаю, это не критично. Хотя и демонстрирует их "уровень",
> как программеров.

Это говорит как раз о их грамотности, как программеров. В web root и ниже нужна только точка/точки входа скрипта, и статика, которую будет отдавать веб сервер.
То что вы описали, не нарушение безопасности, а её повышение и нормальная практика.