Гид по технологиям

Как настроить ISA Proxy/авторизацию для yum с помощью ntlmaps

• 5 min read • Linux • Обновлено 19 Nov 2025
Настройка ISA Proxy/NTLM для yum
Настройка ISA Proxy/NTLM для yum

Что такое “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-прокси.

Что нужно подготовить (проверки перед началом)

  1. Доступ в интернет из браузера на той же машине (у вас рабочий интернет в Firefox).
  2. Учётные данные для ISA-прокси: домен (NT_DOMAIN), имя пользователя (USER) и пароль (PASSWORD).
  3. Администраторские права для установки rpm и редактирования файлов в /etc или /opt.
  4. Команда 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:5865
export 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 на предмет ошибок аутентификации/таймаутов.

Отладка — что проверить, если не работает

  1. Порт локального прослушивания: убедитесь, что ntlmaps действительно слушает на 127.0.0.1:5865 (netstat -ltnp | grep 5865).
  2. Доступность родительского ISA-прокси с машины: попытайтесь telnet .
  3. Корректность домена/имени пользователя и пароля.
  4. Права на server.cfg: ntlmaps должен иметь доступ к конфигу, но файл не должен быть читаем для всех.
  5. Если используется 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.
  • При сбоях передать администратору вывод логов.

Мини-методология внедрения (шаги для команды)

  1. Тестовая машина: скачать и установить ntlmaps.
  2. Настроить server.cfg только с правами root и протестировать ручным запуском.
  3. Автоматизировать запуск (systemd unit или /etc/init.d), обеспечить ротацию логов.
  4. Широкое развёртывание: развернуть контейнер или отдельный сервис на выделенной машине, чтобы не хранить пароли на каждом хосте.

Небольшой справочник терминов (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 ntlmaps

Flowchart для быстрого принятия решения

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, централизованный сервис), уделите внимание безопасности хранения учётных данных и автоматизации запуска.

Важное: всегда согласовывайте внедрение подобных прокси-сервисов с сетевыми и информационной безопасностью вашей организации.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро