Как обезопасить свой веб-сайт?

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.


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

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

Можно выделить несколько основных способов защитить свой сайт:

  • обеспечить защиту от DDoS-атак;
  • подключить SSL-сертификат;
  • использовать надёжный хостинг;
  • использовать безопасные плагины/библиотеки/фреймворки/CMS (далее – «сторонние модули»);
  • применять существующие техники защиты от SQL-инъекций и XSS-атак;
  • обеспечить ведение журнала веб-сайта и мониторинг событий безопасности;
  • производить регулярное резервное копирование веб-сайта и всех важных данных;
  • использовать надёжные и сложные пароли, а также защиту от перебора паролей;
  • в случае наличия административной панели, с помощью которой происходит управление содержимым веб-сайта, необходимо изменить стандартный адрес входа и обеспечить контроль доступа.

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

Надёжный хостинг и SSL


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

Защита от DDoS


Если ваш хостинг-провайдер предоставляет услуги защиты от DDoS-атак или вы пользуетесь услугами анти-DDoS-сервисов, то этот вопрос можно считать закрытым, но почему бы не усилить защиту и не организовать её своими руками, что несомненно является трудоёмкой задачей и подразумевает одновременное использование следующих техник: если в качестве веб-сервера используется Apache, то необходимо поставить перед ним кеширующий прокси – Nginx или Lighttpd, а лучше на фронтенде использовать Nginx, но с несколькими надстройками (ограничить размеры буферов и соединения в Nginx, настроить тайм-ауты и т.п.; использовать модуль testcookie-nginx; использовать фильтрацию по URL и отдавать нестандартный код 444, который позволяет закрыть соединение и не отдавать ничего в ответ); в некоторых случаях использовать блокировку по географическому признаку; автоматизировать процесс анализа логов веб-сайта, обращая особое внимание на объём трафика, время ответа сервера, количество ошибок и количество запросов в секунду.

Безопасность сторонних модулей


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

SQL-инъекции и XSS-атаки


Рекомендация, относящаяся к обеспечению защиты от SQL-инъекций и XSS-атак, требует самого подробного объяснения, ведь целью злоумышленников здесь являются конкретные данные из базы данных (SQL-инъекция) и пользовательские данные (XSS-атака). Стоит также понимать, что вопросы, связанные с SQL-инъекциями, затрагивают обширный раздел, посвящённый обеспечению безопасного доступа ко всем хранилищам данных, включая реляционные базы данных и базы данных NoSQL, и включают вопросы безопасности запросов (необходимо избегать нелегитимных входных данных в составе SQL-команд и наилучшим решением является использование параметризованных запросов, которые можно применять к конструкциям SQL/OQL и хранимым процедурам), конфигурации (необходимо убедиться в корректной настройке имеющихся средств обеспечения безопасности СУБД и платформы, на которой она установлена), аутентификации (должна выполняться по защищенному каналу) и соединений (в связи с существованием нескольких способов взаимодействия с базой данных (посредством службы или API), необходимо обеспечить безопасность соединений с помощью шифрования и аутентификации).

Что касается межсайтового выполнения сценариев (XSS-атака), то в данном случае последствия средней степени тяжести могут нанести отражённая XSS или XSS на основе объектной модели документа (DOM), а к серьезным последствиям может привести межсайтовое выполнение хранимых сценариев с исполнением кода в браузере пользователя с целью кражи учётных данных, перехвата сессий или установки вредоносного программного обеспечения. Главной мерой защиты в данном случае является экранирование (добавление определённых комбинаций символов перед символами или строками для недопущения их некорректной интерпретации), кодирование данных (преобразование определённых символов в комбинации символов, которые не представляют опасности для интерпретатора) на стороне сервера и использование набора HTTP-заголовков, в частности, Set-Cookie с параметрами HttpOnly и Secure, а также X-XSS-Protection со значением 1.

