Безопасность и защита 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 после установки — это также огромная дыра в безопасности.

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

 

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