Есть вопрос! — ntlm аутентификация при прозрачном проксировании
Добрый день
Что касается темы поста: сразу скажу - что знаю о фактической невозможности сего процесса, причем сам об этом неоднократно говорил людям ...
но недавно рыская в сети, по совсем другому вопросу, случайно обнаружил весьма интересную статью из журнала хакер за 2004 год
http://samag.ru/archive/article/262
там автор исходя из описания протокола HTTP по документу RFC2616 - предположил теоретическую возможность ntlm авторизации на прозрачном прокси и проводил весьма любопытный эксперимент ,создав на перл тестовый прокси-сервер с реализацией выше описанного функционала.
Суть вопроса в следующем:
там же в статье есть ссылка на патч для Squid-2.5.STABLE3 (с реализацией всего багачества) - но вот незадача - ссылка, куда патчик был выложен ,увы мертва: http://www.comprice.ru/cmapuk/squid_patch.tgz , других ссылок не нашел ... (((
добры люди - может у кого этот патч в закромах остался ? дайте посмотреть ?
пытался сам конструировать но в squid 3.1.11:
в /src/auth/Acl.cc в строке 26 убирал отмену авторизации при прозрачном проксировании
но видать делаю что то не так, либо браузеры перестали фичу поддерживать, при включении intercept режима в squid и заворачивании http 80 порта на прокси порт 3128 в браузере получаю буквально следующее:
ERROR
Cache Доступ запрещён.
При получении URL http://www.mail.ru/ произошла следующая ошибка
Доступ к кэшу запрещён.
Извините, Вы не можете запросить http://www.mail.ru/ из этого кэша до тех пор, пока не пройдёте аутентификацию.
Если у Вас возникли проблемы с аутентификацией, пожалуйста, свяжитесь с администратором кэша или смените Ваш пароль по умолчанию.
Создано Wed, 09 Mar 2011 17:29:57 GMT на arouter (squid/3.1.11)
ну и в /var/log/squid/access.log
1299691740.667 1 192.168.10.4 TCP_DENIED/407 4954 GET http://www.mail.ru/ - NONE/- text/html
1299691740.696 1 192.168.10.4 TCP_DENIED/407 4489 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html
1299691740.994 1 192.168.10.4 TCP_DENIED/407 4954 GET http://www.mail.ru/ - NONE/- text/html
1299691741.019 1 192.168.10.4 TCP_DENIED/407 4489 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html
1299691741.239 1 192.168.10.4 TCP_DENIED/407 4954 GET http://www.mail.ru/ - NONE/- text/html
1299691741.260 1 192.168.10.4 TCP_DENIED/407 4489 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html
1299691741.474 1 192.168.10.4 TCP_DENIED/407 4954 GET http://www.mail.ru/ - NONE/- text/html
1299691741.496 1 192.168.10.4 TCP_DENIED/407 4489 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html
1299691741.743 1 192.168.10.4 TCP_DENIED/407 4954 GET http://www.mail.ru/ - NONE/- text/html
1299691741.764 1 192.168.10.4 TCP_DENIED/407 4489 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html
соответсвенно
п.с:
пытался проверить теоретическую возможность самой авторизации через прокси сервер на perl - из статьи (вдруг современные браузеры действительно фичу не поддерживают), но и тут наткнулся на грабли - при старте скрипта получаю ошибку
пробовал на версиях:
perl-5.8.8-32 в centos
и
perl 5.10.1-5 в archlinux
результат - один и тот же .....
не спорю, возможно в перле недоставлен какой модуль.
пардоньте в perl я не силен - а проверить хочется :(
навсякий - то что установлено из перл в арче:
pacman -Qs perl
local/pcre 8.10-1
A library that implements Perl 5-style regular expressions
local/perl 5.10.1-5 (base)
Practical Extraction and Report Language
local/perl-error 0.17016-1
Perl/CPAN Error module - Error/exception handling in an OO-ish way
local/perl-io-socket-ssl 1.33-1
Nearly transparent SSL encapsulation for IO::Socket::INET
local/perl-lockfile-simple 0.207-1
Perl/CPAN Module Crypt::Simple
local/perl-net-ssleay 1.36-2
Perl extension for using OpenSSL
local/perl-xml-parser 2.36-6
Expat-based XML parser module for perl
local/perl-xml-simple 2.18-2
Simple XML parser for perl
UPDATE
Вобщем:
сылку на статью лучше использовать другую:
http://av5.com/journals-magazines-online/1/40/357
в первой ссылке съедены в коде обратные слеши - потому и не пускался тестовый сервер, игры с которым выявили один факт:
во всех тестированных мною современных браузерах (firefox 3.6.6 , ie 8 , opera 11) - аутентификация на прозрачном проксе не срабатывает - лог с тестового сервера выглядит так:
Thu Mar 10 20:36:47 2011
GET / HTTP/1.1
Host: www.sex.ru
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.6) Gecko/20100627 Firefox/3.6.6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
//====//
Thu Mar 10 20:36:47 2011
HTTP/1.1 407 Proxy Authentication Required
Server: squid/2.5.STABLE3
Mime-Version: 1.0
Content-Type: text/html
Content-Length: 20
Expires: Wed, 26 Nov 2001 10:01:53 GMT
Proxy-Authenticate: NTLM
Proxy-Authenticate: Basic realm="<-- 407 Protected Proxy-->"
Connection: close
//====//
и дальше процесс не идет - видимо по соображениям безопасности
для чистоты эксперимента скачал MozillaFirebird 0.6.1 - вот на нем то как раз все и работает.... лог:
Thu Mar 10 20:34:11 2011
GET / HTTP/1.1
Host: www.sex.ru
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cache-Control: max-age=0
//====//
Thu Mar 10 20:34:11 2011
HTTP/1.1 407 Proxy Authentication Required
Server: squid/2.5.STABLE3
Mime-Version: 1.0
Content-Type: text/html
Content-Length: 20
Expires: Wed, 26 Nov 2001 10:01:53 GMT
Proxy-Authenticate: NTLM
Proxy-Authenticate: Basic realm="<-- 407 Protected Proxy-->"
Connection: close
//====//
Thu Mar 10 20:34:11 2011
GET / HTTP/1.1
Host: www.sex.ru
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cache-Control: max-age=0, max-age=0
Proxy-Authorization: Basic cm9vdDpxYXp3c3g=
//====//
Thu Mar 10 20:34:11 2011
HTTP/1.1 401 Unauthorized
Server: squid/2.5.STABLE3
Mime-Version: 1.0
Content-Type: text/html
Content-Length: 20
Expires: Wed, 26 Nov 2001 10:01:53 GMT
WWW-Authenticate: Basic realm=" --== Protected web-Area ==--"
Connection: close
//====//
Thu Mar 10 20:34:11 2011
GET / HTTP/1.1
Host: www.sex.ru
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cache-Control: max-age=0, max-age=0, max-age=0
Proxy-Authorization: Basic cm9vdDpxYXp3c3g=
Authorization: Basic cm9vdDpxYXp3c3g=
//====//
Thu Mar 10 20:34:11 2011
HTTP/1.1 200 OK
Server: squid/2.5.STABLE3
Mime-Version: 1.0
Content-Type: text/html
Content-Length: 19
Expires: Wed, 26 Nov 2001 10:01:53 GMT
Connection: close
//====//
причем пытался пройти авторизацию и на своём патче для сквида - но тут дальше вызыва basic авторизации в браузере дело не идет
Что касается темы поста: сразу скажу - что знаю о фактической невозможности сего процесса, причем сам об этом неоднократно говорил людям ...
но недавно рыская в сети, по совсем другому вопросу, случайно обнаружил весьма интересную статью из журнала хакер за 2004 год
http://samag.ru/archive/article/262
там автор исходя из описания протокола HTTP по документу RFC2616 - предположил теоретическую возможность ntlm авторизации на прозрачном прокси и проводил весьма любопытный эксперимент ,создав на перл тестовый прокси-сервер с реализацией выше описанного функционала.
Суть вопроса в следующем:
там же в статье есть ссылка на патч для Squid-2.5.STABLE3 (с реализацией всего багачества) - но вот незадача - ссылка, куда патчик был выложен ,увы мертва: http://www.comprice.ru/cmapuk/squid_patch.tgz , других ссылок не нашел ... (((
добры люди - может у кого этот патч в закромах остался ? дайте посмотреть ?
пытался сам конструировать но в squid 3.1.11:
в /src/auth/Acl.cc в строке 26 убирал отмену авторизации при прозрачном проксировании
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
но видать делаю что то не так, либо браузеры перестали фичу поддерживать, при включении intercept режима в squid и заворачивании http 80 порта на прокси порт 3128 в браузере получаю буквально следующее:
ERROR
Cache Доступ запрещён.
При получении URL http://www.mail.ru/ произошла следующая ошибка
Доступ к кэшу запрещён.
Извините, Вы не можете запросить http://www.mail.ru/ из этого кэша до тех пор, пока не пройдёте аутентификацию.
Если у Вас возникли проблемы с аутентификацией, пожалуйста, свяжитесь с администратором кэша или смените Ваш пароль по умолчанию.
Создано Wed, 09 Mar 2011 17:29:57 GMT на arouter (squid/3.1.11)
ну и в /var/log/squid/access.log
1299691740.667 1 192.168.10.4 TCP_DENIED/407 4954 GET http://www.mail.ru/ - NONE/- text/html
1299691740.696 1 192.168.10.4 TCP_DENIED/407 4489 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html
1299691740.994 1 192.168.10.4 TCP_DENIED/407 4954 GET http://www.mail.ru/ - NONE/- text/html
1299691741.019 1 192.168.10.4 TCP_DENIED/407 4489 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html
1299691741.239 1 192.168.10.4 TCP_DENIED/407 4954 GET http://www.mail.ru/ - NONE/- text/html
1299691741.260 1 192.168.10.4 TCP_DENIED/407 4489 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html
1299691741.474 1 192.168.10.4 TCP_DENIED/407 4954 GET http://www.mail.ru/ - NONE/- text/html
1299691741.496 1 192.168.10.4 TCP_DENIED/407 4489 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html
1299691741.743 1 192.168.10.4 TCP_DENIED/407 4954 GET http://www.mail.ru/ - NONE/- text/html
1299691741.764 1 192.168.10.4 TCP_DENIED/407 4489 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html
соответсвенно
п.с:
пытался проверить теоретическую возможность самой авторизации через прокси сервер на perl - из статьи (вдруг современные браузеры действительно фичу не поддерживают), но и тут наткнулся на грабли - при старте скрипта получаю ошибку
Quantifier follows nothing in regex; marked by <-- HERE in m/? <-- HERE 12Authorization/ at ./proxy_perl_server line 75.
пробовал на версиях:
perl-5.8.8-32 в centos
и
perl 5.10.1-5 в archlinux
результат - один и тот же .....
не спорю, возможно в перле недоставлен какой модуль.
пардоньте в perl я не силен - а проверить хочется :(
навсякий - то что установлено из перл в арче:
pacman -Qs perl
local/pcre 8.10-1
A library that implements Perl 5-style regular expressions
local/perl 5.10.1-5 (base)
Practical Extraction and Report Language
local/perl-error 0.17016-1
Perl/CPAN Error module - Error/exception handling in an OO-ish way
local/perl-io-socket-ssl 1.33-1
Nearly transparent SSL encapsulation for IO::Socket::INET
local/perl-lockfile-simple 0.207-1
Perl/CPAN Module Crypt::Simple
local/perl-net-ssleay 1.36-2
Perl extension for using OpenSSL
local/perl-xml-parser 2.36-6
Expat-based XML parser module for perl
local/perl-xml-simple 2.18-2
Simple XML parser for perl
UPDATE
Вобщем:
сылку на статью лучше использовать другую:
http://av5.com/journals-magazines-online/1/40/357
в первой ссылке съедены в коде обратные слеши - потому и не пускался тестовый сервер, игры с которым выявили один факт:
во всех тестированных мною современных браузерах (firefox 3.6.6 , ie 8 , opera 11) - аутентификация на прозрачном проксе не срабатывает - лог с тестового сервера выглядит так:
Thu Mar 10 20:36:47 2011
GET / HTTP/1.1
Host: www.sex.ru
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.6) Gecko/20100627 Firefox/3.6.6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
//====//
Thu Mar 10 20:36:47 2011
HTTP/1.1 407 Proxy Authentication Required
Server: squid/2.5.STABLE3
Mime-Version: 1.0
Content-Type: text/html
Content-Length: 20
Expires: Wed, 26 Nov 2001 10:01:53 GMT
Proxy-Authenticate: NTLM
Proxy-Authenticate: Basic realm="<-- 407 Protected Proxy-->"
Connection: close
407 Unauth
//====//
и дальше процесс не идет - видимо по соображениям безопасности
для чистоты эксперимента скачал MozillaFirebird 0.6.1 - вот на нем то как раз все и работает.... лог:
Thu Mar 10 20:34:11 2011
GET / HTTP/1.1
Host: www.sex.ru
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cache-Control: max-age=0
//====//
Thu Mar 10 20:34:11 2011
HTTP/1.1 407 Proxy Authentication Required
Server: squid/2.5.STABLE3
Mime-Version: 1.0
Content-Type: text/html
Content-Length: 20
Expires: Wed, 26 Nov 2001 10:01:53 GMT
Proxy-Authenticate: NTLM
Proxy-Authenticate: Basic realm="<-- 407 Protected Proxy-->"
Connection: close
407 Unauth
//====//
Thu Mar 10 20:34:11 2011
GET / HTTP/1.1
Host: www.sex.ru
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cache-Control: max-age=0, max-age=0
Proxy-Authorization: Basic cm9vdDpxYXp3c3g=
//====//
Thu Mar 10 20:34:11 2011
HTTP/1.1 401 Unauthorized
Server: squid/2.5.STABLE3
Mime-Version: 1.0
Content-Type: text/html
Content-Length: 20
Expires: Wed, 26 Nov 2001 10:01:53 GMT
WWW-Authenticate: Basic realm=" --== Protected web-Area ==--"
Connection: close
401 Unauth
//====//
Thu Mar 10 20:34:11 2011
GET / HTTP/1.1
Host: www.sex.ru
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cache-Control: max-age=0, max-age=0, max-age=0
Proxy-Authorization: Basic cm9vdDpxYXp3c3g=
Authorization: Basic cm9vdDpxYXp3c3g=
//====//
Thu Mar 10 20:34:11 2011
HTTP/1.1 200 OK
Server: squid/2.5.STABLE3
Mime-Version: 1.0
Content-Type: text/html
Content-Length: 19
Expires: Wed, 26 Nov 2001 10:01:53 GMT
Connection: close
200 OK!!!
//====//
причем пытался пройти авторизацию и на своём патче для сквида - но тут дальше вызыва basic авторизации в браузере дело не идет