Недавно в компании, инфраструктуру которой мне приходится поддерживать, началась миграций рабочих станций пользователей со старушки Widows XP SP3 на Windows 7. Был разработан план миграции, протестирована и проверена работа пользовательских бизнес приложений в среде Windows 7, однако нашлась одна существенная проблема. Дело в том, что для доступа в Интернет в качестве прокси сервера применяется небезызвестный прокси-сервер для Linux Squid. И на сервере Squid настроенная доменная авторизация пользователей, с той целью, чтобы управление доступом в Интернет осуществлялось путем добавления/исключения пользователей в группу Active Directory. Так вот, заковыка заключалась в проблеме NTLM аутентификации Windows 7 на прокси-сервере Squid.
Каждые раз при запуске браузера Internet Explorer 8 появлялось всплывающее окно с просьбой ввести аутентификационные данные пользователя домена (имя и пароль). Однако, несмотря на то, что запрошенные данные вводились и они были корректными, всплывающее окно с требованием авторизоваться появлялось вновь и вновь, т.е. Интернет не работал.
Естественно, я проверил, что в настройках IE 8 установлена опция сквозной аутентификации (Tools->Internet Options->Advanced->Security/Enable Integrated Windows Authentication), и действительно она стояла, значит дело не в этом.
Так что же это могло быть? Побродив по разным Интернет форумам, я нашел описание подобной проблемы: «The problem is the autentificación NTLM of Windows7. It is necessary to create the following key in the registry to solve it» . Т.е. причина этого безобразия в том, что Microsoft полностью отказалась от использования LM и NTLM по умолчанию, все это связано с ужесточенными требованиями по безопасности в Windows 7 / 2008 Server R2. Поэтому и существует проблема с NTLM аутентификацией на Squid в Windows 7.
Решить эту проблему можно двумя методами:
1) Создать в реестре по пути
In HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa новый параметр типа DWORD с именем LmCompatibilityLevel, значение которого нужно задать равным 1.
2) Отредактировать групповую политику. Для чего нужно перейти в ветку Local Security Policy -> Security Settings -> Local Policies -> Security Options , найти там параметр с именем ‘Network security: LAN Manager authentication level‘, установить его равным ‘Set LM
& NTLM — Use NTLMv2 session if negotiated‘ (значение по умолчанию не определено ‘Not Defined’).
Осталось только перезагрузить компьютер (для политики достаточно выполнить gpupdate /force) и можно наслаждаться нормальной аутентификацией из Windows 7 на прокси-сервере Squid.
А как же безопасность сети при таком решении?
Безопасность, естественно, немного снижается, но если для вас это так критично, перейдите настройте Squid с аутентификацией и авторизацией в AD через Kerberos или совсем откажитесь от него
По второму пути я и пошел, заменил строки с ntlm на:
auth_param negotiate program c:/squid/libexec/mswin_negotiate_auth.exe
auth_param negotiate children 5
Всё остальное править не надо.