Как настроить ISA Proxy/авторизацию для yum с помощью ntlmaps
Что такое “NTLM Authorization Proxy Server”
NTLM Authorization Proxy Server (APS, часто называемый ntlmaps) — это прокси-сервер на Python, который позволяет аутентифицироваться через MS Proxy Server, использующий проприетарный протокол NTLM. Начиная с версии 0.9.5, ntlmaps может работать как автономный прокси, а также подменять заголовки клиента, делая запросы похожими на запросы от Internet Explorer. Кратко: он переводит NTLM в стандартную Basic/HTTP прокси-схему и делает возможным использование приложений (yum, curl и т.д.) за прокси с NTLM.
Краткое определение: NTLM APS — локальный прокси, который аутентифицируется перед родительским MS ISA-прокси и проксирует ваши HTTP(S)-запросы.
Основные возможности ntlmaps
- Поддержка NTLM-аутентификации через родительский прокси (407 Proxy Authentication Required).
- Поддержка NTLM-аутентификации на веб-серверах (401 Access Denied/Unauthorized).
- Трансляция NTLM в стандартную Basic-аутентификацию.
- Поддержка HTTPS с методом CONNECT для прозрачного туннелирования.
- Возможность менять произвольные заголовки в запросе клиента.
- Неограниченное число клиентских подключений и поддержка persistent HTTP/1.1.
- Хранение учётных данных в конфиге или запрос пароля в консоли при запуске.
- Детекция отказов и failover между несколькими upstream-прокси.
Что нужно подготовить (проверки перед началом)
- Доступ в интернет из браузера на той же машине (у вас рабочий интернет в Firefox).
- Учётные данные для ISA-прокси: домен (NT_DOMAIN), имя пользователя (USER) и пароль (PASSWORD).
- Администраторские права для установки rpm и редактирования файлов в /etc или /opt.
- Команда scp/USB, если скачивание на целевой машине недоступно.
Важно: не храните пароли в открытом виде в общедоступных файлах без прав доступа 600.
Шаг 1 — скачать RPM и установить
Скачайте ntlmaps RPM через браузер (или с другой машины и перенесите через scp):
ftp://ftp.pbone.net/mirror/ftp.sourceforge.net/pub/sourceforge/n/project/nt/ntlmaps/OldFiles/ntlmaps-0.9.9.6-1.i386.rpm
Просто скопируйте и вставьте ссылку в адресную строку браузера. После скачивания откройте терминал и выполните:
rpm -Uvh ntlmaps-0.9.9.6-1.i386.rpmЕсли пакет установлен успешно, можно найти связанные файлы командой:
rpm -ql ntlmapsШаг 2 — настроить конфигурацию сервера ntlmaps
Откройте конфигурационный файл (пример для моей установки):
vi /etc/ntlmaps/server.cfgИзмените параметры под ваши данные (пример):
PARENT_PROXY:That_will_b_your_MS-Prosy_IP
PARENT_PROXY_PORT:That_will_b_your_MS-Proxy_Server_Port
NT_DOMAIN: That_will_b_Your_windows_Domain_name
USER:That_will_b_your_proxy-user
PASSWORD: That_will_b_your_Proxy-user_PasswordСоветы по конфигу:
- Используйте точные значения IP/порта родительского ISA-прокси.
- Если не хотите хранить пароль в файле, оставьте PASSWORD пустым — ntlmaps предложит ввести пароль при запуске.
- Ограничьте права доступа к файлу: chmod 600 /etc/ntlmaps/server.cfg и владелец root.
Шаг 3 — запустить демон ntlmaps
Запустите основной скрипт:
/opt/ntlmaps/main.pyОжидаемый вывод (пример):
NTLM authorization Proxy Server v0.9.9.6
Copyright (C) 2001-2005 by Dmitry Rozmanov, Darryl Dixon, and others.
Now listening at Testbed.abc.com on port 5865Если вы видите аналогичный вывод — ntlmaps успешно запущен и слушает локальный порт (в примере 5865). Если демон падает — проверьте журнал, права доступа и корректность PARENT_PROXY/PARENT_PROXY_PORT.
Шаг 4 — настроить yum использовать локальный прокси
В текущей сессии экспортируйте переменную окружения:
http_proxy= http://127.0.0.1:5865export http_proxyПосле этого запустите
yum updateЕсли всё настроено правильно, yum пройдёт через локальный ntlmaps, и он, в свою очередь, аутентифицируется на MS ISA.
Чтобы сделать это системно, можно добавить экспорт в /etc/profile.d/ntlmaps.sh или прописать proxy в /etc/yum.conf:
- В /etc/profile.d/ntlmaps.sh:
export http_proxy=http://127.0.0.1:5865
export https_proxy=http://127.0.0.1:5865- В /etc/yum.conf добавить:
proxy=http://127.0.0.1:5865Проверки и критерии приёмки
- Выполните curl на внешний URL через локальный прокси:
curl -v --proxy http://127.0.0.1:5865 http://example.comОжидаем: успешный HTTP 200 и отсутствие 407/401 ошибок.
- Запустите yum (yum clean all && yum update) — пакеты должны скачиваться без ошибок авторизации.
- Проверьте лог ntlmaps на предмет ошибок аутентификации/таймаутов.
Отладка — что проверить, если не работает
- Порт локального прослушивания: убедитесь, что ntlmaps действительно слушает на 127.0.0.1:5865 (netstat -ltnp | grep 5865).
- Доступность родительского ISA-прокси с машины: попытайтесь telnet
. - Корректность домена/имени пользователя и пароля.
- Права на server.cfg: ntlmaps должен иметь доступ к конфигу, но файл не должен быть читаем для всех.
- Если используется SELinux, проверьте audit.log и контексты (может потребоваться временно permissive для теста).
Когда этот подход не подходит (контрапримеры)
- Если в вашей сети запрещены исходящие соединения на произвольные порты или запрещено запускать пользовательские демоны — ntlmaps не поможет.
- Если организация требует централизованную авторизацию и запрещает хранение учётных данных локально.
- Если у вас используется Kerberos/SPNEGO вместо NTLM — нужны другие инструменты.
Альтернативные подходы
- cntlm — популярная альтернатива, написанная на C, с конфигом и поддержкой NTLM/NTLMv2. Удобен для продакшн-сред с постоянным сервисом.
- Настройка yum напрямую, если ISA поддерживает Basic-over-SSL или другую совместимую схему.
- Настройка корпоративного прокси/периметра — обратиться к сетевому администратору для разрешения приложений.
Безопасность и рекомендации по хранению паролей
- Избегайте хранения пароля в открытом виде в /etc/ntlmaps/server.cfg. Если это необходимо — ограничьте права файла (chmod 600) и владелец root.
- Рассмотрите запуск ntlmaps от учётной записи с ограниченными правами или контейнеризацию.
- Логирование: не отправляйте логи с учётными данными в централизованные системы без маскировки.
Роль-ориентированные чек-листы
Администратор сети:
- Проверить доступность ISA-прокси и порта.
- Предоставить учётную запись с правами на прокси.
- Уточнить политику хранения учётных данных.
Системный администратор сервера:
- Установить rpm и настроить /etc/ntlmaps/server.cfg.
- Запустить /opt/ntlmaps/main.py и добавить автозапуск при необходимости.
- Обеспечить безопасные права и мониторинг.
Разработчик/пользователь:
- Экспортировать http_proxy и протестировать curl/yum.
- При сбоях передать администратору вывод логов.
Мини-методология внедрения (шаги для команды)
- Тестовая машина: скачать и установить ntlmaps.
- Настроить server.cfg только с правами root и протестировать ручным запуском.
- Автоматизировать запуск (systemd unit или /etc/init.d), обеспечить ротацию логов.
- Широкое развёртывание: развернуть контейнер или отдельный сервис на выделенной машине, чтобы не хранить пароли на каждом хосте.
Небольшой справочник терминов (1 строка)
NTLM — протокол аутентификации Microsoft, используемый в ISA и старых прокси-серверах.
Пример простого systemd unit для ntlmaps (опционально)
[Unit]
Description=NTLM Authorization Proxy Server
After=network.target
[Service]
Type=simple
ExecStart=/opt/ntlmaps/main.py
Restart=on-failure
User=root
[Install]
WantedBy=multi-user.targetСохраните как /etc/systemd/system/ntlmaps.service, затем:
systemctl daemon-reload
systemctl enable --now ntlmapsFlowchart для быстрого принятия решения
flowchart TD
A[Проблемы с yum за ISA/NTLM?] --> B{Есть доступ в браузере?}
B -- Да --> C[Рассмотреть ntlmaps]
B -- Нет --> D[Проверить сетевые настройки/ISA]
C --> E{Можно запускать локальный демон?}
E -- Да --> F[Установить ntlmaps и настроить server.cfg]
E -- Нет --> G[Использовать центральный cntlm/обратиться к админ-отделу]Краткое резюме
- Если ISA/ISA-прокси требует NTLM, обычный yum не будет работать напрямую.
- ntlmaps — простой и быстрый способ проксировать HTTP/HTTPS через NTLM-прокси, особенно для одиночных машин или тестовой среды.
- Для продакшна рассмотрите более управляемые решения (cntlm, централизованный сервис), уделите внимание безопасности хранения учётных данных и автоматизации запуска.
Важное: всегда согласовывайте внедрение подобных прокси-сервисов с сетевыми и информационной безопасностью вашей организации.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента