Администратор. Базовый. Плагин защиты от спама и автоматических регистраций для CMS

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

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

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

Для начала создадим небольшую таблицу базы данных, в которой будут временно храниться ip посетителей и значения цифр, изображенных на картинке:

CREATE TABLE test (IP char(15) NOT NULL, Number char(3), PRIMARY KEY(IP))

Тип поля Number указывает, что у нас будут выводится по три цифры на каждой картинке.

Пусть у нас есть некая форма, корорая отправляет данные странице ok.php. Часть кода страницы, на которой расположенна форма будет выглядить следующим образом.

Код файла index.php:

Имя:
Текст:
Введите цифры на картинке: "; @mysql_connect("localhost", "login", "pass") or die; @mysql_select_db("dbname") or die("Не удалось соединится с базой данных"); mysql_query("INSERT INTO test VALUES("".$ip."", "".$x."")"); ?>

На форме расположенны два поля для ввода данных (Имя и Текст) и поле для ввода значения цифр с картинки (которое имеет имя intext)

$ip = $_SERVER["REMOTE_ADDR"];

Определяем ip посетителя страницы.

for ($i=0; $i<3; $i++) $x=$x.mt_rand(1,9);

При помощи функции mt_rand формируем три случайных числа от 1 до 9 и представляем их в виде строки $x.

echo "";

Ключевая строка. Выводим собственно картинку цифрами. Код файла pic.php описан ниже.

@mysql_connect("localhost", "login", "pass") or die("Не удалось соединится с хостом базы данных"); @mysql_select_db("dbname") or die("Не удалось соединится с базой данных"); mysql_query("INSERT INTO test VALUES("".$ip."", "".$x."")");

Соединяемся с базой данных и записываем ip и строку с цифрами в таблицу test.

Рисуем кнопку отправки данных и закрываем форму 🙂

Код файла pic.php:

Из того, что вы должны знать в этом коде: $rgb — цвет фона картинки, $textcolor — цвет цифр, выводимых на картинке. Как вы заметили, формироваться будет изображение в формате GIF.

Теперь осталось последнее, обработка данных полученных в форме в файле ok.php (куда эти данные собственно и передаются).

Код файла ok.php:

Опять же, определяем ip пользователя и сравниваем, записан ли такой адрес в таблицу test. Если да, проверяем:

mysql_result($res,0,0)!=$intext

те ли цифры пользователь ввел в форму в текстовое поле intext, которые были отображены на картинке и записаны возле его ip адреса в базе данных. Вот и все 🙂

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

9 февраля 2011 в 00:28

Как защитить форум на движке phpBB от автоматических регистраций

  • Спам и антиспам

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

PhpBB версии 3.* в базовой поставке содержит аж 4 варианта каптчи, которые можно предлагать пользователям при регистрации на форуме. Есть даже recaptcha , однако для автосабмиттеров, как показывает практика, это не помеха.

Эти программы знают как выглядят типовые точки входа на страницы регистрации различных форумных движков. Знание это основано на распознавании DOM-моделей вебстраниц, содержащих формы для регистрации новых пользователей, для постинга сообщений и так далее. То есть, например, в случае phpBB робот знает, что точка входа для регистрации находится по адресу /ucp.php?mode=register и что на этой странице есть кнопка вида:

Не вдаваясь в технические подробности, отмечу что найти и нажать эту кнопку в html-документе уже можно как минимум по id или по name.

Как только робот добирается до страницы с каптчей, он получает картинку каптчи и пытается распознать её. Тут могут применяться различные технологии, в зависимости от изощренности программы, от OCR-алгоритмов до простого распознавания каптчи живым человеком. Именно поэтому защита не срабатывает. Бан IP-адресов на форуме также абсолютно бесполезен, так как роботы спамят через многочисленные прокси сервера. В этом смысле нет разницы банить адреса или чистить новые авторегистрации, всё так или иначе сводится к потере времени.

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

