Сквозная аутентификация NTLM Firefox

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модератор: SLEDopit

grandfa8
Сообщения: 21
ОС: Ubuntu 16.04, gentoo

Сквозная аутентификация NTLM Firefox

Сообщение grandfa8 »

Всем привет!
Имеется проблема с прозрачной аутентификацией в Firefox по NTLM
Есть gentoo на ней x2go, браузер Firefox 45.2.0, прокси Cisco Iron Port, samba 4.2.9, kerberos (конфиги samba, kerberos ниже) заведена в домен AD.
Доменные пользователи на сервер заходят билеты получают. При попытке получить доступ к какому-либо ресурсу в Firefox вылезает окно с аутентификацией на прокси. Параметр в about:config network.auth.force-generic-ntlm в состоянии false.
Если ввести доменные учетные данные то все работает как надо, а вот прозрачно никак не хочет аутентифицировать. В логах Firefox пишет следующее, а именно результат вывода ntlm_auth:

Логи Firefox:
Spoiler

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

-1152440512[7f0bb9e63340]: nsHttpNTLMAuth::ChallengeReceived [ss=0 cs=0]
-1152440512[7f0bb9e63340]: Force use of generic ntlm auth module: 0
-1152440512[7f0bb9e63340]: Default credentials allowed for proxy: 1
-1152440512[7f0bb9e63340]: Writing to ntlm_auth: YR
-1152440512[7f0bb9e63340]: Read from ntlm_auth: PW
-1152440512[7f0bb9e63340]: Native sys-ntlm auth module not found.
-1152440512[7f0bb9e63340]: Trying to fall back on internal ntlm auth.
-1152440512[7f0bb9e63340]:   identity invalid = 1
-1152440512[7f0bb9e63340]: nsHttpChannelAuthProvider::PromptForIdentity [this=7f0b98a2d6a0 channel=7f0b9775aca8]
-1152440512[7f0bb9e63340]: Suspending the transaction, asynchronously prompting for credentials
-1152440512[7f0bb9e63340]: Destroying nsHttpChannel [this=7f0b9cfd9000]
-1152440512[7f0bb9e63340]: Destroying HttpBaseChannel @9cfd9000
-1152440512[7f0bb9e63340]: Destroying nsHttpConnectionInfo @8d877d30
-1152440512[7f0bb9e63340]: Destroying HttpChannelParent [this=7f0b8e959290]


Конфиг smb.conf:
Spoiler

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

[global]
        workgroup = DC
        netbios name = srv
        server string = SRV X2Go
        security = ads
        load printers = no
        log file = /var/log/samba/log.%m
        max log size = 50
        log level = 3
        encrypt passwords = yes
        unix password sync = yes
        lanman auth = yes
        passwd program = /usr/bin/passwd %u
        interfaces = 10.25.174.58
        local master = no
        os level = 33
        domain master = no
        preferred master = no
        wins support = no
#       wins server = 10.25.160.136
        dns proxy = no
        map to guest = bad user
#       socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        username map = /etc/samba/smbusers
        default case = lower
        case sensitive = no
#       case sensitive = yes
        dos charset = cp866
        unix charset = utf-8
        allow trusted domains = yes
        algorithmic rid base = 100000
        idmap config DC : range = 10000-500000
        idmap config DC : backend = rid
        winbind separator = /
        winbind refresh tickets = yes
        winbind use default domain = yes
        winbind uid = 10000-500000
        winbind gid = 10000-500000
        winbind enum groups = yes
        winbind enum users = yes
        realm = DC
        client ntlmv2 auth = no
#       client ntlmv2 auth = yes
#       client ldap sasl wrapping = plain
        ntlm auth = yes
        auth methods = winbind
        inherit acls = Yes
        map acl inherit = Yes
        nt acl support = yes
        inherit permissions = yes
        inherit owner = yes
        admin users = @DOMLOC//admins
        passdb backend = tdbsam
        template shell = /bin/bash
[homes]
        comment = Home Directories
        valid users = %S
        read only = No


Конфиг kdc.conf:
Spoiler
[code][kdcdefaults]
kdc_ports = 750,88

[realms]
DC = {
database_name = /var/lib/krb5kdc/principal
admin_keytab = FILE:/etc/krb5.keytab
# acl_file = /var/lib/krb5kdc/kadm5.acl
key_stash_file = /var/lib/krb5kdc/.k5.ASTRAKHAN-DOBYCHA.GAZPROM.RU
kdc_ports = 750,88
max_life = 10h 0m 0s
max_renewable_life = 7d 0h 0m 0s
default_principal_flags = +preauth
master_key_type = des-cbc-crc
supported_enctypes = rc4-hmac:normal des-cbc-crc:normal des3-cbc-raw:normal des3-cbc-sha1:normal des-cbc-crc:afs3
}
[code]


Конфиг krb5.conf:
Spoiler
[code][libdefaults]
default_realm = DC
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
fcc-mit-ticketflags = true
ticket_lifetime = 24000
dns_lookup_realm = true
dns_lookup_kdc = true
clockskew = 600
default_keytab_name = FILE:/etc/krb5.keytab
allow_weak_crypto = true

[realms]
DC = {
admin_server = 10.25.160.136
default_domain = DC
kdc = 10.25.160.136
kdc = 10.25.160.135
}

[domain_realm]
.dc = DC
dc = DC

[logging]
default = FILE:/var/log/kerberos/krb5libs.log
kdc = FILE:/var/log/kerberos/krb5kdc.log
admin_server = FILE:/var/log/kerberos/kadmind.log

[appdefaults]
pam = {
debug = true
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}

[kdc]
profile = /etc/kdc.conf

[login]
krb4_convert = false
krb4_get_tickets = false
[code]


Бьюсь пару недель, не могу решить.
Если какой-либо инфы не хватает, выложу.
Заранее спасибо
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17911
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Сквозная аутентификация NTLM Firefox

Сообщение Bizdelnick »

https://bugzilla.mozilla.org/show_bug.cgi?id=645806
А вот тут есть кое-что более конкретное: https://bugzilla.mozilla.org/show_bug.cgi?id=554122#c7. Посмотрите strace, если у Вас будет то же самое, и если при запуске из каталога, где лежит ntlm_auth, авторизация будет работать, то надо в коде заменить execve() на execvpe().
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

grandfa8
Сообщения: 21
ОС: Ubuntu 16.04, gentoo

Re: Сквозная аутентификация NTLM Firefox

Сообщение grandfa8 »

Bizdelnick писал(а):
25.07.2016 09:47
https://bugzilla.mozilla.org/show_bug.cgi?id=645806
А вот тут есть кое-что более конкретное: https://bugzilla.mozilla.org/show_bug.cgi?id=554122#c7. Посмотрите strace, если у Вас будет то же самое, и если при запуске из каталога, где лежит ntlm_auth, авторизация будет работать, то надо в коде заменить execve() на execvpe().

Спасибо за ответ. Да я видел эти баги. ntlm_auth на ходится в одном каталоге с firefox-bin, а именно /usr/bin.
Выполнил команду

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

strace -f -e trace=execve  -o rst.txt /opt/firefox/firefox-bin

В результате которой

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

23378 execve("ntlm_auth", ["ntlm_auth", "--helper-protocol", "ntlmssp-client-1", "--use-cached-creds", "--username", "basvarov"], [/* 41 vars */]) = 0
23378 +++ exited with 0 +++
23377 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=23378, si_uid=81605, si_status=0, si_utime=2, si_stime=2} ---

Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17911
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Сквозная аутентификация NTLM Firefox

Сообщение Bizdelnick »

grandfa8 писал(а):
25.07.2016 16:02
ntlm_auth на ходится в одном каталоге с firefox-bin, а именно /usr/bin.

Где лежит firefox-bin — не имеет значения. Важно, находится ли ntlm_auth в текущем каталоге, ведь абсолютный путь не указан.

grandfa8 писал(а):
25.07.2016 16:02
в одном каталоге с firefox-bin, а именно /usr/bin
grandfa8 писал(а):
25.07.2016 16:02
/opt/firefox/firefox-bin

?
Если у Вас две установки firefox, то для начала определитесь, с которой из них разбираетесь.

grandfa8 писал(а):
25.07.2016 16:02
В результате которой

В этот раз тоже спросил пароль?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

grandfa8
Сообщения: 21
ОС: Ubuntu 16.04, gentoo

Re: Сквозная аутентификация NTLM Firefox

Сообщение grandfa8 »

В этот раз тоже пароль запросил. Опечатался я имел ввиду каталог /opt/firefox в нем лежит симлин на ntlm_auth.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17911
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Сквозная аутентификация NTLM Firefox

Сообщение Bizdelnick »

cd /opt/firefox
./firefox-bin
Так что-нибудь изменится?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

grandfa8
Сообщения: 21
ОС: Ubuntu 16.04, gentoo

Re: Сквозная аутентификация NTLM Firefox

Сообщение grandfa8 »

Bizdelnick писал(а):
25.07.2016 17:07
cd /opt/firefox
./firefox-bin
Так что-нибудь изменится?

Доброго времени суток!
Проделал, не помогло. Скриншот с результатом и логи ниже.

log.smbd:
Spoiler

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

Could not find child 31892 -- ignoring
[2016/07/26 09:48:55.088320,  2] ../source3/smbd/server.c:443(remove_child_pid)
  Could not find child 31916 -- ignoring
[2016/07/26 09:49:55.152584,  2] ../source3/smbd/server.c:443(remove_child_pid)
  Could not find child 31918 -- ignoring
[2016/07/26 09:50:55.218463,  2] ../source3/smbd/server.c:443(remove_child_pid)
  Could not find child 31948 -- ignoring
[2016/07/26 09:51:55.283611,  2] ../source3/smbd/server.c:443(remove_child_pid)
  Could not find child 32503 -- ignoring

log.wb-DC:
Spoiler

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

[2016/07/26 09:51:39.888581,  3] ../source3/winbindd/winbindd_msrpc.c:300(msrpc_sid_to_name)
  msrpc_sid_to_name: S-1-5-21-1326590310-97429350-2287900510-39536 for domain DC
[2016/07/26 09:51:39.888684,  5] ../source3/rpc_client/cli_pipe.c:756(rpc_api_pipe_send)
  rpc_api_pipe: host DC-004.dc
[2016/07/26 09:51:39.888747,  5] ../libcli/smb/smb2_signing.c:92(smb2_signing_sign_pdu)
  signed SMB2 message
[2016/07/26 09:51:39.894593,  5] ../source3/rpc_client/cli_pipe.c:98(rpc_read_send)
  rpc_read_send: data_to_read: 224
[2016/07/26 09:51:39.894679,  5] ../source3/winbindd/winbindd_msrpc.c:320(msrpc_sid_to_name)
  Mapped sid to [DC]\[ipd3sti-vc1_poweruser]
[2016/07/26 09:51:39.894747,  4] ../source3/winbindd/winbindd_dual.c:1395(child_handler)
  Finished processing child request 59
[2016/07/26 09:51:39.894950,  4] ../source3/winbindd/winbindd_dual.c:1387(child_handler)
  child daemon request 59

log.wb-SRV:
Spoiler

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

[2016/07/26 09:51:15.894103,  4] ../source3/rpc_server/srv_access_check.c:95(access_check_object)
  _samr_Connect2: ACCESS should be DENIED  (requested: 0x000f003f)
  but overritten by euid == initial uid
[2016/07/26 09:51:15.894119,  4] ../source3/rpc_server/srv_access_check.c:117(access_check_object)
  _samr_Connect2: access GRANTED (requested: 0x000f003f, granted: 0x000f003f)
[2016/07/26 09:51:15.894131,  5] ../source3/rpc_server/samr/srv_samr_nt.c:3895(_samr_Connect2)
  _samr_Connect2: 3895
[2016/07/26 09:51:15.894167,  4] ../source3/rpc_server/srv_access_check.c:84(access_check_object)
  access_check_object: user rights access mask [0x3f0]
[2016/07/26 09:51:15.894209,  4] ../source3/rpc_server/srv_access_check.c:95(access_check_object)
  _samr_OpenDomain: ACCESS should be DENIED  (requested: 0x000f040f)
  but overritten by euid == initial uid
[2016/07/26 09:51:15.894226,  4] ../source3/rpc_server/srv_access_check.c:117(access_check_object)
  _samr_OpenDomain: access GRANTED (requested: 0x000f040f, granted: 0x000f07ff)
[2016/07/26 09:51:15.894241,  5] ../source3/rpc_server/samr/srv_samr_nt.c:500(_samr_OpenDomain)
  _samr_OpenDomain: 500
[2016/07/26 09:51:15.894284,  5] ../source3/rpc_server/samr/srv_samr_nt.c:3499(_samr_QueryDomainInfo)
  _samr_QueryDomainInfo: 3499
