Блокировка по ip htaccess: Как заблокировать IP-адрес с помощью файла .htaccess

Ограничение доступа с помощью .htaccess

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

  • 1. Ограничение по IP-адресу
  • 2. Ограничение по паролю
    • Генерация пароля
    • Примеры работы htpasswd
  • 3. Шпаргалки
  • 4. Полезные ссылки

Ограничение по IP-адресу

Конструкция подобного ограничения очень проста:

order allow,deny
deny from 1.1.1.1
deny from 2a01:230::6d0a:8406:c4e4:9e19
deny from 10.10
deny from 192.168.0.0/24
deny from domain.dom
allow from all

Системные требования для работы этих правил: веб-сервер Apache 2.2.x с подключенным модулем mod_authz_host.

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

И ниже разберем каждую строку в отдельности.

Первая строка задает логику работы последующих правил. В каком порядке будут выполняться блокирующие и разрешающие правила.

Вторая и третья строки блокируют доступ по конкретным IP-адресам (ipv4 и ipv6 соответственно).

Четвертая строка показывает, что можно указывать частично IP-адрес, и в таком случае (как указано в примере) будет обрабатываться как подсеть /16.

Пятая строка — можно блокировать целыми сетями и подсетями, указывая диапазон.

Для работы вариантов блокировки, как в шестой строке, потребуется включить параметр HostnameLookups.

И, наконец, последняя строка allow from all говорит о том, что всем остальным доступ разрешен.

Хотя Apache 2.2.x уже устарел, ог до сих пор часто используется. Для Apache 2.4.x правила будут другими:

<RequireAll>
Require all granted
Require not ip 1.1.1.1
Require not ip 2a01:230::6d0a:8406:c4e4:9e19
Require not ip 10.10
Require not ip 192.
168.0.0/24 Require not host domain.dom </RequireAll>

Первая и последняя строки — директивы, используются для выделения группы правил.

Вторая строка — аналог блока order allow,deny + allow from all в Apache 2.2, задает логику работы правил.

Строки 3-6 — аналогичны строкам 2-5 правил Apache 2.2, а строка 7 — аналог строки 6 в Apache 2.2.

Ограничение по паролю

Рассмотрим простейший вариант ограничения доступа с авторизацией по логину и паролю:

AuthType Basic
AuthName "Доступ ограничен паролем"
AuthUserFile "/path/to/.htpasswd"

Системные требования для работы такой конструкции: веб-сервер Apache 2.2.x или 2.4.x с подключенными модулями auth_basic, authn_file.

Генерация пароля

Создание пары «логин-пароль» происходит с непосредственным участием приложения htpasswd

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

Использование:
        htpasswd [-cmdpsD] passwordfile username
        htpasswd -b[cmdpsD] passwordfile username password
        htpasswd -n[mdps] username
        htpasswd -nb[mdps] username password
 -c  Создать новый файл. 
 -n  Не обновлять файл, вывести результат на экран.
 -m  Зашифровать пароль с помощью [[MD5]].
 -d  Зашифровать пароль с помощью [[CRYPT]] (по умолчанию).
 -p  Не шифровать пароль (открытый текст).
 -s  Зашифровать пароль с помощью [[SHA]].
 -b  Указать пароль в параметре командной строки.
 -D  Удалить указанного пользователя.
На [[Windows]], [[NetWare]] и [[TPF]] системах флаг '-m' используется по умолчанию.
На всех остальных системах флаг '-p' может не работать.

 

Примеры работы htpasswd

Таким образом, чтобы создать файл с логином и паролем для авторизации с зашифрованным паролем в MD5, потребуется выполнить команду:

  • htpasswd -bcm /path/to/.htpasswd sampleuser samplepass

Adding password for user sampleuser


Результатом будет файл .htpasswd со строкой:

sampleuser:$apr1$i5Kx715D$qkWbaZLztXohMGOdfCUy5/


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

  • htpasswd -bm /path/to/. htpasswd sampleuser1 samplepass1