Далее я приведу конкретный проверенный пример видоизменения страницы регистрации phpBB. Однако хотелось бы оговориться, что данный пост предлагает концепцию защиты от автоматических регистраций на форумах, а не конкретные способы. Всё зависит от рук и головы администратора форума. Желательно обладать элементарными знаниями html и css. Если читатели начнут массово копировать данный способ, то эту «эвристику» спамеры запрограммируют в свой софт и автоматические регистрации продолжатся.

Итак, выбираем настройках phpBB форума самую простую каптчу «CAPTHA без GD».
Выглядит в браузере (FF3) это так:

Если посмотреть на разметку страницы регистрации в районе картинки с каптчей, то она выглядит так:

Собственно атрибут src в теге img и содержит картинку с каптчей. Открываем фолдер с текущей темой, установленной на форуме. В моем случае это prosilver: /forum/styles/prosilver/template. В нём находим файл captcha_default.html. Если посмотреть в этот шаблон, то видно место, в котором формируется вышеупомянутая разметка:

Лёгким телодвижением усложним жизнь автосабмиттерам:

Выглядеть в браузере это будет теперь так:

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

Я уже писал обзорный пост возможностей, . Писал другую статью, о (сайтов и интернет-магазинов) на 1С-Битрикс. Этот пост будет из той же серии, об инструментах безопасности, которые доступны в Битриксе сразу «из коробки». Перечислю их все, скажу какой инструмент в какой редакции Битрикса доступен, кратко и не очень расскажу о назначении каждого.

Знаю по опыту работы с клиентами, что вопрос безопасности далеко не последний, который их интересует. Правда, клиенты обычно не разбирается в деталях и просто боятся хакеров, взлома сайта или что сайт сломается. Но в целом в своих опасениях правы.

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

Сначала выводы

Статья получилось большой, да и тематика скучновата. Поэтому я выводы решил написать в самом начале, чтобы увеличить шансы, что вы их прочтете. Так вот, глядя на объем этого поста, может показаться, что во всем разнообразии инструментов безопасности Битрикса легко запутаться. Но это не так. Все они достаточно простые.

Для рядового пользователя, который не слишком разбирается в технических деталях разработки сайтов, достаточно знать, где смотреть отчет по текущей безопасности сайта, уметь запускать сканер безопасности и монитор качества (и то и другое делается в один клик). Есть места, где можно посмотреть единые сводки - просто и понятно. Таким образом, не надо быть спецом по безопасности, чтобы мониторить безопасность в Битриксе так же как не нужно быть экспертом по веб-аналитике, чтобы смотреть посещаемость своего сайта в Лайвинтернете или Яндекс.Метрике.

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

Поехали.

Проактивная защита против взлома сайта

В битриксе есть целый ряд технических инструментов и организационных мер в безопасности, которые объединены под названием «Проактивная защита».

Все инструменты, перечисленные в этом разделе, доступны начиная с редакции 1С-Битрикс «Стандарт» и выше (в редакции «Старт» их нет). Для некоторых требуется модуль «Веб-аналитика», об этом говорится отдельно.

Проактивный фильтр (Web Application Firewall)

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

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

Сканер безопасности веб-сайта

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

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

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

Отличный инструмент, чтобы проверить, все ли порядке с безопасностью на вашем проекте. Аналогичная проверка, простейший аудит безопасности сайта и отчет с рекомендациями от специалистов в этой области будут стоить от 10-15 т.р. и выше.

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

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

Еще сканер умеет искать потенциальные уязвимости в PHP-коде проекта. Кому интересно как это реализовано, можно подробнее прочитать в блоге Битрикса .

Проверка на безопасность кода PHP на сайте.

