Подскажите, пожалуйста, как пустить внешний http-трафик через хост в локальной сети, авторизуя пользователей через AD?
Всем добрый день.
Есть следующая задачка.
Существуют некоторые достаточно навороченные сервисы авторизующие нас по внешнему IP.
Необходимо предоставить доступ внешним пользователям, имеющим учетную запись в нашей Active Directory к этим сервисам, пустив трафик через наш сервер. Вдобавок неплохо было бы иметь статистику по использованию этих сервисов.
Подскажите пожалуйста как красиво это организовать.
Сам вижу следующие варианты:
1) Скрипт анонимайзера (к примеру CGIProxy) установленный на внутреннем веб сервере. Но возникает вопрос с авторизацией внешних пользователей через AD.
2) VPN туннель. Мне это решение нравится, но проблема со статистикой и настройкой соединения у конченого пользователя, хотя можно этот процесс частично автоматизировать.
3) Публикация приложения (к примеру Mozilla) через сервер приложений или RDP через сервер терминалов.
Проблема в статистике, и кол-ве одновременных соединений… + еще кучка ньюансов.
4) Извращенный вариант с публикацией сайтов с помощью MS TMG. Работает к сожалению криво и косо.
Со статистикой облом. Зато с авторизацией никаких проблем.
6-е чувство намекает что есть какой-то очень простой вариант, но молчит как партизан. :)
Прошу у вас совета и пинка в нужную сторону, а то уже «глаз замылился».
UPD: В итоге использовал связку SQUID+Basic auth внутри корпоративной сети и WPAD файл опубликованный на внешнем сервере, содержащий информацию для браузера о том что к данным сервисам необходимо ходить через проксик.
Я вижу три более-менее сносно работающих варианта:
1. Reverse Proxy с поддержкой авторизации в AD, желательно NTLM (как в случае TMG) — работает, на самом деле, достаточно хорошо, со статистикой — вопрос спорный, т.к. TMG вполне себе ведет статистику. Но можно попробовать какой-нибудь другой прокси. Навскику, должен получиться Apache+mod_proxy — но не тестировал.
2. Обычный прокси с поддержкой AD + (опционально) WPAD, чтобы трафик во внутреннюю сеть шел через прокси. Но IP клиентов так же будут только в логах прокси.
3. Наиболее «прозрачное» решение:
Сделать два одинаковых сайта на iis указывающих в одну папку на разных IP. В одном включить авторизацию, в другом разрешить обычный доступ. Через NAT опубликовать сайт с авторизацией.
В общем, стало интересно самому и я сделал по вашей схеме, пока еще без статистики, доступ к корпоративному ресурсу.
Реверс включается через a2enmod proxy_http
Авторизация в AD через a2enmod authnz_ldap
Была предпринята попытка сделать Reverse Proxy на IIS. Провалилась с треском.
2 причины:
— некоторые сайты отдают сжатый контент и в нём невозможно изменить обратные ссылки.
— на одном из сайтов очень много поддоменов 3-го уровня (более 50-ти), замучался правилами rewrite разруливать.
Так же попробовал использовать скрипт анонимайзера CGIProxy, к сожалению он некорректно отображает сайты.
В конечном итоге сделал следующее:
Поднял во внутренние сети SQUID и настроил на нем Basic авторизацию через AD
Опубликовал на внешнем сайте файл WPAD и инструкцию по применению.
В итоге заинтересованные пользователи должны вписать в настройках браузера путь до WPAD файла, а дальше трафик до целевых ресурсов идет через внутренний прокси авторизовывая пользователей через AD.
Момент с самостоятельным прописыванием пути до WPAD мне очень не нравится, но на данный момент это единственное решение которое я вижу.