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

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

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

Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Автор
    Сообщения
  • #2057
    Esmertec
    Хранитель

    Предыстория

    Не так давно появился у меня на сайте бот который постит рекламу в комментариях к записям на главной странице. Комментарии для не зарегистрированных пользователей у меня отключены, но видимо в 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
Генерация пароля