Перенаправить трафик SSTP с сервера Ubuntu Apache2 на внутренний сервер Windows

Итак, в эти выходные я работал над переносом моего сервера apache2 в контейнер docker , который У меня нет проблем с.

В настоящее время у меня есть сервер Windows с SSTP и Exchange 2016, оба используют порт 443 для трафика.

Идея состоит в том, чтобы перенаправлять входящий 443 трафик на мой сервер ubuntu, и apache будет принимать решение на основе псевдонимов, которые я дал виртуальным хостам, куда будет перенаправлен пользователь. Это у меня работает, НО что, если пользователь пытается подключиться к VPN, которая также использует порт 443? Как я смогу перенаправить этот трафик на свой сервер?

Я задумал создать правило для IPTABLES , чтобы местом назначения было vpn.domain.com и перенаправить его на сервер, но поскольку все поддомены / CNames - это просто псевдонимы, ведущие к одному и тому же хосту (мой внешний IP-адрес), поэтому все запросы на порт 443 будут просто отправлены на сервер Windows в обход моего веб-хоста, который не то, что я хочу.

На самом деле я также пытался использовать apache для пересылки любых входящих соединений на 443 через ServerAlias ​​vpn.domain.com на сервер Windows с момента его на 443 , но это не сработало.

Я не уверен, как я могу это сделать, и я думаю, что мне просто нужно будет создать новую службу VPN на моем сервере ubuntu в конце концов. Если есть какой-то способ достичь того, что мне нужно, это избавит меня от хлопот.

Спасибо

0
задан 27 November 2017 в 02:38
1 ответ

Попробуйте использовать SSLH

Установить SSLH

SSLH входит в пакет для большинства дистрибутивов Linux, поэтому вы можете установить его с помощью менеджеров пакетов по умолчанию.

sudo apt install sslh

Настроить Apache

Как вы уже знаете, Apache по умолчанию прослушивает все сетевые интерфейсы (т.е. 0.0.0.0:443). Нам нужно изменить этот параметр, чтобы веб-сервер слушал только интерфейс localhost (например, 127.0.0.1:443 или localhost: 443).

Для этого отредактируйте файл конфигурации веб-сервера (nginx или apache) и найдите следующая строка:

 listen 443 ssl;

И измените его на:

listen 127.0.0.1:443 ssl;

Если вы используете Virutalhosts в Apache, убедитесь, что вы также изменили его.

VirtualHost 127.0.0.1:443

Сохраните и закройте файлы конфигурации. Не перезапускайте службы.

Настройте SSLH

После того, как вы настроили веб-серверы для прослушивания только локального интерфейса, отредактируйте файл конфигурации SSLH:

sudo vi /etc/default/sslh

Найдите следующую строку:

Run=no

И измените ее на:

Run=yes

Затем прокрутите немного вниз и измените следующую строку, чтобы разрешить SSLH прослушивать порт 443 на всех доступных интерфейсах (например, 0.0.0.0:443).[12131 sizesWhere ,[12132 sizesuser sslh: Требуется запускать под этим указанным именем пользователя.

  • listen 0.0.0.0:443: SSLH прослушивает порт 443 на всех доступных интерфейсах.
  • sshs 127.0.0.1:22:Маршрутизация трафика SSH на порт 22 на локальном хосте.
  • ssl 127.0.0.1:443: Маршрутизация трафика HTTPS / SSL на порт 443 на локальном хосте.
  • openvpn 127.0.0.1:1194: Маршрутизация трафика openvpn на порт 1194 на локальном хосте. localhost
  • Сохраните и закройте файл.

    Наконец, включите и запустите службу sslh , чтобы обновить изменения.

    sudo systemctl enable sslh
    
    sudo systemctl start sslh
    

    Измените IP-адрес, порт и протоколы в соответствии с вашими потребностями.

    0
    ответ дан 5 December 2019 в 07:07

    Теги

    Похожие вопросы