Для большинства пользователей, которым технические детали не слишком важны, скажу главное - это инструмент для разработчика, который, вполне может что-то забыть предусмотреть в плане безопасности веб-проекта или просто не знать. Этот инструмент позволяет выявлять возможные проблемы, показывает их чтобы можно было устранить. А вот чтобы разработчик не забыл им воспользоваться, да и не упустил из вида массу других мелочей, относящихся не только к безопасности, в 1С-Битрикс присутствует «Монитор качества» , о нем тоже будет сказано в этой статье.

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

Веб-антивирус. Защищает сайт от вирусов.

Самый простой способ защитить сайт от вируса - использовать антивирус на своем компьютере. Заражение сайта вирусом обычно происходит от компьютера администратора, который имеет к нему доступ, а не потому, что сайт много времени сидит в интернете:-). Поэтому основная задача веб-антивируса - уведомить администратора сайта о заражении. Вирус на сайте означает что вирус возможно есть и на компьютере администратора, и нужно принять меры.

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

В зависимости от настроек, которые будут в нем выставлены, Веб-антивирус, может либо только информировать администратора сайта о подозрении на наличие вируса, либо автоматически выявлять в HTML коде сайта опасные участки и «выпиливать» подозрительные iframe и javascript. Есть возможность добавлять исключения, чтобы антивирус перестал срабатывать на безопасные, но подозрительные (по его мнению) части кода.

Проще говоря, веб-антивирус делает большое доброе дело - блокирует распространение вируса вашим интернет-магазином.

Что это значит на практике? Это значит что ваши посетители не получат от своего антивируса или браузера предупреждение что вашему сайту нельзя доверять. И это хорошо!

Сколько раз вы сами сталкивались с тревожным сообщением «Этот сайт угрожает безопасности вашего компьютера» или «У этого сайта проблемы с безопасностью». Кроме того, поисковые системы не исключат ваш сайт из выдачи за распространение вирусов. А именно так бывает, если сайт долгое время заражен.

Стоп-лист . Забанить мерзавцев!

Иногда хочется заблокировать (забанить) некоторых пользователей или ботов, чтобы запретить доступ к сайту. Это бывает полезно, если пользователи делают тестовые заказы с непонятной целью, систематически пишут неадекватные комменты, спамят рекламой или создают излишнюю активность. Для таких случаев в 1С-Битрикс предусмотрен «Стоп-лист».

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

У стоп-листа есть несколько полезных возможностей:

  • Чтобы не забыть разбанить пользователя, а это бывает полезным, поскольку у многих IP-адреса динамические и надолго за одним и тем же юзером не закрепляются, можно выставлять время, в течение которого будет действовать блокировка, после чего снимется автоматически.
  • Можно выводить заблокированным посетителям произвольное сообщение, например «Ваш IP-адрес был заблокирован, в связи с повышенной активностью». Или что на мой взгляд интереснее, перенаправлять на сторонние сайты. К конкурентам, например. Пусть ведут свою деструктивную деятельность у них.
  • Доступ посетителям и ботам можно ограничивать не только по IP-адресу, но и по маске сети и UserAgent`у (при наличии модуля «Веб-аналитика»), что особенно полезно для блокирования нежелательных ботов.

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

Функционал стоп-листа связан с другими инструментами безопасности (например, с «Проактивным фильтром» или «Контролем активности») это дает возможность блокировать нарушителей (в том числе автоматически), которых выявили другие инструменты.

Контроль подозрительной активности на сайте. Кто здесь?

Много хорошо - плохо. Поэтому излишнюю активность на сайте, особенно исходящую от ботов, нужно блокировать. Конечно, вреда особого от нее нет, но и пользы тоже. Например, если ваш сайт размещен на обычном виртуальном хостинге, который легко справляется с 500-700 посетителей в сутки, то попытка выкачать целиком весь ваш сайт, в 10 потоков, используя TeleportPro, вполне может затруднить его работу для других пользователей или привести к сбою. Не говоря уже о том, кому и с какой целью понадобилось выкачивать ваш сайт.

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

В настройках можно выставить ряд параметров: Какую активность считать «излишней», после которой принимать меры, на какое время блокировать источник активности, какое сообщение ему выводить или куда редиректить.

Как видите, штука вполне полезная и найдет применение в работе сайта. Но к сожалению этот инструмент доступен только в редакциях, с модулем «Веб-аналитика» («Эксперт» и «Бизнес»).

Защита административной части

Сердце сайт - административная часть. Это командный центр, откуда ведется управление Скайнетом проектом. Получив доступ к админке, злоумышленник (или просто криворукий сотрудник-экспериментатор) может натворить много бед, которые долго придется разгребать. Чем сложнее пароль, тем сильне хочется сохранить его на рабочем столе в файле «Пароль от сайта.txt », или в браузере, откуда его тоже обычно не составляет труда достать.

Защита административной части по IP-адресу - еще одна линия обороны. Для этого и предназначен этот инструмент. Его использование делает бессмысленными XSS атаки на компьютер администратора / редактора сайта / контент-менеджера. Кража пароля тоже ничего не даст.

Настройка запрета доступа к административной части.

Защита административной части позволяет открыть доступ для управления сайтом только с определенных IP-адресов или диапазонов.

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

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

Контроль целостности файлов

В 1С-Битрикс, присутствует возможность отслеживать наличие изменений в файлах, как ядра системы, так и публичной части сайта.

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

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

Защита сессий

Если злоумышленник получает доступ к авторизованной сессии администратора, то сможет получить доступ и к сайту. Чтобы обезопасить сайт от подобного рода взломов, в 1С-Битрикс предусмотрена защита сессий, использование которой делает кражу сессии бессмысленной.

Помимо функционала защиты сессий, имеющегося в настройках групп пользователей, инструмент «Защита сессий» позволяет хранить сессии пользователей в базе данных, что исключает доступ к ним в случае неверных настроек безопасности на виртуальном хостинге. Кроме того, можно задать время жизни идентификатора сессии, чтобы он изменялся через заданные промежутки времени. Тогда даже украденная сессия перестанет быть актуальной через этот промежуток времени. По умолчанию выставлена 1 минута.

Защита от показа сайта во фреймах

Простейший пример - если вы посмотрите на источники переходов на ваш сайт, то увидите, что некоторые ссылки это ваш собственный сайт только с другим адресом. Это и есть открытие во фрейме. Есть сервисы типа snip.ly , которые позволяют ставить ссылки через них, и показывать на стороннем сайте рекламу. Например, если кликнуть по этой ссылке , то вы перейдете в бложик Тёмы Лебедева, где внизу будет моя реклама. При желании к этой рекламе можно будет прикрутить аватарку Тёмы, тогда эффективность будет еще выше.

Чтобы подобные штуки нельзя было провернуть на вашем сайте, в Битриксе есть защита от фреймов.

А вот что об этом пишут сами парни из Битрикса:

Запрет отображения страниц сайта во фреймах других доменов позволяет защитить проект от Clickjacking"a (подсовывание невидимого фрейма с целевого ресурса для получения клика от посетителя), Framesniffing"а и значительно уменьшает вероятность Cross-site scripting атак.

Защита редиректов от фишинга

Фишинг - разновидность интернет-мошенничества.

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

Перенаправлением на другой сайт, заведомо безопасный (можно задать в настройках). Там же в настройках, можно задать текст с предупреждением пользователя о возможной попытке фишинга.

Хосты/домены

Режим предотвращает подмену HTTP-заголовка Host. Проще говоря, не дает открывать ваш сайт по любым адресам, отличающимся от разрешенных вами. Можно настроить либо блокирование таких попыток открытия сайта, либо переадресовывать посетителя на нужный вам, разрешенный адрес.

Панель безопасности

Инструментов безопасности в Битриксе много, чтобы упростить настройку и определить текущее состояние каждого, предусмотрена Панель безопасности. Это раздел, в котором на одной странице сведена воедино и структурирована вся информация о текущей безопасности сайта в настоящий момент. Здесь же, если необходимо, даются рекомендации по улучшению безопасности. Сразу приведена ссылка на соответствующий инструмент, который нужно включить или настроить.

Чтобы определить уровень безопасности созданного сайта, достаточно зайти в панель безопасности.

Безопасная авторизация без SSL

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

В Битриксе, есть возможность обезопасить авторизацию без необходимости подключать SSL. Для этого в административной панели, в настройках Главного модуля, нужно включить эту возможность, поставив соответствующую галочку. После этого пароли станут шифроваться по алгоритму RSA с ключом 1024 бит и в таком виде передаются на сервер. Взломать их будет невозможно.

Журнал вторжений

В 1С-Битрикс, все необычные или злонамеренные действия автоматически заносятся в Журнал вторжений. Это дает администратору сайта возможность выявлять попытки атак как сразу, в момент проведения (например, получив соответствующее уведомление на емейл) и блокировать IP-адрес злоумышленникам, так и просматривая события в журнале позже. В журнале в зависимости от основных типов атак делаются соответствующие записи: внедрение SQL, атаки через XSS, попытка внедрения PHP. Журнал вторжений отличный инструмент для администратора сайта, позволяющий проводить профилактику и предупреждать попытки взлома анализируя записи.

Журнал вторжений.

Двухэтапная авторизация и одноразовые пароли

Для входа на сайт традиционно используются логин и пароль. Но минус их в том, что стащить их особой сложности не составляет. Есть клавиатурные шпионы, вирусы, которые могут «подсмотреть» пароль и передать злодеям. Пароль может быть украден из запомненных в браузере, подслушан в незащищенных wi-fi сетях.

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

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

«Брелоки» для генерации одноразовых паролей.

Защита сайта от DDoS

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

Совсем недавно, в 15-й версии в Битриксе появилась новая возможность, быстро подключить защиту от DDoS-атак, предоставляемую сервисом Qrator. Сделать это можно как из админки, так и со специальной страницы на сайте Битрикса (если админка Битрикса у вас на сайте будет недоступна из-за DDos-атаки). В лицензию входит бесплатно 1 защита сайта от ddos в год сроком на 10 дней. Больше уже за деньги. Подобный сервис будет интересен, прежде всего крупным проектам. Но говоря про инструменты безопасности, встроенные в Битрикс, не сказать о нем нельзя.

Важные мелочи

Есть еще мелочи, которые относятся к безопасности, но не такие крутые, как те что я описывал выше. Но поскольку совсем не сказать о них в этой статье нельзя, перечислю их, не вдаваясь в подробности. Всё перечисленное в этом разделе доступно в Битриксе начиная с младшей редакции «Старт».

Политики безопасности сайта для групп пользователей

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

Кроме того, для каждой группы пользователей можно настроить свою политику безопасности: Привязать сессию к IP-адресу или сети по маске, определить срок активности сессии и время пока авторизация будет оставаться активной, определить, сколько одновременных авторизаций может быть выполнено для одного пользователя, задать длину пароля и его сложность.

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

Журнал событий

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

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

Настройка в Главном модуле параметров журнала событий.

Настройки параметров для журнала событий в инфоблоке.

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

Монитор качества

Нельзя отрицать, что безопасность сайта, равно как и другие его характеристики (например, быстродействие), зависят во многом от качества разработки. Чтобы помочь владельцу сайта оценить, насколько хорошо сделан его проект, все ли важные нюансы были учтены и/или включены и настроены разработчиком, в битриксе реализован этот инструмент.

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

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

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

Детальная настройка CAPTCHA

Капча (CAPTCHA) – старый добрый инструмент защиты от действий ботов. У стандартной капчи есть большой минус, они легко решаются в полуавтоматическом режиме. В 1С-Битрикс есть возможность гибко настраивать капчу. Задавать массу параметров в ее отображении, изменять шрифт, определять какие символы будут выводиться в капче, а какие нет. Такая настройка очень удобная. Например, отличный вариант - капча с кириллицей. А чтобы пользователи не путались, какую буквe им нужно написать, английскую или русскую, можно оставить только цифры и буквы алфавита, которых нет в латинице. Часто этого бывает достаточно, чтобы обмануть и ботов и индусов, которые промышляют решением капч.

Настройка параметров отображения капчи.

Защита от автоматических регистраций

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

Защита от подбора пароля

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

Работоспособность сайта

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

Все перечисленные в этом разделе возможности, доступны в Битриксе начиная с младшей редакции «Старт».

Резервное копирование

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

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

Свернуть весь сайт в архив

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

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

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

Автоматическое регулярное резервное копирование

Чтобы сократить ручную работу и человеческий фактор («забыл сделать очередной бакап»), в Битриксе можно настроить автоматическое резервное копирование по расписанию.

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

Автоматический backup в «облако»

Но у хранения резервных копий, там же где лежит сайт, есть минус - в случае серьезной проблемы на сервере, резервная копия тоже будет потеряна. Поэтому хранить резервную копию нужно отдельно от сайта. Это значит, что время от времени нужно копировать резервные копи на другой сервер / хостинг / в облако или к себе в компьютер.

Правило надежного бекапа: «Хранить бекап нужно не на том сервере, где лежит то, что бекапишь».

Чтобы снять с пользователя эту рутину, в Битриксе есть возможность делать резервные копии сразу в облако. Всё то же самое, что описано выше, но после завершения архивации, копия автоматически заливается в облачное хранилище Битрикса или внешнее подключенное к сайту облачное хранилище, например Amazon S3. Плюс для рядового пользователя в том, что облачное хранилище встроено в Битрикс и ничего подключать и настраивать не нужно.

В своем облаке 1С-Битрикс выделяет бесплатно для каждой лицензии определенный объем места под хранение резервных копий:

  • 1 Гб. Для редакции Старт,
  • 2 Гб. Для «Стандарт»,
  • 6 Гб. Для редакции «Эксперт»,
  • 4 Гб. Для «Малого бизнеса»
  • 10 для Бизнес-редакции.

Не слишком много, но этого достаточно чтобы держать в безопасности 1-2 последних резервных копии. При желании бесплатное место в облаке битрикса можно расширить просто докупив его. Или подключить стороннее облако.

Поддержка облачных хранилищ

Напрямую к безопасности это отношения не имеет, но раз уж начал говорить про облачные хранилища, нужно сказать, что облака подключаются без проблем и работают не только для резервного копирования. За это отвечает специальный модуль, доступный во всех редакциях, начиная со «Старт». После подключения облака к Битриксу, можно настроить в нем хранение файлов любых типов. Например, чтобы все видео, загружаемое на сайт, автоматически размещалось в облаке и для пользователя отдавались именно оттуда. Для некоторых задач это полезно, позволяет разгрузить хостинг и ускорить загрузку инфы посетителями.

Инспектор сайтов

Облачный сервис от 1С-Битрикс, который позволяет мониторить несколько простых, но важных параметров на сайтах и интернет-магазинах, которые работают под управлением битрикса:

  • Мониторит работу сайта. Открывается сайт или нет, сколько времени простаивал. Яндекс.Метрика это тоже делает, но этот сервис показывает инфу более детально.
  • Проверяет когда закончится домен и уведомляет по почте. Регистратор тоже уведомляет, но бывают случаи когда лицо ответственное за сайт и тот на кого зарегистрирован домен - разные люди. Тогда ответственный за сайт, может не получить емейла от регистратора домена. Чтобы такого не произошло, его уведомит инспектор сайтов.
  • Срок истечения лицензии 1С-Битрикс. Казалось бы, не слишком важно. На самом деле экономит деньги. Ведь приобретение льготного продления составляет 20% от стоимости лицензии. Главное, успеть его приобрести в течение 30 дней после окончания лицензии. Не успели, в следующий раз придется оплачивать уже 60% от стоимости. Поэтому важно не пропустить нужную дату.
  • Проверять отвечает ли сайта по протоколу https.
  • Срок действия SSL сертификата. Проверит и напомнит, когда придет время продлевать SSL-сертификат.

Проставляем галочки что хотим инспектировать.

Так выглядят результаты инспектирования.

Заключение

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

Все выводы по этой статье я вынес в начало. Повторять их здесь нет смысла. Надеюсь, эта статья помогла вам. Если да, сделайте репост, мне будет приятно:-)


Роберт Басыров

Сложность урока:

4 уровень - сложно, требуется сосредоточится, внимание деталям и точному следованию инструкции.

Недоступно в редакциях:

Ограничений нет

Несколько способов борьбы с автоматической регистрацией ботов.




Добавить в форму регистрации невидимое поле и скрыть его с помощью CSS. Скрывать с учётом того, что особо продвинутые боты обнаруживают display: none . Невидимое поле нужно назвать как-нибудь привлекательно для ботов в контексте содержания сайта: Компания, telefpone. К этому полю можно поставить знак * , - бот решит что без его заполнения не отправится форма.

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

Другой вариант: подменить поле Имя. Для бота будет стандартное, для пользователей - названное вами, а при регистрации менять значения. Алгоритм регистрации не изменится, бот будет по прежнему вводить поле "имя(стандартное)" и не проходить регистрацию.



Защита по IP

Во-первых , есть вероятность отсеять простого человека который:

  • имеет прокси с этим IP,
  • получил динамический IP который есть в базе (очень малая вероятность),
  • человек, случайно попавший в базу.

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


Организационные меры защиты

Возможен такой вариант: пользователь после регистрации попадает в группу Новички с минимальными правами. Он может только заполнить профиль и ответить на форуме. Личные сообщения, постинг ссылок, добавление файлов, открытие новой темы и прочего ему запрещено. Как только он оставит на форуме N сообщений (на выбор администратора), он переходит в группу зарегистрированные пользователи , которая имеет базовые пользовательские права.

Можно создать и группу Активные пользователи , которые будут иметь расширенный набор прав и туда пользователь попадёт после набора M сообщений.

Штатно в Bitrix Framework такое реализовать не получится, нужны некоторые доработки. Пример возможного кода:

//при добавлении сообщения форума, если количество сообщений больше FLS_NUM_POSTS, //то припишем пользователя к специальной группе define("FLS_NUM_POSTS", 50); define("FLS_FORUM_GROUP", 27); AddEventHandler("forum", "onAfterMessageAdd", "FlsOnForumMessageAdd"); function FlsOnForumMessageAdd($ID, $arFields) { $arGroups = CUser::GetUserGroup($arFields["AUTHOR_ID"]); if(!in_array(FLS_FORUM_GROUP, $arGroups)) { $arProfile = CForumUser::GetByUSER_ID($arFields["AUTHOR_ID"]); if(intval($arProfile["NUM_POSTS"]) >= FLS_NUM_POSTS-1) { //добавим в группу $arGroups = FLS_FORUM_GROUP; //запишем новую группу CUser::SetUserGroup($arFields["AUTHOR_ID"], $arGroups); //обновим сессию текущему пользователю if($GLOBALS["USER"]->GetID() == $arFields["AUTHOR_ID"]) CUser::SetUserGroupArray($arGroups); } } }

В качестве организационных мер можно предусмотреть:


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


Самый "тяжёлый" способ. Не в плане технической реализации, а в плане удобства для пользователей. Суть проста: выполнение регистрации в несколько этапов.

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

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





Top