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

Оказывается, каждый 300-й мужчина имеет возможность удовлетворить себя орально.

Хотя можно настроить Squid для разрешения доступа только с определенных IP адресов, вам может понадобится, чтобы клиенты проходили проверку подлинности. Это может быть необходимо если IP адреса раздаются в сети динамически. Таким образом, авторизовавшись клиент сможет получить доступ в сеть с любой машины. Кроме того, авторизация удобна тем, что Squid ведет логи тех, кто пытается получить доступ.

Все браузеры и большинство программ умеют работать с прокси авторизацией. Браузеры используют всплывающее окно для ввода логина и пароля к прокси серверу. Другие программы(такие как wget или rpm) запросят логин и пароль в командной строке.

Каждый логин и пароль полученный Squid проходит проверку через внешнюю программу авторизации, которая и проверяет истинность введённых данных. Обычно такая программа просматривает специальный файл с логином и паролем. Но вы можете написать свою собственную программу авторизации, которая бы использовала LDAP серевер или список пользователей UNIX.

Для включеня прокси авторизации выполните следующие действия:

1. На главной странице модуля, нажмите на иконку Access Control(Контроль доступа).

Squid proxy module

Рисунок - Главная форма модуля Squid. Для увеличения картинки, нажмите на неё.

2. В появившейся форме выберите External Auth(Внешняя авторизация) из списка ACL типов и нажмите кнопку Create new ACL(Создать новый ACL).

Access Control lists

Рисунок - Таблица Access Control lists. Для увеличения картинки, нажмите на неё.

3. В форме которая открылась, введите auth в поле ACL name(Имя ACL) и выберите All users в поле External auth users(Внешние пользователи). Затем нажмите Save(Сохранить).

External auth ACL

Рисунок - Форма Create External Auth ACL. Для увеличения картинки, нажмите на неё.

4. Нажмите на ссылку Add proxy restriction(Добавить прокси ограничение).

5. Выберите действие Allow(Разрешить) в поле Action(Действие) и щелкните мышкой по созданному ACL auth из списка Match ACLs(Совпадающие с ACL). Это действие создаст прокси ограничение, которое разрешает доступ всем авторизованным клиентам. Они могут находится и за пределами вашей сети, поэтому Squid ведет лог файл, записывая всех, кто запросил доступ.

6. Нажмите на кнопку Save(Сохранить).

7. Используйте стрелку «Вверх» чтобы переместить новое ограничение выше всех других ограничений, которые разрешают доступ из вашей сети. Если новое ограничение будет стоять ниже их, то клиенты будут получать доступ к прокси серверу не проходя авторизацию, а следовательно и без записи в лог файл. Хотя возможно, это то, что вам и надо.

8. Нажмите на иконку Authentication Programs(Программы авторизации) на главной странице модуля.

Squid proxy module

Рисунок - Главная страница модуля Squid. Для увеличения картинки, нажмите на неё.

9. В поле Basic Authentication Program(Программа авторизации) выберите Webmin default(Webmin по умолчанию). Это означает, что будет использоваться встроенная в модуль простая система авторизации и вам не придется писать свою собственную. Конечно, вы можете использовать свою программу авторизации, выбрав последний пункт радио переключателя и введя в соседнее поле полный путь к ней(программе авторизации). Это программа должна считывать строки содержащие логин и пароль(разделенные пробелом) на входе, и на выходе должа выдавать строку OK или ERR для правильного или ошибочного ввода, соответственно.

External authentication program options

Рисунок - Таблица External authentication program options. Для увеличения картинки, нажмите на неё.

10. Окно авторизации в браузере будет содержать описание прокси сервера к которому производится подключение. По умолчанию это Squid proxy-caching web server, но вы можете заменить описание на что-нибудь своё(например, Corporate proxy) заполнив поле Proxy authentication realm(Описание прокси сервера).

11. Обычно, Squid кэширует пароли пользователей на 1 час. Таким образом, изменение пароля пользователя не вступит в силу одномоментно - должен пройти 1 час, чтобы изменение вступило в силу. Для уменьшения времени кэширования паролей, введите требуемое значение в поле Time to cache password for(Время кэширования паролей). Но помните, уменьшение этого значения означает увеличение нагрузки на сервер и замедление обработки поступающих запросов.

12. Нажмите на кнопку Save(Сохранить) и затем щелкните по Apply Changes(Применить изменения) на главной странице модуля.

Теперь когда авторизация включена, любой кто запросит доступ к вашему прокси из веб-браузера, должен будет пройти процедуру авторизации. Поскольку ни один пользователь ещё не создан, то никто не сможет пройти авторизацию. Для создания нескольких пользователей для авторизации, следуйте следующим инструкциям:

1. Нажмите на иконку Proxy Authentication(Прокси авторизация) на главной странице модуля и вы увидите таблицу пользователей прокси. Изначально она пуста.

Squid proxy module

Рисунок - Главная страница модуля Squid. Для увеличения картинки, нажмите на неё.

2. Нажмите на ссылку Add a new proxy user(Добавить нового пользователя прокси).

Proxy users

Рисунок - Таблица Proxy Authentication. Для увеличения картинки, нажмите на неё.

3. Введите логин в поле Username(Имя пользователя) и пароль в поле Password(Пароль).

Create proxy user

Рисунок - Форма Create Proxy User.

4. Для временного выключения пользователя, без его удаления, воспользуйтесь полем Enabled?(Включен?) и установите его значение в No(Нет).

5. Нажмите кнопку Create(Создать) для добавления пользователя, а затем на Apply Changes(Применить изменения). Шаг применения изменений обязателен после создания пользователя, так как программа авторизации Squid считывает файл с пользователями, только при запуске. Соотвтественно, Squid перечитает файл и при перезапуске.

Данные пользователя могут быть отредактированы по нажатию на его имя в списке пользователей прокси. Редактирование позволяет изменить логин, пароль и статус активности пользователя. После внесения изменений в данные пользователя, обязательно нужно нажать кнопку Save(Сохранить). Форма редактирования пользователя также позволяет удалить его из списка, путём нажатия на кнопку Delete(Удалить). И снова, кнопка Apply Changes(Применить изменения) должна быть ещё раз нажата для применения соответсвующих изменений. Squid кэширует пароли для снижения нагрузки на программу авторизации, поэтому изменение пароля произойдет через некоторое время после нажатия кнопки Apply Changes(Применить измениния).

Этот модуль управление пользователями прокси работает только, если выбрано Webmin default(Webmin по умолчанию) в поле Basic Authentication program(Программа авторизации) или если ваша собственная программа работает файлом пользователей, оформленным в стиле файла пользователей Apache. Если ваша программа авторизует пользователей используя другую базу данных  или другой сервер, или модуль не может определить файл содержащий пользователей, тогда иконки Proxy Authentication(Прокси авторизация) не будет на главной странице модуля.

Иногда вам может понадобится разрешить обычным UNIX пользователям авторизоватся в прокси сервере теми паролям, которыми они обычно используют при доступе к FTP или Telnet. Хотя можно написать программу которая производит авторизацию сверяясь с базой данных UNIX пользователей, здесь можно посоветовать иное решение - сконфигурировать модуль таким образом, чтобы он добавлял, удалял и обновлял пользователей прокси как только соответствующие UNIX пользователи были созданы, удалены или переименованы соответственно. Это очень полезно, чтобы открыть доступ всем UNIX пользователям разом, а не делать этого для каждого пользователя в отдельности. Как только вы включили авторизацию, которая идет по умолчанию в модуле, выполните следующие действия:

1. На главной странице модуля нажмите на ссылку Module Config(Конфигурация модуля), в левом верхнем углу.

Squid proxy module

Рисунок - Главная страница модуля Squid. Для увеличения картинки, нажмите на неё.

2. Поля Create proxy users when creating system users, Update proxy users when updating system users и Delete proxy users when deleting system users, говорят сами за себя. Они предназначены для автоматического создания, изменения и удаления пользователей прокси при создании, изменении и удалении UNIX пользователей. Для каждого из этих полей вы можете выбрать значения Yes(Да) или No(Нет). Возможно, вам необходимо, чтобы происходила синхронизация при удалении и изменении UNIX пользователей, но не хотите этого при создании пользователя, так как сами желаете решать какие пользователи будут иметь доступ к прокси серверу.

Squid module config

Рисунок - Конфигурирование модуля Squid. Для увеличения картинки, нажмите на неё.

3. Нажмите кнопку Save(Сохранить) для применения изменений. Теперь действия произведенные в модуле Webmin Users and Groups(Пользователи и группы), будут иметь силу и для Squid пользователей. Добавление же пользователей через консоль командами useradd или изменения пароля через passwd, однако, не будет иметь того же эффекта для Squid.


Ссылки:

К содержанию