[WIKI]Блокировка доступа к сайту по IP в .htaccess - Geek-Speak

[WIKI]Блокировка доступа к сайту по IP в .htaccess

Главная Форумы WiKi [WIKI]Блокировка доступа к сайту по IP в .htaccess

  • В этой теме 0 ответов, 1 участник, последнее обновление 1 год назад сделано E-tec.
Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Автор
    Сообщения
  • #2057
    E-tec
    Хранитель

      Предыстория

      Не так давно появился у меня на сайте бот который постит рекламу в комментариях к записям на главной странице. Комментарии для не зарегистрированных пользователей у меня отключены, но видимо в wordpress есть какая-то «дыра» которая обходит этот запрет. И понятное дело, что комментарии ни кто не увидит т.к. они должны пройти мою модерацию, но все же самому удалять комменты от одного и того же IP адресата, немного напряжно, по этому я решил просто запретить полностью доступ к своему сайту этому боту. По сути вариантов реализации задачи есть множество, по я решил сделать это через .htaccess.

      Немного теории

      Файл .htaccess есть у каждого сайта в корне CMS по этому создавать его не нужно просто идем в папку и редактируем его. Запретить доступ к сайту по IP при помощи файла .htaccess можно используя операторы allow и deny. Основная директива, которая используется при ограничении доступности сайта – order. Ее синтаксис следующий:

      order deny,allow
      #Или
      order allow,deny

      Конструкция order deny,allow начинает код и показывает, какие параметры будут использованы для ограничения разрешений на просмотр.

      1. Оператор allow дает разрешение.
      2. Оператор deny запрещает.

      В зависимости от того в каком порядке стоят операторы в коде меняется логика работы сервера.

      1. deny,allow сообщает серверу о закрытии доступа всем IP-адресам кроме разрешенных
      2. allow,deny напротив открывает доступ для всех IP-адресов кроме запрещенных.

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

      Ограничение доступа к сайту и его разделам

      Место расположения файла .htaccess зависит от того, какой раздел сайта или его файл необходимо закрыть. В wordpress этот файл находится в корне директивы public_html, который закроет доступ ко всему сайту, что нам и нужно! Но сначала рассмотрим какие варианты ограничения доступа есть вообще.

      Полное закрытие сайта

      Для того чтобы полностью закрыть сайт от посещений и возможности просмотра его содержимого в .htaccess вносится следующий код:

      order deny,allow
      deny from all

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

      Файл .htaccess для этой операции необходимо расположить в корне сайта.

      Запрет доступа для целевого IP-адреса

      Запрет для конкретных IP-адресов реализуется при помощи данного кода:

      #Запрет доступа к сайту с IP 298.169.132.24
      order allow,deny
      deny from 298.169.132.24

      Файл .htaccess по-прежнему должен находится в корне сайта. Вариацию этой блокировки мы и будем использовать!

      Разрешение только для конкретных IP-адресов

      Сайт можно полностью закрыть, оставив разрешение только для конкретных IP-адресов. С этой целью в файле .htaccess, расположенном в корне сайта, прописываются следующие строки:

      order deny,allow
      deny from all
      #Список IP, с которых доступ разрешен
      allow from 197.143.50.248 193.478.457.10

      Разрешенные IP прописываются в коде через пробел.

      Закрытие доступа по маске

      В определенных ситуациях ограничение необходимо сделать по маске. Для выполнения этой операции используется код:

      #Неполный адрес
      198.69.
      #Полные адреса, соответствующие первому
      198.69.132.24
      198.69.136.89
      198.69.1.8
      #Запрет доступа к сайту по маске
      order allow,deny
      allow from all
      deny from 198.69.

      Усиление защиты административной части сайта

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

      #Указываем папку, к которой запрещаем доступ по имени хоста и его IP-адрес
      < directory /root-admin/ >
      order deny, allow
      deny from all
      #Адреса записываются через пробел
      allow from 198.69.144.98 198.69.144.94

      Ограничение доступа к целевой папке

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

      deny from all

      Ограничение доступа к определенному файлу на сайте

      Нередко возникают ситуации, при которых необходимо закрыть возможность просмотра не сайта или папки, а только определенного файла или группы файлов. Для этого используются директивы – files и filesmatch. Они несколько похожи на мета-теги, используемые для разметки HTML-кода.

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

      «Пустой» код выглядит следующим образом:

      Внутри этой конструкции прописываются необходимые условия. Как пример приведем ограничение просмотра для архива example.zip:

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

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

      Запретить доступ к одному файлу по IP при помощи .htaccess сделать нельзя. Для решения этой задачи понадобится использовать возможности административных панелей хостинга и самого сайта.

      А теперь перейдем к практике

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

      Deny from 178.161.210.77

      Т.е. Разрешить доступ для всех кроме IP адреса 178.161.210.77. IP адрес для проверки работоспособности я использовал, рабочий, чтоб сразу увидеть результат. После чего изменил IP адрес, на адрес назойливого бота.

    Просмотр 1 сообщения - с 1 по 1 (всего 1)
    • Для ответа в этой теме необходимо авторизоваться.
    Авторизация
    *
    *
    Регистрация
    *
    *
    *
    Пароль не введен
    *
    captcha
    Генерация пароля