Updating password for user sampleuser1


В случае, если в файле указано больше одного пользователя и вам требуется удалить какого-либо, команда будет выглядеть так:

  • htpasswd -D /path/to/.htpasswd sampleuser2

Deleting password for user sampleuser2

Шпаргалки

Еще некоторые примеры, которые могут пригодиться при работе с .htaccess.

Запретить все в Apache 2.2.x:

Order deny,allow
Deny from all

Запретить все в Apache 2.4.x:

Require all denied

Блокировка ботов в Apache 2.2.x:

SetEnvIfNoCase User-Agent «DotBot» bad_bot
Deny from env=bad_bot

Блокировка ботов в Apache 2.4.x:

<If «%{HTTP_USER_AGENT} =~ m#DotBot#i»>
Require expr %{HTTP_USER_AGENT} != ‘DotBot’

# DotBot — один из примеров, таких ботов может быть много.

Разрешить доступ к определенному файлу с определенного IP в Apache 2. 2.x:

<Files путь_к_файлу>
Order Deny,Allow
Deny from all
Allow from 1.1.1.1
</Files>

Разрешить доступ к определенному файлу с определенного IP в Apache 2.4.x:

<Files путь_к_файлу>
Require ip 1.1.1.1
</Files>

Полезные ссылки

  • Описание файла .htaccess для Apache 2.2
  • Описание файла .htaccess для Apache 2.4 
  • Описание модуля auth_basic в Apache 2.2
  • Описание модуля auth_basic в Apache 2.4
  • Описание модуля authn_file в Apache 2.2
  • Описание модуля authn_file в Apache 2.4
  • Онлайн-генератор парольной защиты директории
  • Онлайн-генератор ограничения по IP-адресам
  • Описание утилиты htpasswd для Apachw 2.2.x
  • Описание утилиты htpasswd для Apache 2.4.x
Этот материал был полезен?

Как в WordPress блокировать по IP доступ в админ-панель?

Как известно, WordPress является самым популярным “движком” для быстрого создания сайтов. В этой популярности есть один существенный минус – повышенное внимание хакеров. Вследствие этого каждый владелец WordPress-сайта должен постоянно следить за безопасностью своего ресурса и быть всегда в курсе всех методов его защиты.

Что такое блокировка по IP?

Одним из таких методов является ограничение доступа по IP в админ-панель сайта.

Как Вы знаете, любая точка доступа в Интернете (компьютер, смартфон, роутер и т.д.) имеет свой IP-адрес, видный всем остальным. Это означает, что если Вы сумели зайти в Интернет, то значит Вам был присвоен этот самый IP-адрес. Если Вы зашли на какой-либо сайт, то сделали это под каким-то IP, который может быть определен и сохранен.

Статический или динамический IP-адрес?

IP-адрес состоит из 4-х чисел, разделенных между собой точкой. Например, 12.250.98.250. Участник Сети может иметь как свой персональный (уникальный или статический) IP-адрес, так и разделять еще с кем-то (непостоянный или динамический). Важно знать, какой у Вас адрес: статический или динамический. Чтобы это определить, необходимо воспользоваться бесплатным онлайн-сервисом, который точно укажет Вам эти 4 числа (например, 2ip.ru). Если после нескольких проверок Вам выдается один и тот же адрес, значит он статический.

Блокируем доступ в админ-панель

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

О том, как получить доступ к файлам сайта и как редактировать этот файл, было описано в нашем материале: Как подключиться к ftp.

Для статического IP-адреса

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

order deny,allow
allow from 12.250.98.250
deny from all

Во второй строке, вместо присутствующих там чисел, нужно заменить на числа Вашего IP-адреса. Если необходимо добавить несколько адресов, то вторую строчку можно продублировать (указав другой адрес) и разместить под ней.

Для динамического IP-адреса

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

order deny,allow
allow from 12.250.
deny from all

Как видно, мы указали только первые два числа. Это означает, что они являются неизменными, а меняются лишь последние два.

Универсальный метод

Также стоит рассмотреть еще один вариант блокировки по IP – бесплатный плагин WP-Ban. Дополнение является более универсальным решением, позволяя администратору сайта без каких-либо правок файла . htaccess заблокировать конкретный IP-адрес (статический или динамический) или целый диапазон, наглядно показывая статистику заблокированных адресов.

Итак, после установки и активации плагина, в админ-панели необходимо перейти в раздел Настройки -> Ban.

Страница настроек плагина разделена на несколько блоков, отвечающих за ту или иную возможность для блокировки IP. Рассмотрим каждую из них.

Блок Banned IPs позволит заблокировать посетителя сайта по его IP-адресу. Согласно примеру, возможен ввод как статического адреса, так и динамического.

В разделе Banned IP Range можно указать целый диапазон адресов, которые будут блокироваться.

В блоке Banned Host Names можно заблокировать по имени хоста.

Banned Referers отвечает за блокировку по адресу сайта, с которого перешли.

Banned User Agents – блокировка по клиентскому приложению User Agent.

В разделе Banned Exclude IPs возможно заблокировать всех, исключая введенных.

В блоке Banned Message указывается сообщение, которое увидит заблокированный посетитель при попытке войти на сайт.

Раздел Ban Stats выведет на экран число попыток входа на сайт каждого заблокированного IP-адреса.

Чтобы настройки вступили в силу, необходимо нажать кнопку Save Changes.

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

php — htaccess доступ к файлу по диапазону ip

спросил

Изменено 6 месяцев назад

Просмотрено 111 тысяч раз

Как разрешить доступ к файлу только пользователям с ip, которые находятся в диапазоне ip адресов?

Например файл admin. php. и диапазон от 0.0.0.0 до 1.2.3.4.

Мне нужно настроить доступ только к ОДНОМУ файлу, а не к каталогу.

  • php
  • .htaccess

2

Просто добавьте директиву FilesMatch или Files, чтобы ограничить ее определенным сценарием.

Следующее заблокирует доступ ко всем сценариям, оканчивающимся на «admin.php»:

 
    Отклонить заказ, разрешить
    Запретить от всех
    Разрешить с 10.0.0.0/24

 

Следующее блокирует ТОЛЬКО admin.php:

 <Файлы "admin.php">
    Отклонить заказ, разрешить
    Запретить от всех
    Разрешить с 10.0.0.0/24

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

проверьте справочную страницу директивы Allow

 Order Deny, Allow
Запретить от всех
Разрешить с 10.1.0.0/255.255.0.0
 

Частичный IP-адрес

Пример:

 Разрешить с 10. 1
Разрешить от 10 172,20 192.168.2
 

Первые 1–3 байта IP-адреса для ограничения подсети.

Пара сеть/маска сети

Пример:

 Разрешить от 10.1.0.0/255.255.0.0
 

Сеть a.b.c.d и сетевая маска w.x.y.z. Для более точного ограничения подсети.

Спецификация сети/nnn CIDR

Пример:

 Разрешить начиная с 10.1.0.0/16
 

Аналогично предыдущему случаю, за исключением того, что маска сети состоит из nnn старших битов 1.

4

Вы не можете сопоставить диапазон IP-адресов с разрешением, но вы можете эмулировать его с помощью нотации CIDR:

 Заказать разрешить, запретить
# 0.0.0.0 - 0.255.255.255.255
Разрешить от 0.0.0.0/8
# 1.0.0.0 - 1.1.255.255
Разрешить с 1.0.0.0/15
# 1.2.0.0 - 1.2.1.255
Разрешить с 1.2.0.0/23
# 1.2.2.0 - 1.2.2.255
Разрешить с 1.2.2.0/24
# 1.2.3.0 - 1.2.3.3
Разрешить с 1. 2.3.0/30
# 1.2.3.4
Разрешить с 1.2.3.4
 

Просто сделайте это для одного IP:

 <Ограничение ПОЛУЧИТЬ ОТПРАВКУ>
запретить заказ, разрешить
отрицать от всех
разрешить от 1.2.3.4

 

Если вы хотите сделать это для диапазона типа 10.x.x.x, то сделайте так:

 
порядок разрешить, запретить
разрешить от 10
отрицать от всех

 

Если вы используете WordPress, то лучший и самый простой способ — установить плагин —

LionScripts: Блокировщик IP-адресов WordPress с их веб-сайта http://www.lionscripts.com/ip-address-blocker

Их профессиональная версия имеет гораздо больше функций, таких как блокировка страны и блокировка диапазона IP-адресов, массовая загрузка csv и т. д.

1

, если вы предоставите подстановочный знак 0.0.255.255

 Порядок разрешить, запретить
# 1.2.0.0 - 1.2.255.255
Разрешить с 1.2.0.0/16
 

Это даст диапазон от 1. xx\.xxx #Вещи, которые нужно разрешить, чтобы мы могли показывать нашу страницу обслуживания во время работы RewriteCond %{REQUEST_FILENAME} !(стили|изображения).+$ RewriteCond %{REQUEST_URI} !maintenance.html$ [NC] RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif|js|css|ttf|woff) [NC] RewriteRule .* /maintenance.html [R=302,L]

 Приказ Запретить, Разрешить
Запретить от всех
Разрешить от 311.311.311 322.322.322.322
 

См. ответ здесь

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

wordpress — блокировка диапазона IP в файле htaccess

спросил

Изменено 5 лет, 4 месяца назад

Просмотрено 4к раз

Я управляю сайтом, и сайт создан на WordPress. Он получает ОГРОМНОЕ количество трафика от ботов, и мы хотим заблокировать их всех, кроме важных ботов, таких как Google Yahoo Bing Baidu. Мы используем cloudflare, и я хочу заблокировать их из двух слоев, брандмауэра Cloudflare и файла htaccess. В файле htaccess я знаю, как заблокировать один IP-адрес и последние конечные IP-адреса диапазона IP-адресов, например 123.123.123.0/16

Однако мне нужно заблокировать следующие IP-адреса 69.30.192.0 — 69.30.255.255 93.55.115.64 — 93.55.115.71

Как вы устанавливаете правила этого в файле htaccess? Cloudflare, кажется, следует тому же правилу.

  • вордпресс
  • .htaccess

1

Почти получилось. Нотация /16 на самом деле называется нотацией CIDR.

Число указывает, сколько битов должно соответствовать слева направо. Страница Wiki объясняет это подробно.

Или… вы можете просто поверить мне на слово и использовать такой инструмент, как этот, который я нашел: http://www. ipaddressguide.com/cidr#range

Затем вы можете использовать deny from в своем .htaccess так же, как и для одного IP-адреса с заданными значениями:

 Order Allow, Deny
Запретить с 69.30.192.0/18
Запретить с 93.55.115.64/29
Разрешить от всех
 

Не уверен, насколько надежен источник, но это от clockwatchers

http://www.clockwatchers.com/htaccess_block.html

Блокировать один IP-адрес

 приказ разрешить, запретить
запретить с 127.0.0.1
разрешить от всех
 

Это отклонит все запросы GET и POST, сделанные IP-адресом 127.0.0.1, вместо этого будет показано сообщение об ошибке

Чтобы заблокировать несколько IP-адресов, перечислите их по одному в строке

 порядок разрешения, запрета
запретить с 127.0.0.1
запретить с 127.0.0.2
запретить с 127.0.0.3
разрешить от всех
 

Чтобы заблокировать весь диапазон IP-адресов

 запретить с 127.0.0
 

Будет отказано в доступе любому пользователю с адресом в диапазоне от 127.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *