Безопасность и защита Opencart

О защите и безопасности разных CMS в том числе Opencart написано много, но хотелось бы добавить и свои пять копеек. чтобы понять как защитить свой Opencart, нужно знать как его ломают и его основные дыры.

В первую очередь почитаем, что по этому поводу есть на разных форумах по взлому. Первая же статья дает направление к действию https://rdot.org/forum/showthread.php?t=3247 и исходник уязвимости http://www.bot24.com/2014/04/opencart-1563-upload-shell-vulnerability.html

Объясню, как можно залить шелл (фактически файловый менеджер для работы с хостингом, некоторые также позволяют выполнять различные скрипты). Для использования данной уязвимости необходимо выполнение нескольких условий – 1) доступ в админку сайта, 2)уязвимость файла ошибок.

Предположим, что доступ в админку сайта открыт, как же ведет себя злоумышленник?

Первое, что проверяется доступность файла ошибок из броузера. Просто наберите в командной строке http://ваш_сайт/system/logs/error.txt, если открывается ваш журнал ошибок, то данный сайт уязвим.

Далее в админке можно задать произвольное имя файла лога ошибок (System -> Settings -> Edit Your Store -> Server Tab and at “Error Log Filename”), например

error.php

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

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

Разберемся с файлом ошибок. Для того, чтобы невозможно было из броузера увидеть файл журнала ошибок можно воспользоваться тремя способами. Первое – отключить журнал ошибок из Система -> Настройки -> Редактировать магазин -> Вкладка “Сервер” -> Записывать ошибки: выставить – нет. Но мне кажется, что это не лучший вариант, так как при разработке логи все таки нужны. Второй вариант переименовать файл журнала ошибок, например, в abrakadabra.txt, при этом если злоумышленник методом перебора будет собирать сайты Opencart для взлома ваш сайт точно в него не попадет. Ну и третий вариант вообще запретить доступ к данному файлу из броузеров.

Для этого в папку http://сайт/system/logs/ можно добавить файл .htaccess следующего содержания: (сохраняем в кодировке ANSI):

<FilesMatch "error.(txt)$">
Order Allow,Deny
Deny from all
</FilesMatch>

 

Также в папку download закинуть файл .htaccess с содержанием:

Order allow,deny
Deny from all

# Prevent Directoy listing
Options All -Indexes

 

Также не забываем отключать отображение ошибок на сайте.

Совместив второй и третий варианты получаем довольно безопасное решение. Но оно работает только в случае если злоумышленник не имеет доступа к административной панели. Поэтому производим два стандартных действия по настройке безопасности доступа к админке – переименовываем пользователя “admin” (Система – Пользователи – Изменить – Логин) и назначаем сложный пароль (здесь уже стандартные настройки – пароль от 8 символов, использовать большие и маленькие буквы и символы типа !,”,№,;,%,:,?).

После данных действий выставляем права на папки файлы, для файлов config.php выставим 400, 755 на папки, 644 на остальные файлы.

Ну и последнее что можно сделать – это переименовать вход в админку. Советую это делать уже после того,  как установите все модули Вашего магазина. Изменение входа в админку производится в два действия – переименовывается папка admin и вносятся соответствующие изменения в файл из папки /admin/config.php

Кстати забыл сказать, никогда не оставляйте папку install после установки – это также огромная дыра в безопасности.

Конечно, это не весть список мер для безопасности интернет-магазина, но для базовой настройки этого вполне достаточно.

 

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх