/ / Защита папок скрипта от запуска сторонних скриптов
октябрь 23 2010

Защита папок скрипта от запуска сторонних скриптов

Дорогие друзья,

в этой небольшой статье мы хотим рассказать вам о том как, как вам можно повысить безопасность вашего сайта. Как известно наибольшую угрозу для сайта представляют собой залитые злоумышленником на сервер PHP шеллы. Что это такое? Это PHP скрипты которые могут выполняться на вашем сервере, соответственно производить какие-либо изменения в файлах доступных для записи или могут, например читать содержимое конфигурационных данных и соответственно получать прямой доступ к базе данных. Каким образом могут попадать данные шеллы на ваш сервер? При обнаружении какой либо уязвимости в скрипте, или сторонних модулях, или вообще при наличии других уязвимых сторонних скриптов на сервере, или серверного ПО. Главная особенность заключается в том, что шеллы можно залить не в любые папки на сервере, а лишь в папки доступные для записи на сервере, и в DataLife Engine такими папками являются папки /uploads/ и /templates/, а также все вложенные в них папки. Данные папки должны иметь права на запись, т.к. вы в них заливаете посредством скрипта легальный контент, файлы, картинки, редактируете в админпанели шаблоны и прочее. И как правило в эти папки производится загрузка шеллов при обнаружении злоумышленником какой либо бреши на сервере в любом скрипте, даже не имеющем отношения к DataLife Engine. Можно ли защитить эти папки, в случае попадания в них зловредного PHP файла, ведь нельзя запретить доступ к этим папкам? Можно, и достаточно не сложно.

Итак, вам необходимо разместить в папках /uploads/ и /templates/ файл .htaccess со следующим содержимым:
php_flag engine  off

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

К сожалению далеко не все хостинг провайдеры позволяют управлять через .htaccess данным параметром, но для таких сайтов решение также существует, поэтому если на вашем сервере не работает вышеуказанный способ, то разместите в этих же папках .htaccess с содержимым:
<FilesMatch "\.([Pp][Hh][Pp]|[Cc][Gg][Ii]|[Pp][Ll]|[Ph][Hh][Tt][Mm][Ll])\.?.*">
   Order allow,deny
   Deny from all
</FilesMatch>

Данный код запрещает прямое обращение к PHP файлам, находящимся в этих папках.

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

Комментарии

fmnokia

fmnokia

23 октября 2010 15:45 Клиенты
1
Неплохо бы в стандартный дистрибутив второй вариант поместить.
Drug_4e

Drug_4e

23 октября 2010 16:04 Клиенты
0
Спасибо, кэп!
celsoft

celsoft

23 октября 2010 16:35 Администраторы
0
fmnokia,
Да, в будущем это также войдет в дистрибутив
GrayZOR

GrayZOR

23 октября 2010 18:56 Клиенты
0
winked круто. спс!
razer85

razer85

23 октября 2010 19:02 Клиенты
0
а как узнать какой вариант будет работать?
Adobe

Adobe

23 октября 2010 20:30 Клиенты
0
будем знать wink
celsoft

celsoft

23 октября 2010 21:08 Администраторы
0
Цитата: razer85
а как узнать какой вариант будет работать?

просто поместите в эти папки какой либо PHP файл и попробуйте запустить
razer85

razer85

23 октября 2010 22:25 Клиенты
0
Цитата: celsoft
просто поместите в эти папки какой либо PHP файл и попробуйте запустить


С первым вариантом браузер предлогал сохранить файл, а с вторим при обращении к файлу ошибку выдал

Forbidden

You don't have permission to access /templates/preview.php on this server.


Значит у меня не работает вариант 1 ?
dlespam

dlespam

23 октября 2010 23:13 Клиенты
0
Цитата: razer85
Значит у меня не работает вариант 1 ?

Работает, так оно и должно быть, первый вариант просто будет отдавать файл без выполнения.
RedRoll

RedRoll

24 октября 2010 02:58 Клиенты
0
а папка backup?
DeeMon

DeeMon

24 октября 2010 08:15 Посетители
0
Цитата: celsoft
Да, в будущем это также войдет в дистрибутив

А что сейчас мешает включить и обновить дистрибутив? belay
И я так понимаю для гарантии лучше 2-ой вариант прописать...
DeeMon

DeeMon

24 октября 2010 09:02 Посетители
0
И ещё, файл .htaccess в папке uploads/files/ я так понял должен теперь выглядеть так:
<FilesMatch "\.(php|php3|php4|php5|php6|phtml|phps)$|^$">
Order allow,deny
Deny from all
</FilesMatch>

<FilesMatch "\.(avi|mp3|mp4|flv|swf|wmv|m4v|m4a|mov|3gp|f4v)$|^$">
Order deny,allow
Allow from all
</FilesMatch>

Правильно?
Ещё по поводу папки templates- не все ставят на неё и её подпапки права 777. Выходит имеет смысл туда закидывать его если только права 777.
WWW.ZEOS.IN

WWW.ZEOS.IN

24 октября 2010 10:03 Клиенты
0
Да, надо добавить в следующие версии DLE bully
celsoft

celsoft

