Авторизация прокси по NTLM в Linux

Дата: 23.11.2015Метки:

В корпоративной среде основанной на продуктах 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