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

Создание файла .htaccess

Сначала, создается файл .htaccess как простой документ текстового формата без расширения .txt. Его можно открыть в обычном блокноте Windows, но лучше воспользоваться более расширенным редактором, например – Notepad++.

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

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

Команды

Запретить доступ к сайту по 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 зависит от того, какой раздел сайта или его файл необходимо закрыть.

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

Для того чтобы полностью закрыть сайт от посещений и возможности просмотра его содержимого в .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-кода.

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

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

<Files>
</Files>

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

<Files “example.zip”>
deny from all
</Files>

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

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

<FilesMatch "\.(gif|png|jpe?g|rar|zip)$">
deny from all
</FilesMatch>

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