[2016/07/26 09:51:15.894313,  5] ../source3/rpc_server/samr/srv_samr_nt.c:3589(_samr_QueryDomainInfo)
  _samr_QueryDomainInfo: 3589
[2016/07/26 09:51:15.911015,  4] ../source3/winbindd/winbindd_dual.c:1395(child_handler)
  Finished processing child request 59

log.winbindd:
Spoiler

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

[2016/07/26 09:48:44.149907,  3] ../source3/winbindd/winbindd_ccache_access.c:195(winbindd_ccache_ntlm_auth)
  [31908]: perform NTLM auth on behalf of user DC/basvarov
[2016/07/26 09:48:44.176333,  3] ../source3/winbindd/winbindd_misc.c:395(winbindd_interface_version)
  [31909]: request interface version (version = 27)
[2016/07/26 09:48:44.176413,  3] ../source3/winbindd/winbindd_misc.c:428(winbindd_priv_pipe_dir)
  [31909]: request location of privileged pipe
[2016/07/26 09:48:44.176489,  3] ../source3/winbindd/winbindd_misc.c:405(winbindd_domain_name)
  [31909]: request domain name
[2016/07/26 09:48:44.176585,  3] ../source3/winbindd/winbindd_misc.c:383(winbindd_info)
  [31909]: request misc info
[2016/07/26 09:48:44.176648,  3] ../source3/winbindd/winbindd_ccache_access.c:195(winbindd_ccache_ntlm_auth)
  [31909]: perform NTLM auth on behalf of user DC/basvarov
[2016/07/26 09:50:01.694860,  3] ../source3/winbindd/winbindd_misc.c:395(winbindd_interface_version)
  [31920]: request interface version (version = 27)
[2016/07/26 09:50:01.695009,  3] ../source3/winbindd/winbindd_misc.c:428(winbindd_priv_pipe_dir)
  [31920]: request location of privileged pipe
[2016/07/26 09:50:01.695240,  3] ../source3/winbindd/winbindd_getgroups.c:60(winbindd_getgroups_send)
  getgroups root
[2016/07/26 09:50:01.702832,  5] ../source3/winbindd/winbindd_getgroups.c:235(winbindd_getgroups_recv)
  Could not convert sid S-0-0: NT_STATUS_NONE_MAPPED
[2016/07/26 09:51:02.593664,  3] ../source3/winbindd/winbindd_misc.c:395(winbindd_interface_version)
  [31950]: request interface version (version = 27)
[2016/07/26 09:51:02.593971,  3] ../source3/winbindd/winbindd_misc.c:428(winbindd_priv_pipe_dir)
  [31950]: request location of privileged pipe
[2016/07/26 09:51:02.594349,  3] ../source3/winbindd/winbindd_getpwuid.c:47(winbindd_getpwuid_send)
  getpwuid 81605
[2016/07/26 09:51:03.351033,  3] ../source3/winbindd/winbindd_misc.c:395(winbindd_interface_version)
  [32039]: request interface version (version = 27)
[2016/07/26 09:51:03.351299,  3] ../source3/winbindd/winbindd_misc.c:428(winbindd_priv_pipe_dir)
  [32039]: request location of privileged pipe
[2016/07/26 09:51:03.351585,  3] ../source3/winbindd/winbindd_getpwuid.c:47(winbindd_getpwuid_send)
  getpwuid 81605
[2016/07/26 09:51:03.423762,  3] ../source3/winbindd/winbindd_misc.c:395(winbindd_interface_version)
  [32047]: request interface version (version = 27)
[2016/07/26 09:51:03.423970,  3] ../source3/winbindd/winbindd_misc.c:428(winbindd_priv_pipe_dir)
  [32047]: request location of privileged pipe
[2016/07/26 09:51:03.424225,  3] ../source3/winbindd/winbindd_getpwuid.c:47(winbindd_getpwuid_send)
  getpwuid 81605
[2016/07/26 09:51:03.625029,  3] ../source3/winbindd/winbindd_misc.c:395(winbindd_interface_version)
  [32048]: request interface version (version = 27)
[2016/07/26 09:51:03.625261,  3] ../source3/winbindd/winbindd_misc.c:428(winbindd_priv_pipe_dir)
  [32048]: request location of privileged pipe
[2016/07/26 09:51:03.625399,  3] ../source3/winbindd/winbindd_getpwuid.c:47(winbindd_getpwuid_send)
  getpwuid 81605
[2016/07/26 09:51:03.692225,  3] ../source3/winbindd/winbindd_misc.c:395(winbindd_interface_version)
  [32055]: request interface version (version = 27)
[2016/07/26 09:51:03.692307,  3] ../source3/winbindd/winbindd_misc.c:428(winbindd_priv_pipe_dir)
  [32055]: request location of privileged pipe
[2016/07/26 09:51:03.692386,  3] ../source3/winbindd/winbindd_getpwuid.c:47(winbindd_getpwuid_send)
  getpwuid 81605
[2016/07/26 09:51:03.765933,  3] ../source3/winbindd/winbindd_misc.c:395(winbindd_interface_version)
  [32056]: request interface version (version = 27)
[2016/07/26 09:51:03.766201,  3] ../source3/winbindd/winbindd_misc.c:428(winbindd_priv_pipe_dir)
  [32056]: request location of privileged pipe
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:

grandfa8
Сообщения: 21
ОС: Ubuntu 16.04, gentoo

Re: Сквозная аутентификация NTLM Firefox

Сообщение grandfa8 »

Проблема решена.
Выяснил что при запуске

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

strace -o ntlm.strace /usr/bin/ntlm_auth --helper-protocol ntlmssp-client-1 --use-cached-creds --username basvarov


ntlm_auth обращается к /etc/security/pam_winbind.conf которого у меня в системе не создался по какой-либо причине

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

mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3321056000
read(0, "YR\n", 1024)                   = 3
open("/etc/security/pam_winbind.conf", O_RDONLY) = -1 ENOENT (No such file or directory)
poll([{fd=4, events=POLLIN|POLLOUT|POLLHUP}], 1, 4294967295) = 1 ([{fd=4, revents=POLLOUT}])
write(4, "0\10\0\0$\0\0\0\0\0\0\0\232\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2096) = 2096
poll([{fd=4, events=POLLIN|POLLHUP}], 1, 5000) = 1 ([{fd=4, revents=POLLIN}])
read(4, "\250\r\0\0\2\0\0\0/4.2.9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 3496) = 3496
geteuid()                               = 81605
poll([{fd=4, events=POLLIN|POLLOUT|POLLHUP}], 1, 4294967295) = 1 ([{fd=4, revents=POLLOUT}])
write(4, "0\10\0\0<\0\0\0\0\0\0\0\232\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2096) = 2096
poll([{fd=4, events=POLLIN|POLLHUP}], 1, 5000) = 1 ([{fd=4, revents=POLLIN}])
read(4, "\250\r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 3496) = 3496
write(1, "PW\n", 3)                     = 3
read(0, 0x7f3321056000, 1024)           = ? ERESTARTSYS (To be restarted if SA_RESTART is set)


Скопировал этот конфигурационный файл с другого аналогичного сервера и все заработало!
/etc/security/pam_winbind:

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

#
# pam_winbind configuration file
#
# /etc/security/pam_winbind.conf
#

[global]

# turn on debugging
#debug = yes

# turn on extended PAM state debugging
#debug_state = yes

# request a cached login if possible
# (needs "winbind offline logon = yes" in smb.conf)
cached_login = yes

# authenticate using kerberos
krb5_auth = yes

# when using kerberos, request a "FILE" krb5 credential cache type
# (leave empty to just do krb5 authentication but not have a ticket
# afterwards)
krb5_ccache_type = FILE

# make successful authentication dependend on membership of one SID
# (can also take a name)
;require_membership_of =

# password expiry warning period in days
;warn_pwd_expire = 14

# omit pam conversations
;silent = no

# create homedirectory on the fly
;mkhomedir = no


И еще нюанс. Была проблема с получением билета TGS по Kerberos. Решалась она добавлением в /etc/pam.d/system-auth-winbind

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

auth sufficient pam_winbind.so krb5_auth krb5_ccache_type=FILE

auth sufficient pam_unix.so nullok_secure use_first_pass

auth required pam_deny.so


После создания /etc/security/pam_winbind надобность в этих дополнительных настройках отпала.
Я так понял, что настройки могут подбираться и в /etc/security/pam_winbind и в /etc/pam.d/system-auth-winbind?

Спасибо Bizdelnick за наводку про strace
Спасибо сказали: