Блокировать доступ к сайту IP адресу, и как узнать IP зарегистрированного пользователя

Drupal: 
Уровень сложности: 

Drupal предоставляет администратору функционал для блокировки пользователей, ip-адресов, ботов, спамеров, сервисов. Это необходимо, когда вы хотите защитить сайт от неправильного поведения людей, ограничить доступ к сайту, блокировать СПАМ. Чтобы ограничить доступ, нужно знать IP и добавить этот IP в список блокированных, бан, блок-лист.
Тут рассматривается вопрос: как не показывать сайт полностью для определённых IP. Также как блокировать функции публикации и страницу пользователя.

Как в Drupal 7 блокировать доступ к сайту для IP

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

Sorry, 200.200.99.99 has been banned.

В ядре Друпал для этого предусмотрена функция блокировки IP, которая настраивается так:

  1. Откройте Конфигурация - (в разделе Пользователи) - Блокировать IP, то есть адрес: /admin/config/people/ip-blocking
  2. Впишите желаемый адрес и нажмите добавить
    После этого IP появится в списке блокированных, сайт не будет отображаться на компьютере с этим IP.

Узнать IP вашего компьютера: http://myip.ru. Ip адрес ваш, сайта, город по ip: http://2ip.ru
Зайти на сайт через прокси, анонимайзер: http://anonymouse.org

Как проверить как выглядит сайт для блокированных IP

Для пробы вы можете узнать IP анонимайзера, зайдя через анонимайзер на myip.ru. Далее добавить этот IP в блокированные и открыть сайт через аннимайзер - должно показаться сообщение: извините ip xxx.xxx... заблокирован.

Как блокировать зарегистрированного пользователя

Во-первых, нужно перевести учётную запись в статус "заблокирован", для этого откройте станицу Пользователи, отметьте галкой нужного пользователя и выберите действие сверху "Блокировать отмеченных пользователей". Или иначе: откройте страницу пользователя, нажмите "редактировать" и в поле Статус выберите "Заблокирован".
Такая блокировка ограничит пользование сайтом, но не запретит просмотр сайта. Страница пользователя не будет видна другим, хотя все его публикации будут видны, но добавлять новые публикации, оставлять комментарии или делать заказы пользователь не сможет.
Чтобы не показывать ваш сайт Интернет-пользователю, нужно блокировать его IP.

Как узнать IP зарегистрированного пользователя

Есть разные способы, самый быстрый - составить запрос к базе данных.
Для этого обязательно нужно включить модуль Statistics, если он был выключен, тогда дождитесь, пока пользователь снова зайдёт на сайт, тогда в таблице sessions появится запись, содержащая его IP.

  1. Узнайте ID пользователя - для этого откройте его страницу и нажмите "редактировать" - в адресной строке должен быть id пользователя, например так user/87/edit
  2. Далее, чтобы узнать IP, откройте PHPMyAdmin, таблицу sessions
  3. Cоставьте такой запрос выборки данных для этого id пользователя:

SELECT * FROM sessions WHERE uid=87

где 87 - это id пользователя.
4. В предложенных результатах, если такие будут, вы сможете узнать все IP, с которых авторизовался пользователь, в столбце hostname

Если IP пользователя меняются или он авторизуется с разных устройств или использует разные браузеры, провайдеры, тогда будет несколько записей. Все эти IP нужно добавить в Блокированные IP или использовать модуль IP Ranges.
Если результатов не будет, тогда включите модуль ядра Statistics и ожидайте, пока в таблице accesslog появятся строки с uid - id пользователя - и hostname - IP его компьютера.

Все блокированные вами адреса таким образом хранятся в базе данных в таблице blocked_ips.

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

Чтобы опять предоставить доступ к сайту, откройте Конфигурация - Блокировать IP и удалите IP из списка блокированных.

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

IP address manager - отображает IP адреса зарегистрированных пользователей на странице Пользователи.
Statistics - модуль из ядра Drupal 7, который собирает IP всех пользователей, которые открывают страницы сайта.
User IP Log - записывает IP пользователей при авторизации и отображает в Отчёты - User IP Log.
Views Watchdog - добавляет функционал Представлениям для отображения событий системного журнала в удобном виде. Вы сможете создавать Представления с полями из журнала событий watchdog.

Настройки Watchdog, например, записываемые события и количество записей в базе данных, производятся тут: Конфигурация - (раздел Разработка) - Логи и ошибки, то есть /admin/config/development/logging.

Что делать, если IP пользователя меняется, как блокировать все его IP?

Для этого могут быть два пути решения:

  1. Блокировать его маску сети, используя модуль IP Ranges
  2. Через куки

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

Рубрика: