Как запретить доступ к сайту по IP

Последнее обновление: 21 февраля 2023 г.

Сначала, создается файл .htaccess как простой документ текстового формата без расширения. Обычно файл по умолчанию существует в корневой директории сайта в популярных CMS. Если его нет, то необходимо его создать через менеджер файлов.

Ниже мы рассмотрим различные варианты ограничения доступа с примерами кода.

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

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

Order Deny, Allow
Deny from all

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

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

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

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

Order Allow,Deny
Allow from all
Deny from 123.123.123.123
Deny from 122.122.122.122

где 123.123.123.123, 122.122.122.122 — IP-адреса, для которых запрещается доступ к сайту.

Внимание!
Не заблокируйте случайно свой IP-адрес.

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

Для открытия доступа с определенного IP-адреса, добавьте в файл .htaccess следующие строки:

Order Allow,Deny
Order Deny,Allow
Deny from all
Allow from xxx.xxx.xxx.xxx

Вместо xxx.xxx.xxx.xxx укажите IP-адреса, для которых хотите открыть доступ к сайту.

Блокировка подсети IP

Если вам нужно заблокировать не отдельные IP-адреса, а подсеть IP-адресов (некий диапазон), сначала определите нужное значение с помощью безклассовой адресации CIDR (калькулятор IP-диапазона в CIDR).

Затем добавьте в файл .htaccess, находящийся в корневой папке сайта, следующие строки:

Order Deny,Allow
Deny from 123.123.0.0/26

где 123.123.0.0/26 — подсеть IP, которую вам нужно заблокировать.

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

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

<Directory /wp-admin/>
order deny, allow
deny from all
#Адреса, которым разрешен вход записываются через пробел
allow from 198.69.144.98 198.69.144.94
</Directory>

Также можно просто создать файл .htaccess в нужной директории с необходимым правилом.

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

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

Как пример приведем ограничение просмотра для архива site.zip:

<Files "site.zip">
deny from all
</Files>

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

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

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