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

Скачать Защита папок скрипта от запуска сторонних скриптов
Сейчас ищут:

Itnull

Команда форума
Администратор
Регистрация
22.05.13
Сообщения
24.511
Реакции
8.231
Веб-сайт
itnull.me
  • Автор темы
  • Администратор
  • Модер.
  • Команда форума
  • #1
в этой небольшой статье мы хотим рассказать вам о том как, как вам можно повысить безопасность вашего сайта. Как известно наибольшую угрозу для сайта представляют собой залитые злоумышленником на сервер 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 файлам, находящимся в этих папках.

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

• Полностью запретить доступ к файлам или папкам (например, папками с инклюдами, куда нужен доступ некоторым скриптам, но не нужен пользователю).
deny from all

• Доступ только только с определенного IP адреса:
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
*где, xxx.xxx.xxx.xxx — ваш IP адрес.

• Запрет для определенных IP адресов:
order deny,allow
allow from all
deny from xxx.xxx.xxx.xxx

• Запрет доступа для определенных IP адресов:
order deny,allow
allow from all
deny from xxx.xxx.xxx.xxx

• Блокировать пользователей с определенным рефером:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} bannedurl1.com [NC,OR]
RewriteCond %{HTTP_REFERER} bannedurl2.com [NC,OR]
RewriteRule .* - [F]
</ifModule>
*где, bannedurl1.com и bannedurl2.com — запрещенне сайты. Потребуется установленный mod_rewrite, но скорее всего он у вас на сервере будет.

• Блокировка доступа для определенных юзерагентов:
RewriteEngine On
RewriteBase /
SetEnvIfNoCase Referer "^$" bad_user
SetEnvIfNoCase User-Agent "^badbot1" bad_user
SetEnvIfNoCase User-Agent "^badbot2" bad_user
SetEnvIfNoCase User-Agent "^badbot3" bad_user
Deny from env=bad_user
*badbot1, badbot2 и т.д. - названия ботов, например, из ваших логов.

• Заблокировать доступ только к определенным файлам:
<FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
Order Allow,Deny
Deny from all
</FilesMatch>

• Запретить просмотр файлов в директории:
Options All -Indexes

• Закрыть доступ к веб-сайту в рабочее время:
RewriteCond %{TIME_HOUR}%{TIME_MIN} >1000
RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900
RewriteRule .* - [ F ]

• Запретить хотлинкинг на сайт:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mysite.ru [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
*хотлинкинг — это, например, публикация картинок с вашего сайта на других сайтах.
 
Назад
Сверху Снизу