squid ntlm auth и русские имена пользователей

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
narian
рядовой
Сообщения: 10
Зарегистрирован: 2008-01-07 7:01:05
Откуда: Владивосток
Контактная информация:

squid ntlm auth и русские имена пользователей

Непрочитанное сообщение narian » 2008-07-29 1:46:39

debian etch
squid3 3.0.PRE5-5
samba 3.0.24-6etch10
winbind 3.0.24-6etch10

Настроена связка squid + winbind для аутентификации пользователей из AD. Все бы хорошо, но не аутентифицируются пользователи с русскоязычными логинами, в логе сквида такая хрень:

Код: Выделить всё

7282554.895      0 192.168.1.50 TCP_DENIED/407 2635 GET http://www.ru/ - NONE/- text/html
7282563.384      5 192.168.1.50 TCP_DENIED/407 2700 GET http://www.ru/ %ce%ef%e5%f0%e0%f2%ee%f0 NONE/- text/html
Во многих источниках видел мнение, что с русскими логинами оно работать не будет, но натолкнулся на такое мнение:
http://www.opennet.ru/openforum/vsluhfo ... 00.html#26
По поводу русских имен пользователей в домене. При поднятии уровня контроллера домена и леса до "родного" Windows 2003 Server squid начал понимать русские имена (по умолчанию Windows 2003 Server в качестве контроллера домена функционирует в режиме совместимости с Windows 2000). Так что неприятное для многих ограничение снято. Хоть я и не сторонник локализованных логинов, но у многих пользователей серьезные проблемы со скоростью печати на английском."
домен и лес у меня работают в режиме 2003. контроллеры домена под управление 2003 Server R2 SP2 Rus.

конфиг самбы:

Код: Выделить всё

[global]
workgroup = BKBVLAD
server string = vlgate
netbios name = vlgate

wins server = 192.168.1.10
invalid users = root
dos charset = 866
unix charset = UTF-8
display charset = UTF-8

local master = no

log file = /var/log/samba/log.%m
max log size = 50
realm = bkbvlad.ru
security = ads
password server = AD PROXYSERVER
encrypt passwords = yes
winbind use default domain = yes
winbind uid = 10000-20000
winbind gid = 10000-20000

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no
use sendfile = yes 
Конфин сквида:

Код: Выделить всё

http_port 3128
cache_dir ufs /var/spool/squid3 10240 16 256

access_log /var/log/squid3/access.log squid
cache_log /var/log/squid3/cache.log

acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl all src 0.0.0.0/0.0.0.0
acl allowed_hosts src 192.168.1.0/255.255.255.0

auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 4
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

acl authusers proxy_auth REQUIRED
http_access allow authusers

http_access deny manager all
http_access deny all

cache_mgr admin@vl.kbsammit.ru
cache_effective_user proxy
cache_effective_group proxy

url_rewrite_program /usr/bin/squidGuard 
log.winbindd:

Код: Выделить всё

[2008/07/29 09:02:43, 3] nsswitch/winbindd_pam.c:winbindd_pam_auth(670)
[ 0]: pam auth ........
[2008/07/29 09:02:43, 8] lib/util.c:is_myname(2043)
is_myname("BKBVLAD") returns 0
............. - это, я так понимаю, в лог так записался логин пользователя "оператор", что странно - локаль UTF-8 и стоит display charset = UTF-8.

log.wb-BKBVLAD:

Код: Выделить всё

[2008/07/29 09:15:36, 5] rpc_parse/parse_prs.c:prs_uint32(708)
0014 ptr_user_info : 00000000
[2008/07/29 09:15:36, 5] rpc_parse/parse_prs.c:prs_uint32(708)
0018 auth_resp : 00000001
[2008/07/29 09:15:36, 5] rpc_parse/parse_prs.c:prs_ntstatus(767)
001c status : NT_STATUS_NO_SUCH_USER
[2008/07/29 09:15:36, 2] nsswitch/winbindd_pam.c:winbindd_dual_pam_auth(1290)
Plain-text authentication for user ........ returned NT_STATUS_NO_SUCH_USER (PAM: 10)
Говорит NT_STATUS_NO_SUCH_USER хотя в списке wbinfo -u этот пользователь есть.
Как с ним бороться? Заменить русский логин на логин латиницей не предстваляется возможным, так как некоторые из установленных программ должны работать под пользователем Оператор.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: squid ntlm auth и русские имена пользователей

Непрочитанное сообщение Alex Keda » 2008-11-10 21:02:24

может этим програмам не надо в инет?
А если надо - то можно выпустить на их сайты без авторизации
(у меня так и сделано для всяких клиент-банков и прочих - благо они лазиют на ограниченный круг сайтов которые юзерам не интересны)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
serge
майор
Сообщения: 2133
Зарегистрирован: 2006-07-30 15:34:14
Откуда: Саратов
Контактная информация:

Re: squid ntlm auth и русские имена пользователей

Непрочитанное сообщение serge » 2009-04-13 21:38:26

Тоже столкнулся с проблеммой русскоязычных логинов. Может кто-то уже нашел решение??? :pardon:

narian
рядовой
Сообщения: 10
Зарегистрирован: 2008-01-07 7:01:05
Откуда: Владивосток
Контактная информация:

Re: squid ntlm auth и русские имена пользователей

Непрочитанное сообщение narian » 2009-04-13 22:44:13

lissyara писал(а):может этим програмам не надо в инет?
А если надо - то можно выпустить на их сайты без авторизации
(у меня так и сделано для всяких клиент-банков и прочих - благо они лазиют на ограниченный круг сайтов которые юзерам не интересны)
К сожалению, так и приходится делать.
Кстати, проблема еще не только в логинах на кирилице, но и в паролях на кирилице - с паролями на русском тоже не пускает.

Аватара пользователя
serge
майор
Сообщения: 2133
Зарегистрирован: 2006-07-30 15:34:14
Откуда: Саратов
Контактная информация:

Re: squid ntlm auth и русские имена пользователей

Непрочитанное сообщение serge » 2009-04-14 21:41:01

narian писал(а):Кстати, проблема еще не только в логинах на кирилице, но и в паролях на кирилице - с паролями на русском тоже не пускает.
Та вроде пускает. Во всяком случае ntlm авторизация проходит нормально.
===
С перекодировкой разобрался. Нашел в инете скрипт на awk для перекодировки. Теперь другая задача. Sarg когда генерит статистику, то и ссылки на некоторые страницы идут с кирилическими словами. Как я понял IE передает их Nginx-у в кодировке 1251, а на сервере все в коях. В итоге ошибка что страница не найдена.

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

Re: squid ntlm auth и русские имена пользователей

Непрочитанное сообщение princeps » 2009-04-15 14:24:38

Не проще использовать логины на латиннице?
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

Аватара пользователя
serge
майор
Сообщения: 2133
Зарегистрирован: 2006-07-30 15:34:14
Откуда: Саратов
Контактная информация:

Re: squid ntlm auth и русские имена пользователей

Непрочитанное сообщение serge » 2009-04-15 17:45:25

princeps писал(а):Не проще использовать логины на латиннице?
Ну как тебе сказать... несовсем. Во-первых это уже для конторы типа стандарта (логин == русская фамилия юзера), во-вторых пользователям так удобнее (99,9% токо с русским дружат).
Поэтому получается подстраиваюсь под уже настроенный и работающий AD.

Аватара пользователя
serge
майор
Сообщения: 2133
Зарегистрирован: 2006-07-30 15:34:14
Откуда: Саратов
Контактная информация:

Re: squid ntlm auth и русские имена пользователей

Непрочитанное сообщение serge » 2009-04-17 15:38:35

serge писал(а):Теперь другая задача. Sarg когда генерит статистику, то и ссылки на некоторые страницы идут с кирилическими словами. Как я понял IE передает их Nginx-у в кодировке 1251, а на сервере все в коях. В итоге ошибка что страница не найдена.
Оказывается решение еще проще. У браузеров по дефолту включено кодировать запросы в UTF-8. При выключении этой опции запрос идет в кодировке страницы. Таким образом запросы с кирилицей в koi8-r, которой теперь у меня много в статистике, отрабатываются нормально. Стоит nginx с дефолтным конфигом.

Аватара пользователя
Dorlas
сержант
Сообщения: 257
Зарегистрирован: 2008-07-18 22:17:49

Re: squid ntlm auth и русские имена пользователей

Непрочитанное сообщение Dorlas » 2009-04-20 19:04:21

С перекодировкой разобрался. Нашел в инете скрипт на awk для перекодировки.
Можете выложить ? Очень интересует... :)

Аватара пользователя
serge
майор
Сообщения: 2133
Зарегистрирован: 2006-07-30 15:34:14
Откуда: Саратов
Контактная информация:

Re: squid ntlm auth и русские имена пользователей

Непрочитанное сообщение serge » 2009-04-21 9:07:23

В итоге вот что получилось для генерации статистики.

/usr/scripts/sarg.stat.sh (стоит в кроне на раз в час)

Код: Выделить всё

#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/root/bin

squid_logs_orig="/usr/local/squid/logs/access.log"
squid_logs_conv="/usr/local/squid/logs/access.cnv"

if [ -f "$squid_logs_conv" ]
then
        rm $squid_logs_conv
fi
cat $squid_logs_orig | /usr/scripts/squid.convert.awk > $squid_logs_conv
sarg
/usr/scripts/squid.convert.awk

Код: Выделить всё

#!/usr/bin/awk -f

BEGIN {
        for(i = 0; i < 10; i++)
                hex[i] = i
        hex["A"] = hex["a"] = 10
        hex["B"] = hex["b"] = 11
        hex["C"] = hex["c"] = 12
        hex["D"] = hex["d"] = 13
        hex["E"] = hex["e"] = 14
        hex["F"] = hex["f"] = 15
}

{

        ########################################################################
        # 8 - колонка - это имя пользователя
        # urldecode - в awk в стандартную библиотеку не входит, но можно найти
        # http://geni.ath.cx/unix.html#_One-liner_urldecode_functions
        name = $8
        name_decode = ""
        gsub(/\+/, " ", name)
        while(match(name, /%../)){
                if(RSTART > 1)
                        name_decode = name_decode sprintf("%s", substr(name, 1, RSTART-1))
                name_decode = name_decode sprintf("%c", hex[substr(name, RSTART+1, 1)] * 16 + hex[substr(name, RSTART+2, 1)])
                name = substr(name, RSTART+RLENGTH)
        }
        name_decode = name_decode name
        ########################################################################

        $8 = name_decode

        print
}
Скрипт на awk работает очень шустро (сам не ожидал что так быстро будет). Скрипт (awk) не мой, нашел в инете, ссылку на источник к сожалению не сохранил.

Аватара пользователя
Dorlas
сержант
Сообщения: 257
Зарегистрирован: 2008-07-18 22:17:49

Re: squid ntlm auth и русские имена пользователей

Непрочитанное сообщение Dorlas » 2009-04-21 11:10:02

Спасибо! :good:

Подцепил в LightSquid - красота :) (нужна как дублирующая SAMS система подсчета) :)