24 октября 2010 10:57 Администраторы
0
Цитата: DeeMon
И ещё, файл .htaccess в папке uploads/files/ я так понял должен теперь выглядеть так:

Не нужно трогать файл в этой папке.
Цитата: RedRoll
а папка backup?

там уже находится запрет доступа к этой папке
ExTreme72

ExTreme72

24 октября 2010 11:03 Посетители
0
А вот если у меня права на папки 700, а на файлы 600 это нормально ?
Просто если ставить права 777 или 644 то сайт перестаёт работать. Точнее не грузит вообще то что находится в этих папках
film4ik

film4ik

24 октября 2010 15:05 Клиенты
0
К сожалению далеко не все хостинг провайдеры позволяют управлять через .htaccess данным параметром


А как на сервере сделать так чтобы можно было управлять данным параметром через .htaccess?
celsoft

celsoft

24 октября 2010 16:30 Администраторы
0
Цитата: ExTreme72
А вот если у меня права на папки 700, а на файлы 600 это нормально ?
Просто если ставить права 777 или 644 то сайт перестаёт работать. Точнее не грузит вообще то что находится в этих папках

да, какие права могут быть определяются хостинг провайдером в настройках сервера.
Цитата: film4ik
А как на сервере сделать так чтобы можно было управлять данным параметром через .htaccess?

это вам нужно уточнять у вашего хостинг провайдера. Зависит от ПО вашего сервера
razer85

razer85

24 октября 2010 17:12 Клиенты
0
а 2 вариант тоже запрещает использовать php во всех вложенных папках /uploads/ и /templates ?
celsoft

celsoft

24 октября 2010 17:25 Администраторы
0
razer85,
да, действия правил всегда распространяются на вложенные папки, если правило не отменяется
film4ik

film4ik

24 октября 2010 18:29 Клиенты
0
Цитата: celsoft
это вам нужно уточнять у вашего хостинг провайдера. Зависит от ПО вашего сервера

Свой сервер. CentOS 5.5. Искал в инете что ничего не нашел как разрешить данное правило. Может кто в курсе?
valet

valet

24 октября 2010 20:07 Посетители
1
Спасибо, добавил
celsoft

celsoft

24 октября 2010 20:53 Администраторы
1
film4ik,
Операционная система тут не имеет никакого отношение, .htacess это управление апачем, и по умолчанию никаких запретов использования нет. Кстати PHP должен работать как модуль апача, а не как FastCGI, т.к. это управление через апач. Ну и собственно наличие Апача также обязательно.
kabbalahportal.org

kabbalahportal.org

25 октября 2010 09:54 Посетители
1
Не очень годится как универсальное правило.
Например есть движок, в котором есть папка - cache, и она должна быть для записи.
НО! В ней исполняются именно файлы - .php
И в таком случае ваш метод не пригоден? belay
pray

pray

25 октября 2010 10:17 Клиенты
0
Это все конечно хорошо, но, после прописывания второго варианта, в /templates/, перестала работать реклама от Яндекса.
celsoft

celsoft

25 октября 2010 11:19 Администраторы
0
Цитата: pray
Это все конечно хорошо, но, после прописывания второго варианта, в /templates/, перестала работать реклама от Яндекса.

Она у вас что на PHP? Данное правило запрещает только доступ к PHP файлам при попытке их прямого запуска, и не более того.
Цитата: kabbalahportal.org
Не очень годится как универсальное правило.
Например есть движок, в котором есть папка - cache, и она должна быть для записи.
НО! В ней исполняются именно файлы - .php
И в таком случае ваш метод не пригоден?

Вы пробовали когда нибудь обратится напрямую к этим файлам? У вас не совсем верное понимание того для чего эти правила и что они запрещают. Эти правила блокируют прямой запуск файлов, при этом внутреннее подключение и выполнение не запрещается. Например смотрите папку engine/data/ там есть PHP файлы, попробуйте их запустить напрямую с браузера, у вас не получится, доступ к ним закрыт, при этом эти файлы прекрасно запускаются и работают самим скриптом DLE
dle_users

dle_users

27 октября 2010 19:11 Посетители
0
Thanks Cleosoft
you rock :D
love u :D request

How can i disable direct web browser access to system files like engine.php, init.php etcc
all fles inside engine directory
Fps-999

Fps-999

31 октября 2010 08:37 Клиенты
0
Спасибо, ещё одной проблемой будем считать меньше wink
pahanorlando

pahanorlando

1 ноября 2010 18:07 Клиенты
0
dle_users,

They should already be disabled by default
RockKenny

RockKenny

2 ноября 2010 08:26 Посетители
0
Спасибо
Testing

Testing

15 ноября 2010 08:51 Клиенты
0
Сделал файлы .htaccess, прописал, но ни тот, ни другой вариант не работает. php файл выполняется. В чем может быть проблема?

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Календарь
«    Июль 2017    »
ПнВтСрЧтПтСбВс
 12
3456789
10111213141516
17181920212223
24252627282930
31 
Опрос на сайте
Совершаете ли вы покупки в интернет?

Популярные новости
Архив новостей
Июль 2017 (1)
Июнь 2017 (1)
Апрель 2017 (3)
Март 2017 (2)
Февраль 2017 (1)
Январь 2017 (1)