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

Перенаправить трафик 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 в конце концов. Если есть какой-то способ достичь того, что мне нужно, это избавит меня от хлопот.

Спасибо

Попробуйте с 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).

DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --openvpn 127.0.0.1:1194 --pidfile /var/run/sslh/sslh.pid"

Куда,

  • user 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 на локальном хосте.

Сохраните и закройте файл.

Наконец, включите и запустите sslh сервис для обновления изменений.

sudo systemctl enable sslh

sudo systemctl start sslh

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