Разрешить только частный доступ к сайту через VPN

Я знаю, что это может быть очень просто, но у меня есть веб-сайт на моем сервере, который я хотел бы получить только по VPN. Я имею OpenVPN, бегущий на моей машине Windows, и это соединяется с моим сервером через VPN. Когда VPN соединяется, я могу использовать IP-адрес VPN, чтобы попасть на сайт на моем сервере. Я хотел бы заблокировать все другие методы, такие как фактический IP-адрес сайта или имя моего домена. Буду ли я использовать htaccess? Что обычно делается только для личного доступа.

1 ответ

Решение

Допустим, ваш сервер vpn ip 10.1.2.3, то вы должны добавить в вашу конфигурацию apache

Listen 10.1.2.3:80

так что вы будете связывать Apache - т.е. принимать входящие запросы - только по этому адресу.

Также:

Директива Listen не реализует виртуальные хосты - она ​​только сообщает главному серверу, какие адреса и порты прослушивать. Если директивы не используются, сервер будет вести себя одинаково для всех принятых запросов. Однако может использоваться для указания другого поведения для одного или нескольких адресов или портов. Чтобы реализовать VirtualHost, серверу сначала нужно указать адрес и порт, которые будут использоваться. Затем необходимо создать раздел для указанного адреса и порта, чтобы установить поведение этого виртуального хоста. Обратите внимание, что если для адреса и порта, которые сервер не прослушивает, задано значение, доступ к нему невозможен.

то есть вы можете оставить исходную директиву listen (прослушивать все интерфейсы) и отфильтровать доступ для каждого виртуального хоста, настроив ваш "частный" виртуальный хост следующим образом:

<VirtualHost 10.1.2.3:80>

см. http://httpd.apache.org/docs/2.4/bind.html

Наконец, если по какой-то причине вы ограничены только.htaccess, то вы можете сделать это в.htaccess:

Order Deny,Allow
Deny from all
Allow from 10.1.2.1/24

т.е. разрешить доступ только из вашей подсети vpn.

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

Другие вопросы по тегам