Доступ к Apache2 ограничен локальной сетью
-
05-07-2019 - |
Вопрос
До недавнего времени у меня было несколько виртуальных сайтов, настроенных так:
<VirtualHost 127.0.0.1:1234>
...
Это прекрасно работает для тестирования на моей локальной машине, где я использую рабочий стол Linux. Чтобы проверить, как MS и Explorer отображают мои страницы с моего ноутбука с Windows, я изменил это на
<VirtualHost *:1234>
...
Это также хорошо работает, вызывая сайт с http: // [mylinuxservername]: 1234 на моем ноутбуке. IE. Однако я хочу ограничить этот подстановочный знак локальной сетью. При подключении любого ip, например 192.nnn.nnn.nnn или 192. *. *. *, Где подстановочный знак находится выше, выдается 403 Запрещено на машине с Windows. Локальный сервер все еще отлично работает на моем компьютере с Linux:
<VirtualHost 127.0.0.1:1234 192.*.*.*:1234>
...
или
<VirtualHost 127.0.0.1:1234 192.nnn.nnn.nnn:1234> #exact IP of laptop
...
В любом случае, мне не нравится этот подстановочный знак во втором примере конфигурации выше. Кто-нибудь намекает?
Решение
Параметры VirtualHost
- это локальные адреса, которые вы слушаете, а не удаленные.
В Apache 2.4 и новее используйте Require
директива:
Require ip 127.0.0.0/8
Require ip 192.0.0.0/8
Если вы используете Apache 2.2 или более раннюю версию, используйте authz_host конфигурация:
Order Allow,Deny
Allow from 127.0.0.0/8
Allow from 192.168.0.0/16
Это также может работать в Apache 2.4, но заказать
и Allow
устарели .
Другие советы
Просто заметка на случай, если сюда придут такие нубы, как я:)
Apache HTTP Server настраивается путем размещения директив в виде простого текста конфигурационные файлы. Основной файл конфигурации обычно называется httpd.conf. Основные файлы конфигурации
Для версии 2.4
Директивы Allow, Deny и Order, предоставляемые mod_access_compat, устарели и уйдут в будущей версии. Вам следует избегать использовать их, и избегать устаревших руководств, рекомендующих их использование. Контроль доступа
Require ip 127.0.0.0/8
Require ip 192.0.0.0/8
или (не совсем то же самое)
Require ip 127.0
Require ip 192.168
Используйте iptables для ограничения доступа к самой машине. Первая команда разрешит HTTP-трафик из любой сети в диапазоне 192 (обратите внимание, что я думаю, что вам нужно 192.168, чтобы действительно быть локальным, но я могу ошибаться). Вторая команда просто отбрасывает пакеты из других источников для порта 80
iptables -I 1 INPUT -s 192.0.0.0/8 -p tcp --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -I 2 INPUT -p tcp --dport 80 -m state --state NEW -j DROP
Затем на своем виртуальном хосте вы можете выполнить < VirtualHost *: 80 >