Как настроить прокси-сервер для аутентификации


8

Мой рабочий прокси-сервер требует аутентификации с учетными данными пользователя домена Microsoft AD. Все знают, как это работает: если вы входите на рабочую станцию ​​Windows, ваши запросы на доступ в Интернет на основе браузера Internet Explorer автоматически аутентифицируются (и идентифицируются) с использованием учетных данных для входа в домен.

Я обнаружил, что Firefox также может проходить аутентификацию на этих прокси-серверах и долго предполагал, что они «делают что-то особенное». Недавно коллега установил Linux Mint в виртуальной машине, и, к моему удивлению, он был занят получением обновлений из Интернета. Когда я спросил, как у него это получилось, он пожал плечами и сказал: «Это сработало».

Это побудило меня пересмотреть настройки прокси. Я запускаю Kubuntu (со смесью приложений G * и K *, но я использую приложения GTK только тогда, когда я убежден, что они намного лучше всего K *)

У меня все еще есть копия гостевой системы Windows, работающая на виртуальной машине VirtualBox, в основном для печати и для доступа к внутренним / корпоративным веб-сайтам (для которых требуется проверка подлинности и идентификация через учетные данные домена MS), а также для смены пароля моего домена каждые много дней ,

Поэтому было бы очень полезно, если бы я мог заставить [некоторые / большинство / все] мои приложения Linux работать через прокси-сервер. Мои самые неотложные потребности - чтобы Акрегатор и Муон могли работать. Другие приложения, которые могут принести пользу, - это некоторые приложения, которые автоматически обновляются (например, Virtual Box Extentions) или обертываются вокруг браузера (приходит на ум больше тем / настенных бумаг / и т. Д., А иногда используется wget)

Клиенты SSH / SCP могут работать через брандмауэр без аутентификации.

Какой правильный способ (инструмент и / или процедура) настроить это, в идеале в одном месте, потому что необходимость хранить мой пароль в нескольких местах - это рецепт для блокировки моего аккаунта: - /

О, и это было бы мечтой, если бы я мог иметь эквивалент утилиты отключения / включения прокси-сервера «Быстрый прокси» Firefox, например, одним щелчком мыши, чтобы включить или отключить использование прокси, без необходимости выходить из системы и обратно, в зависимости от того, в какой сети я нахожусь. На самом деле, если подумать, утилита должна быть способной смотреть на ваш IP-адрес и знать, когда вам нужно использовать прокси! Но я отвлекся.

Я представляю себе, что запуск локального прокси-сервера, который может динамически добавлять аутентификацию и пересылку на вышестоящий прокси-сервер при необходимости, может быть единственным реальным решением.


Какой тип прокси это? На основе Linux или Windows?
Midnightsteel

Прокси-сервер основан на Windows.
Йохан

Похоже, что прокси-сервер проходит мимо конфигурации, и ваш брандмауэр разрешает исходящий веб-трафик со всех хостов. Так ваш коллега мог просматривать без аутентификации. Является ли прокси-сервер, который вы используете ISA или TMG?
Midnightsteel

Брандмауэр не разрешает исходящие со всех хостов, иначе я бы просто обошел прокси-сервер. Что значит «проходить мимо конфигурации»? Позвольте мне уточнить: на моей рабочей станции Linux единственное приложение, которое может получить доступ к Интернету: a) Firefox (использующий собственную конфигурацию прокси-сервера и аутентификацию, хранящуюся в Firefox), а также приложения, работающие в виртуальной машине Windows (примечание - виртуальная машина Windows член домена и пользователь авторизуется по домену при входе в систему)
Йохан

Я не знаю, является ли это ISA или TMG. Если решение отличается в зависимости от того, я был бы заинтересован в обоих решениях.
Йохан

Ответы:


2

На моей рабочей станции Linux единственное приложение, которое может получить доступ к Интернету, это: а) Firefox (использующий собственную конфигурацию прокси-сервера и аутентификацию, хранящуюся в Firefox), а также приложения, работающие на виртуальной машине Windows (примечание - виртуальная машина Windows является членом домена и пользователь авторизуется по домену при входе в систему)

Вариант решения : Запустите веб-прокси на виртуальной машине Windows. Настройте свою систему на использование этого экземпляра в качестве прокси.

Поскольку ваша виртуальная машина Windows уже аутентифицирована, и через нее разрешен трафик, настройка прокси-сервера SOCKS на этом экземпляре виртуальной машины будет централизовать ваши потребности в аутентификации. Если это только для вас и ваших коробок, это должно быть хорошо и, вероятно, довольно просто.

В основе этой идеи лежит запуск демона SSHD на виртуальной машине Windows, чтобы вы могли делать такие вещи, как туннели SSH SOCKS из других своих блоков через виртуальную машину:

ssh -D 1080 windows-user@windows-vm

Для тех приложений, у которых могут быть проблемы или где вы не хотите перенастраивать приложения, вы можете использовать sshtunnel , который настроит правила iptables для маршрутизации трафика. Работает для систем Linux и Mac.

Если вам необходимо избежать установки прокси на самой виртуальной машине Windows, вы можете настроить прокси-сервер Squid, настроенный для аутентификации на Windows AD. Руководство по выполнению этого находится здесь:

Вариант решения : прокси-сервер Squid, прошедший проверку подлинности через AD / NTLM

http://techmiso.com/1934/howto-install-squid-web-proxy-server-with-active-directory-authentication/( мертвая ссылка )

Другое решение для NTLM-прокси, хотя я думаю, что оно работает на компьютере с Windows:

Вариант решения : прокси NTLM http://cntlm.sourceforge.net/


Я уже изучаю cntlm, он тоже находится в стандартных репозиториях Ubuntu.
Йохан

1
Решение cntlm представляется многообещающим. Пока что это позволяет Wget и хром работать. Wget работает, имея адрес cntlm: порт в файле .wgetrc. Chromium настроен на использование так называемых «настроек системного прокси-сервера», где я настроил прокси-сервер в настройках системы KDE-> Proxy-> Manual Configuration. Chromium использует это динамически, т. Е. Если я изменю настройку в KDE, Chromium будет затронут без необходимости перезапуска хрома. TBC
Йохан

До сих пор это все еще не работает для Konqueror, Muon или Akregator, ни один из которых не выставляет параметры прокси напрямую. Я считаю, что Muon использует apt-get в фоновом режиме, который настраивается аналогично wget. Я не понимаю разницы между параметрами конфигурации KDE «Прокси-сервер вручную» и KDE «Системный прокси-сервер», это может быть ключом к тому, чтобы заставить его работать для всех приложений. Я также заметил, что настройки KDE не заполняются в сценарии оболочки, даже после выхода из системы и возврата, что разочаровывает.
Йохан

Решение через прокси через MS-Windows для меня неприемлемо. Другие могут чувствовать себя по-другому, но запуск всего дополнительного экземпляра ОС только для того, чтобы добавить аутентификацию к исходящим сетевым пакетам, является слишком большой затратами ресурсов и не снимает мою зависимость от MS Windows.
Йохан

1
Я решил проблему, используя cntlm согласно предложению выше, и очень рекомендую это. У меня возникла проблема с большинством приложений KDE, не использующих глобальные настройки KDE, из-за неправильного формата, используемого при указании прокси-сервера в настройках прокси KDE. Между прочим, Chromium, кажется, не чувствителен к этому (я не учел http://при настройке прокси)
Johan

8

cntlm предоставляет решение вместе с некоторой конфигурацией.

Основные шаги, которые необходимо выполнить:

  1. Установите cntlm.
  2. Отредактируйте его файл конфигурации по адресу /etc/cntlm.conf, комментарии к нему делают это достаточно просто.
  3. Добавьте прокси-сервер (или два).
  4. Укажите свое имя пользователя и имя домена NT в соответствующих местах и ​​удалите ввод пароля.
  5. Запустите службу cntlm, например, через

    $ sudo /etc/init.d/cntlm start
    
  6. cntlm предоставляет способ протестировать прокси и сгенерировать хеш из вашего пароля - например, с помощью команды (как root)

    $ cntlm -I -M http://www.test.com
    
  7. cntlm запросит пароль вашего домена. Затем он проверит различные механизмы аутентификации на настроенном прокси-сервере. Когда рабочий метод найден, он печатает две строки, которые должны войти в его файл конфигурации.

  8. Остановите сервер cntlm и добавьте строки, полученные на шаге 6 выше, в /etc/cntlm.conf.
  9. Перезапустить cntlm

Сейчас cntlmработает и готов к использованию. Ряд мест может быть использован для настройки различных программ для его использования. cntlmЗатем прозрачно добавит токены аутентификации домена NT в исходящие пакеты и перенаправит их на настроенный прокси-сервер.

Использование Qt / KDE

Для собственных приложений Qt / KDE укажите «Использовать вручную настроенный прокси-сервер» в Системных настройках KDE -> Сетевые настройки -> Настройки прокси . Прокси указан как http://localhostпорт 3128 (по умолчанию, cntlmесли вы его не меняли). Эти приложения обновляются динамически с новыми настройками, и для их обновления не требуется перезапуск или выход из системы / вход в систему.

Dropbox & Google клиенты

Многие приложения могут использовать переменные среды оболочки. Заслуживают внимания клиенты Dropbox и Google Earth. Для этих приложений используйте переменные среды оболочки, подобные этим:

no_proxy=localhost,127.0.0.0/8,*.local
NO_PROXY=localhost,127.0.0.0/8,*.local
all_proxy=socks://localhost:3128/
ALL_PROXY=socks://localhost:3128
http_proxy=http://localhost:3128
HTTP_PROXY=http://localhost:3128
ftp_proxy=http://localhost:3128
FTP_PROXY=http://localhost:3128
https_proxy=http://localhost:3128
HTTPS_PROXY=http://localhost:3128

s3cmd, curl, & wget

Примечание. Некоторые приложения будут использовать только имена в нижнем регистре, другие - только имена в верхнем регистре, некоторые сначала попробуют одно, а затем другое.

s3cmd(Клиент Amazon S3), curlи wgetможет быть дополнительно настроен через свои собственные файлы конфигурации при желании. Это удобно, потому что они читают свои собственные файлы конфигурации при каждом вызове. Поскольку эти программы обычно недолговечны (после завершения загрузки существует один вызов), это очень полезно.

Формат для s3cmdв ~/.s3cfgэто:

proxy_host = localhost
proxy_port = 3128

Формат для Wget в ~/.wgetrcэто:

https_proxy = http://localhost:3128
http_proxy = http://localhost:3128
ftp_proxy = http://localhost:3128

Формат для curlв ~/.curlrcэто:

proxy = localhost:3128

С другой стороны, редактирование профиля оболочки или других файлов конфигурации среды обычно требует перезагрузки, выхода из системы и повторного входа или чего-либо подобного. Это стоит исследовать /etc/environmentи т. Д. ~/.pam_environment, ~/.kde/env/proxy.shПоскольку это стандартные места для настройки параметров прокси-сервера, настроенных с помощью переменных среды оболочки, особенно для воздействия на всех пользователей и служб в системе.

Я также понимаю, что можно изменить настройки среды для каждого приложения, используя соответствующие .desktopфайлы, но еще не попробовал (успешно).

VirtualBox

VirtualBox может быть настроен для использования прокси (например, для проверки и загрузки обновлений программного обеспечения) с помощью его графического интерфейса или с помощью команды:

$ VBoxManage setextradata global GUI/ProxySettings \
    "proxyEnabled,localhost,3128,authDisabled,,"

Для полноты, чтобы отключить его, используйте:

$ VBoxManage setextradata global GUI/ProxySettings \    
    "proxyDisabled,,,authDisabled,,"

Fire Fox

Для Firefox я использую аддон QuickProxy. Сам Firefox, если настроен вручную для использования прокси-сервера на локальном компьютере, поэтому QuickProxy просто включает / отключает настройку.

APT

APT (используется в фоновом режиме synaptic, muon и friends) использует файл конфигурации в /etc/apt/apt.conf.d/, например, 00proxy Включение прокси для APT выполняется с помощью таких строк:

Acquire::http::Proxy "http://localhost:3128";
#Acquire::ftp::proxy "ftp://localhost:3128/";
#Acquire::https::proxy "https://localhost:3128/";

Примечание: add-apt-repository использует корневой профиль, или вы можете настроить sudo, чтобы разрешить сброс всех настроек http * _proxy.

Скрипт, чтобы управлять ими всеми

FWIW Я сейчас нахожусь в процессе написания модульного скрипта для включения / отключения прокси для многочисленных программ. До сих пор я написал следующие модули:

$ ls -lF proxymanager/modules/
total 60
-rwxr-xr-x 1 root root  919 Oct  8 17:27 apt*
-rwxr-xr-x 1 root root 1037 Oct  8 13:10 bashrc*
-rwxr-xr-x 1 root root  391 Oct  8 12:18 cntlm*
-rwxr-xr-x 1 root root  684 Oct  8 12:58 curl*
-rwxr-xr-x 1 root root  609 Oct  8 13:02 dropbox*
-rwxr-xr-x 1 root root  672 Oct  8 12:18 gnome*
-rwxr-xr-x 1 root root  691 Oct  8 12:18 kde*
-rwxr-xr-x 1 root root  689 Oct  8 13:03 root_bashrc*
-rwxr-xr-x 1 root root  691 Oct  8 13:03 root_curl*
-rwxr-xr-x 1 root root  827 Oct  8 13:03 s3cmd*
-rwxr-xr-x 1 root root  454 Oct  8 13:03 survive_reboot*
-rwxr-xr-x 1 root root  860 Oct  8 13:06 suse-sysproxy*
-rwxr-xr-x 1 root root  653 Oct  8 12:46 sysenvironment*
-rwxr-xr-x 1 root root  465 Oct  8 13:04 virtualbox*
-rwxr-xr-x 1 root root  573 Oct  8 13:04 wgetrc*

А также контрольное приложение. Надеемся, что скоро они будут перемещены в GitHub или другой онлайн-дом.


С тех пор он перешел на GitHub, получил больше модулей и медленно, но верно приближается к удобной форме. Смелые и любящие приключения люди могут найти это полезным: github.com/Tahaan/proxymanager
Johan

Новая вещь для изучения. Спасибо. Как я могу передать пароль cntlm в командной строке ... Я не хочу никаких запросов с просьбой ввести пароль?
Thushi

0

Проверка подлинности прокси с помощью ntlm хорошо объяснена в ссылках ниже.

Но проблема с ntlm в том, что вам приходится обновлять cntlmфайл конфигурации много раз в день. Рассмотрим ситуацию, когда разные пользователи совместно используют общий компьютер, и им приходится обновлять свой пароль AD в cntlmфайле конфигурации при каждом входе в систему. Возможно, существует метод, позволяющий автоматически обновлять cntlmфайл конфигурации при каждом входе пользователя в систему.


Я обновляю свой конфигурационный файл cntlm только при изменении моего пароля прокси-сервера NTLM (пароль домена).
Йохан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.