- В этой теме 0 ответов, 1 участник, последнее обновление 2 года, 10 месяцев назад сделано E-tec.
-
АвторСообщения
-
21.01.2022 в 14:49 #2057
Предыстория
Не так давно появился у меня на сайте бот который постит рекламу в комментариях к записям на главной странице. Комментарии для не зарегистрированных пользователей у меня отключены, но видимо в wordpress есть какая-то «дыра» которая обходит этот запрет. И понятное дело, что комментарии ни кто не увидит т.к. они должны пройти мою модерацию, но все же самому удалять комменты от одного и того же IP адресата, немного напряжно, по этому я решил просто запретить полностью доступ к своему сайту этому боту. По сути вариантов реализации задачи есть множество, по я решил сделать это через .htaccess.
Немного теории
Файл .htaccess есть у каждого сайта в корне CMS по этому создавать его не нужно просто идем в папку и редактируем его. Запретить доступ к сайту по IP при помощи файла .htaccess можно используя операторы allow и deny. Основная директива, которая используется при ограничении доступности сайта – order. Ее синтаксис следующий:
order deny,allow #Или order allow,deny
Конструкция order deny,allow начинает код и показывает, какие параметры будут использованы для ограничения разрешений на просмотр.
- Оператор allow дает разрешение.
- Оператор deny запрещает.
В зависимости от того в каком порядке стоят операторы в коде меняется логика работы сервера.
- deny,allow сообщает серверу о закрытии доступа всем IP-адресам кроме разрешенных
- 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 адрес, на адрес назойливого бота.
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.