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

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

Что такое безопасность веб-приложений и можно ли добиться максимальной защищенности?

Общая стратегия безопасности программного обеспечения основывается на трех основных принципах:

конфиденциальность - сокрытие определенных ресурсов или информации;

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

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

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

Можно ли добиться максимальной защищенности вашего магазина? Да, это возможно, если создать магазин на надежной CMS системе, тщательно подобрать серверное окружение и использовать лучшие практики безопасности.


О OWASP TOP 10

Классификацией векторов атак и уязвимостей занимается сообщество OWASP (Open Web Application Security Project) – международная некоммерческая организация, сосредоточенная на анализе и улучшении безопасности программного обеспечения.

OWASP (https://www.owasp.org/) составил список из 10-и самых опасных уязвимостей, которым могут быть подвержены интернет-ресурсы. Сообщество обновляет и пересматривает этот список раз в три года, последнее обновление было сделано в 2017 году.

Итак, топ 10 самых опасных уязвимостей:

  1. Внедрение кода;

  2. Некорректная аутентификация и управление сессией;

  3. Утечка чувствительных данных (конфиденциальных данных);

  4. Внедрение внешних XML– сущностей (это, как правило, DoS-атаки);

  5. Нарушение контроля доступа;

  6. Небезопасная конфигурация;

  7. Межсайтовый скриптинг;

  8. Небезопасная десериализация;

  9. Использование компонентов с известными уязвимостями;

  10. Отсутствие журналирования и мониторинга.

 

Подробнее о наиболее распространенных из них:

XSS (Cross-Site Scripting) - это вид уязвимости программного обеспечения (веб- приложений), при которой на генерированной сервером странице выполняются вредоносные скрипты с целью атаки клиента.

XSRF / CSRF (Request Forgery) - это вид уязвимости, позволяющий использовать недостатки HTTP протокола, при этом злоумышленники работают по следующей схеме: ссылка на вредоносный сайт установливается на странице, пользующейся доверием у пользователя, при переходе по вредоносной ссылке выполняется скрипт, сохраняющий личные данные пользователя (пароли, платежные данные и т.д.), либо изменяющий доступ к учетной записи пользователя для получения полного контроля над ней.

Code injections (SQL, PHP, ASP и т.д.) - это вид уязвимости, при котором становится возможно осуществить запуск исполняемого кода с целью получения доступа к системным ресурсам, несанкционированного доступа к данным, либо выведения системы из строя.

Server-Side Includes (SSI) Injection - это вид уязвимости, использующий вставку серверных команд в HTML код или запуск их напрямую с сервера.

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

Что включает в себя тестирование безопасности веб-приложений?

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

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

  1. Контроль доступа – это проверка, которая определяет проблемы, связанные с несанкционированным доступом пользователей к информации и функциям в зависимости от предоставленной роли. В Magento мы тщательно тестируем функционал назначения прав определенной группе пользователей.

  2. Аутентификация – позволяет удостовериться в отсутствии возможности обойти процедуру регистрации и авторизации; убедиться в корректности управления пользовательскими данными, исключить возможность получения информации о зарегистрированных пользователях и их учетных данных.

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

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

  5. Механизмы обработки ошибок – включает проверку системных ошибок приложения на отсутствие факта раскрытия информации о внутренних механизмах безопасности (например, посредством демонстрации исключений, программного кода).

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

  7. Интеграция со сторонними сервисами – позволяет убедиться в невозможности манипуляции данными, передаваемыми между приложением и сторонними компонентами, например, платежными системами или соцсетями.

  8. Проверка устойчивости к Dos/DDos атакам – проверяет способность приложения обрабатывать незапланированно высокие нагрузки и большие объемы данных, которые могут быть направлены на выведение приложения из строя.

 

Инструменты для тестирования защищенности

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

Приложения и фреймворки

1.OpenVAS сканирует узлы сети на наличие уязвимостей и позволяет управлять уязвимостями.


2.OWASP Xenotix XSS Exploit Framework сканирует ресурс на возможность эксплуатации XSS-уязвимостей.


3.BeEF (Browser Exploitation Framework) позволяет выявить слабые места приложения, используя уязвимости браузера. Данный инструмент автоматизации тестирования приложений использует векторы атак на стороне клиента для проверки безопасности. Может вызывать команды браузера, такие как перенаправление, изменение URL-адресов, создание диалоговых окон и т.д.

4.Google Nogotofail – средство тестирования безопасности сетевого трафика. Проверяет приложение на наличие известных уязвимостей TLS/SSL и неправильных конфигураций. Сканирует SSL/TLS-шифрованные соединения и проверяет, являются ли они уязвимыми для атак. Может быть настроен как маршрутизатор, VPN-сервер или прокси-сервер.



Онлайн-сервисы

1. SecurityHeaders.io проверяет на наличие и корректность заголовков ответа сервера, отвечающих за безопасность веб-приложения.


2. Observatory by Mozilla сканирует ресурс на наличие проблем безопасности. Кроме своих результатов, при выборе соответствующей опции, собирает и добавляет к отчету аналитику со сторонних сервисов анализа защищенности.



3. SSL Server Test выполняет анализ SSL-конфигурации веб-сервера.

И многие другие.


Специальные утилиты для Magento

Есть также ресурсы, которые идеально подойдут именно для проверки magento-приложений.

1.Mage Report - бесплатная проверка сайта на уязвимости.


2. Foregenix - Global Cybersecurity Expert - также проверяет на распространенные уязвимости, отправляя отчет в виде pdf на почту.



3. Sucuri SiteCheck - полезная утилита для быстрого сканирования.


4. Magescan - сканер для установки на сервер.

5. Magento Security Scan Tool - новейший бесплатный инструмент для сканирования сайта на предмет угроз безопасности. Активизируется в личном кабинете.

Безопасность в Magento

Magento - крупнейшая CMS, которой пользуются тысячи магазинов по всему миру. Платформе доверяют Philips, Ford, Men Shealth, Ашан, Togas и другие. Поэтому вопросы безопасности, наряду со стабильностью и функциональностью, находятся на первом месте у разработчиков Magento.

Хорошая новость для владельцев интернет-магазинов: magento самостоятельно обрабатывает большинство атак. Встроенные методы защиты отвечают самым современным требованиям и учитывают рекомендации OWASP. С каждым новым обновлением разработчики CMS включают доработки, призванные отражать новые киберугрозы.

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

Лучшие расширения для безопасности Magento: https://serverguy.com/magento/best-5-magento-extension-security/

Самый свежий гайд по безопасности от разработчиков Magento, включающий лучшие практики безопасности, новые решения и программы для улучшения защищенности магазина:  https://onilab.com/blog/magento-2-security-guide/

Далее мы дадим рекомендации по повышению безопасности вашего интернет-магазина, основанные на официальных руководствах Magento Security Center и нашем многолетнем опыте.



Советы по повышению безопасности интернет-магазина

  1. Регулярно обновлять Magento до последней версии, чтобы использовать самые последние улучшения информационной безопасности магазина.

  1. Устанавливать последние патчи безопасности, содержащие исправления для частей системы, которые могли быть уязвимы к атакам.

  1. Использовать уникальный url адрес административной части сайта вместо стандартного. Перед внедрением необходимо проконсультироваться со своим хостинг-провайдером. Изменить адрес можно в настройках:

Для Magento 1.x:
Navigate to System > Configuration > Advanced > Admin > Custom Admin Path
Для Magento 2.x:
Navigate to Stores > Configuration > Advanced > Admin > Custom Admin Path

  1. Не менее чем раз в 3-4 месяца менять пароль к административной части сайта. Статья о том, как установить надежный пароль.

  1. Не использовать в качестве логина слово admin.

  1. Настроить свою административную часть сайта так, чтобы количество запросов на сброс пароля в час ограничивалось тремя, а также задать блокировку учетной записи после максимального количества неудачных попыток входа в систему. Время блокировки должно быть минимум 30 минут. Эти параметры можно изменить в настройках:

Для Magento 1.x:
Navigate to System > Configuration > Advanced > Admin > Security
Для Magento 2.x:
Navigate to Stores > Configuration > Advanced > Admin > Security

  1. Включить CAPTCHA на форме входа в административную панель сайта. Это защитит от автоматических атак:

Для Magento 1.x:
Navigate to Stores > Configuration > Advanced > Admin > CAPTCHA
Для Magento 2.x:
Navigate to Stores > Configuration > Advanced > Admin > CAPTCHA

  1. Подключить двухфакторную аутентификацию для входа в административную часть сайта. Она реализована с помощью расширений, которые можно установить в Marketplace:

Для Magento 1.x:
www.amasty.com/magento-two-factor-authentication.html
www.xtento.com/magento-extensions/two-factor-authentication-enhanced-admin-security.html
Для Magento 2.x:
www.xtento.com/magento-extensions/two-factor-authentication-enhanced-admin-security.html   
www.amasty.com/two-factor-authentication-for-magento-2.html

  1. Изменить пароль доступа к базе данных (на хостинге). После этого не забыть изменить пароль на новый в файле настроек app/etc/local.xml. Для этого нужно проконсультироваться с хостинг-провайдером.

  1. Разрешить доступ к административной части сайта только “белому” списку IP-адресов. Необходимо помнить, что если в компании есть удаленные сотрудники, их IP-адреса также нужно включить в список. Рекомендуем проконсультироваться со своим хостинг-провайдером для внедрения данной настройки. Пример in Nginx configuration.

  1. Проверить сайт на наличие вредоносных скриптов. Как правило они размещаются в двух местах:

Для Magento 1.x:
System > Configuration > General > Design > HTML Head > Miscellaneous Scripts.
System > Configuration > General > Design > Footer > Miscellaneous Scripts.
Для Magento 2.x:
Content > Design > Configuration > Other Settings > Footer Content > Design > Miscellaneous HTML.
Content > Design > Configuration > Other Settings > Configuration > Other Settings > HTML Head > Scripts and Style Sheets.

Если вы заметили в указанных местах незнакомый скрипт, который включает в себя текст: “onepage|checkout” - нужно его удалить.

  1. Проверять базу данных на наличие сторонних и/или неизвестных учетных записей. Сделать это можно, открыв базу данных и осмотрев таблицу admin_user.

  1. Устанавливать расширения только из надежных источников, доверять установку профессионалам.

  1. Отслеживать все системные входы (FTP, SSH) на наличие неожиданных действий, загрузок или команд.

  2. Проверять сайт с помощью инструментов, рекомендуемых командой разработки Magento:

пример репорта MageReport.com

пример репорта Magento Security Scan Tool.


Дополнительно расскажем о мерах защиты веб-приложений для владельцев собственных серверов:

Настройте межсетевой экран, в том числе на блокировку неиспользуемых портов. При наличии доступа к серверу из локальной сети создайте демилитаризованную зону (DMZ), открыв доступ из внешнего мира только к портам 80 и 443. При отсутствии доступа к серверу из локальной сети используйте защищённые методы (SFTP, SSH и др.) для передачи файлов и управления сервером извне.

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

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


Заключение

Безопасность - это важнейшая составляющая качественного веб-приложения.

Как мы писали выше, в основе защиты  интернет-магазина лежат три составляющих, три “кита”:

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

  • Хорошо подобранное серверное окружение. Этот вопрос выходит за рамки нашего разговора, но мы планируем осветить это в дальнейшем.

  • Использование лучших практик безопасности. Надеемся, данная статья была полезна и вы обязательно воспользуетесь нашими рекомендациями для защиты вашего интернет-магазина магазина.


Использованная литература

  1. Безопасность Мадженто – находим и устраняем сторонний код
  2. Как защитить веб-приложение: основные советы, инструменты, полезные ссылки
  3. Тестирование безопасности: изнутри и снаружи
  4. Тестирование безопасности сайта
  5. The Ten Most Critical Web Application Security Risks
  6. Security Best Practices
  7. Protecting Your Site from Malware
  8. Тестирование безопасности или Security and Access Control Testing