В корпоративной среде основанной на продуктах Microsoft, достаточно часто можно встретить использование прокси-сервера встроенного в ISA Server/Forefront TMG. Как правило, авторизация пользователей на таком прокси производится c помощью NTLM.
Если на сегодняшний день в Windows большинство программ имеют встроенную поддержку NTLM, то Linux этим похвастаться не может. Связи с чем, в данной статье речь пойдет о механизме использования прокси с NTLM аутентификацией в Linux.
Для этого мы будем использовать cntlm — небольшой, быстрый промежуточный HTTP-прокси, который возьмет функцию NTLM аутентификации на себя. Его задача пропускать через себя запросы от программ к прокси-серверу.
Установка cntlm
Чтобы установить cntlm в Debian/Ubuntu выполните следующую команду:
# apt-get install cntlm
Для установки cntlm в CentOS/RHEL необходимо подключить репозиторий Epel. После чего выполнить команду:
# yum -y install cntlm
Настройка cntlm
Откройте конфигурационный файл:
# nano /etc/cntlm.conf
Установите имя пользователя, домен, адрес и порт прокси-сервера, локальный интерфейс и порт на котором cntlm будет принимать входящие соединения:
Username user Domain domain.net Proxy 192.168.1.1:8080 Listen 127.0.0.1:3128
Запускаем cntlm:
# cntlm -c /etc/cntlm.conf
Выясним какой тип авторизации использует наш прокси-сервер:
# cntlm -c /etc/cntlm.conf -M http://ya.ru Password: Config profile 1/4... OK (HTTP code: 200) ----------------------------[ Profile 0 ]------ Auth NTLMv2 PassNTLMv2 C9ACE7FB80841EB5B94D1C4E10D7DB5B ------------------------------------------------
Теперь когда мы знаем тип используемой аутентификации и хеш нашего пароля. Необходимо добавить в сntlm.conf следующие параметры:
Username user Domain domain.net Proxy 192.168.1.1:8080 Listen 127.0.0.1:3128 Auth NTLM PassNTLMv2 C9ACE7FB80841EB5B94D1C4E10D7DB5B
Для использования cntlm в качестве локального прокси в Linux, нужно настроить переменные окружения http_proxy, https_proxy, ftp_proxy:
# export {http,https,ftp}_proxy="http://127.0.0.1:3128/"
Чтобы отключить прокси, выполните команду:
# unset {http,https,ftp}_proxy