Назад | Перейти на главную страницу

Как заблокировать IP в .htaccess на Apache 2.4

Я обновил Apache 2.4 и хотел бы заблокировать Ip, это можно сделать, используя следующее в .htaccess на Apache 2.2

Order Deny,Allow
Deny from 50.62.136.183

Однако как я могу добиться того же в .htaccess на Apache 2.4

Это еще один приемлемый синтаксис для .htaccess файл:

<RequireAll>
Require all granted
Require not ip 50.62.136.183
</RequireAll>

Этот синтаксис рекомендуется для версии 2.4, потому что синтаксис запрета заказа не всегда работает, как можно увидеть здесь. http://httpd.apache.org/docs/2.4/upgrading.html

Apache 2.4 вносит большие изменения в способ авторизации пользователей.

Компоненты авторизации в Apache 2.4 теперь могут использовать синтаксис Require, который ранее был доступен только для аутентификации. Это изменение упрощает способ определения порядка авторизации. Наборы правил до 2.4 могли быть довольно сложными. Правила в 2.4 более логичны, они определяют значение по умолчанию, а затем исключения.

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

Require all granted
Require not ip 50.62.136.183

Это правило установит политику по умолчанию, предусматривающую прием всех IP-адресов, кроме любого запроса, поступающего с IP-адреса 111.111.111.111.

Примеры до и после Apache 2.4

Apache 2.2

<files somefile.php>
  order allow,deny
  deny from 50.62.136.183
</files>

Apache 2.4

<Files somefile.php>
Require all granted
Require not ip 50.62.136.183
</Files>

Не забудьте заблокировать доступ к вашему файлу .htaccess или выполнить быстрый поиск в Google, чтобы сделать ваш сайт уязвимым. Я включил конфигурацию до 2.4 и после 2.4.

Apache 2.2

# Prevent .htaccess files from being spidered or viewed via a web browser.
<FilesMatch "^\.ht">
  Order allow,deny
  Deny from all
  satisfy all
</FilesMatch>

Apache 2.4

# Prevent .htaccess files from being spidered or viewed via a web browser.
<Files ".ht*">
  Require all denied
</Files>

Конфигурация контроля доступа изменилась, как вы можете прочитать в http://httpd.apache.org/docs/2.4/upgrading.html#access поэтому вам следует использовать директиву Require:

Require all granted
Require not ip 50.62.136.183

Если вы добавите это в свой .htaccess файл (или Directory раздел) он должен работать, как вы просили.

Чтобы запретить посетителям по IP-адресу, вы можете ввести ниже запись в .htaccess

Order Deny,Allow
Deny from 198.51.100.5

Пример блокировки диапазона IP-адресов:

RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^00\.00\.00\.
RewriteRule ^ - [F]

Чтобы перенаправить нежелательного посетителя на другой URL:

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)?169.166.0.5.*$ [NC]
RewriteRule .* 198.51.100.6 [L]

Примечание: данный IP-адрес является примером IP-адресов.

У меня была ошибка 500 на взаимных серверах ionos. PB пришел из командного приказа, разрешить, запретить, который больше не работает. Я меняюсь на <RequireAll> Require all granted Require not ip 50.62.136.183 </RequireAll> Я пробовал использовать свой собственный полный IPV6, и он работает ... но я могу установить только IPV4, но не IPV6 !? (возможно, IPV6 не работает как IPV4 относительно первого числа, определяющего страну, поэтому нет способа сделать это ...) Итак, это работает <RequireAll> Require all granted Require not ip 50.62 </RequireAll> Но это не работает: <RequireAll> Require all granted Require not ip 20a6:5bd2 </RequireAll>