Ограничить доступ к диапазону IP-адресов


Я пытаюсь ограничить доступ к веб-ресурсу во внутренней сети компании через .htaccess. К сожалению, подход через Allow from … не работает для меня, и я недостаточно хорошо понимаю подсети, чтобы устранить проблему.

Мой IP-адрес (заменен первыми двумя блоками для конфиденциальности) 1.2.70.59, маска сети задана ifconfig как 0xffff0000, т. Е. 255.255.0.0. Я использовал калькулятор IP-адресов, чтобы получить подсеть из этого.

Ответ на Переполнение стека привело меня к мысли, что должно работать следующее:

Order deny,allow
Deny from all
Allow from 1.2.0.0/255.255.0.0

Или, используя CIDR (показывает только последнюю строку):

Allow from 1.2.0.0/16

Ни то, ни другое не работает. Также не работает следующее, , как следует из ответа на этом самом сайте:

Allow from 1.2

На самом деле даже не работает следующее:

Allow from 127.0.0.1

Но это действительно работает:

Allow from localhost

Хотя я думал, что эти два понятия эквивалентны. Очевидно, что у меня есть пробел в моем понимании.

Для полнота, это результат ifconfig | grep inet[^6]:

inet 127.0.0.1 netmask 0xff000000 
inet 1.2.70.59 netmask 0xffff0000 broadcast 1.2.255.255

Что я делаю не так?

Author: Community, 2012-02-27

3 answers

Решение состояло в том, что я получил доступ к веб-сайту через localhost/path/to/site, а не 1.2.70.59/path/to/site. Как только я это изменил, это сработало.

 2
Author: Konrad Rudolph, 2012-02-27 16:11:22

Во-первых, вы добавляете эти директивы в файл .htaccess или в файл конфигурации? Если последнее, то вам необходимо перезапустить Apache.

Во-вторых, включен ли у вас режим mod_authz_host? В вашем httpd.conf должна быть строка типа:

LoadModule authz_host_module modules/mod_authz_host.so

Наконец, вы уверены, что это не работает? Т.е. вы тестируете правильный путь/сервер? Вы уверены, что правило перезаписи или пользовательская страница ошибок не создают впечатление, что вы получили доступ к странице, даже если вам показывают другая страница? Кроме того, что не работает? Предоставляет ли это доступ к внешним IP-адресам или запрещает доступ к внутренним IP-адресам?

Очистите журнал доступа (удалите файл), перезапустите сервер и еще раз проверьте URL-адрес; затем просмотрите журнал доступа и посмотрите, какой IP-адрес был записан и какой код ответа был дан.

Есть и другие способы сделать это (например, с помощью mod_rewrite или SetEnvIf/Allow from env=), но то, что вы делаете, должно сработать.

 1
Author: Lèse majesté, 2012-02-27 15:46:20

Попробуйте сделать это для файла .htaccess:

order allow,deny
#partial ip addresses blocking
deny from 192.168
deny from 219

#full ip addresses blocking
deny from 64.120.232.114
deny from 64.120.141.34
allow from all
 0
Author: ionFish, 2012-02-27 14:29:32