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