Общей мерой защиты, используемой для предотвращения внедрения SQL-кода и межсайтового выполнения сценариев, является проверка всех входных данных на соответствие синтаксической и семантической норме. Под синтаксической нормой следует понимать полное соответствие входных данных ожидаемой форме представления, а семантическая норма свидетельствует о том, что входные данные не выходят за пределы конкретного функционала.

Журналирование и мониторинг


Рекомендация, относящаяся к журналированию всех событий и мониторингу событий безопасности, уже упоминалась при рассмотрении методов защиты от DDoS-атак, но в данном случае рассматривается более широкая сторона вопроса, связанная с обнаружением атак и противодействием им, а также расследованием уже случившихся инцидентов безопасности. Таким образом, кроме стандартных средств журналирования, предоставляемых веб-сервером, необходимо убедиться в регистрации времени события и идентификатора пользователя, а также потенциально опасной активности, характерной для вашего веб-сайта. В случае обнаружения вредоносной активности ваше приложение должно заблокировать пользовательскую сессию или заблокировать по IP-адресу, в общем принять меры и сообщить об этом администратору. Тут уже речь идет о таких средствах, как WAF или IDS/IPS.

Бэкапы


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

12345 или qwerty?


Рекомендация по использованию надежных и сложных паролей не только и не столько про пароли, а в целом про аутентификацию и управление сессиями пользователей. Существует три уровня аутентификации и использование только паролей относится лишь к первому – самому простому уровню (второй – многофакторная аутентификация; третий – аутентификация на основе шифрования). Однако даже здесь есть ряд требований к самим паролям, механизму восстановления пароля, а также к безопасному хранению паролей. Управление сессиями позволяет контролировать состояние аутентификации пользователя для работы с веб-сайтом без повторной аутентификации. К сессиям также предъявляются требования к созданию и завершению.

Защита административной панели


Заключительной рекомендацией является защита административной панели веб-сайта, ведь она является одним из слабых мест в общей системе из-за обширного функционала, связанного с добавлением/редактированием постов и страниц, работой с файлами и многим другим. Поэтому важным условием является обеспечить надлежащий контроль доступа, а также максимальную скрытность от злоумышленников местонахождения административной панели, реализуемую простым переносом адреса на нестандартный и максимальной защитой данной точки входа посредством защиты от перебора, фильтрации по IP-адресам и т.д. При создании системы контроля доступа следует придерживаться следующих принципов: отправка всех запросов через систему контроля доступа; запрет доступа по умолчанию (т.е. отклонять запрос, если он не был разрешен специально); минимальные привилегии для всех пользователей, программ или процессов; отказ от использования ролевой модели управления доступом, жёстко заданной в коде; регистрация всех событий, связанных с контролем доступа.

Вывод


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



На правах рекламы


VDSina предлагает надёжные серверы с посуточной или единоразовой оплатой, каждый сервер подключён к интернет-каналу в 500 Мегабит и бесплатно защищён от DDoS-атак!

Источник: https://habr.com/ru/company/vdsina/blog/503772/


Интересные статьи

Интересные статьи

Вам когда-нибудь было интересно узнать о том, как работает сокращённое CSS-свойство flex? Оно позволяет задавать значения свойств flex-grow, flex-shrink и flex-basis. Я обратил вниман...
Это начало истории о том, как сначала математика вторглась в геологию, как потом пришёл айтишник и всё запрограммировал, создав тем самым новую профессию «цифрового геолога». Это ра...
Вот представьте, купили вы автомобиль, что вы будете делать? Своевременно проводить ТО, искать АЗС, где нет палёного бензина, мыть, полировать, покрывать воском  и всякими там нано-растворами и з...
Тема статьи навеяна результатами наблюдений за методикой создания шаблонов различными разработчиками, чьи проекты попадали мне на поддержку. Порой разобраться в, казалось бы, такой простой сущности ка...
Реализация ORM в ядре D7 — очередная интересная, перспективная, но как обычно плохо документированная разработка от 1с-Битрикс :) Призвана она абстрагировать разработчика от механики работы с табл...