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

Спасибо

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).

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, порт и протоколы, чтобы удовлетворить ваши потребности.

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