Puncte:0

Ansible get autentificare timeout atunci când utilizați un cont de domeniu pe un server care rulează winbind

drapel ge

Am instalat un nou controler de domeniu găzduit de Samba 4.11 pe Ubuntu 20.04 (folosind pachete ubuntu). Am configurat autentificarea sistemului pentru a utiliza acreditările AD cu utilizarea winbind. Pe alte servere (membri) folosesc de obicei sssd în loc de winbind, dar înțeleg că nu pot folosi sssd pe un server care rulează samba ca DC.

La început, funcționează bine. Serverul funcționează ca DC așa cum ar trebui. Mă pot conecta cu acreditările mele AD la server cu SSH.

Problema este când mă conectez la această mașină cu Ansible. Ansible face multe conexiuni SSH una după alta (una pentru fiecare sarcină). De asemenea, se ridică ca root cu sudo aproape de fiecare dată. Când rulez playbook-ul meu, eșuează la o sarcină aleatorie din cauza acestei erori Timeout (62s) în așteptarea solicitării de escaladare a privilegiilor. Dacă încerc să mă conectez manual la SSH în acest moment, acesta doar expiră. După câteva secunde, mă pot conecta din nou.

Problema nu apare atunci când utilizați un cont local în loc de un cont de domeniu.

Singurele jurnale relevante pe care le-am găsit sunt în log.windbindd Buturuga:

[2021/10/12 16:06:57.312913, 5] ../../source3/winbindd/winbindd.c:1204(remove_timed_out_clients)
  Client inactiv a expirat, închiderea șosetei 38, pid 568531
[2021/10/12 16:07:09.933655, 3] ../../source3/winbindd/winbindd_getpwnam.c:59(winbindd_getpwnam_send)
  winbindd_getpwnam_send: [nss_winbind (567486)] getpwnam EXEMPLU\myuserid
[2021/10/12 16:07:12.326288, 5] ../../source3/winbindd/winbindd.c:1204(remove_timed_out_clients)
  Client inactiv a expirat, închiderea șosetei 34, pid 568806
[2021/10/12 16:07:12.326413, 5] ../../source3/winbindd/winbindd.c:1209(remove_timed_out_clients)
  Solicitarea clientului a expirat, închiderea șosetei 39, pid 568806
[2021/10/12 16:07:12.326451, 1] ../../source3/winbindd/winbindd_dual.c:337(wb_child_request_cleanup)
  wb_child_request_cleanup: păstrați subreq orfan[0x563394622e40]
[2021/10/12 16:07:14.044393, 3] ../../source3/winbindd/winbindd_misc.c:429(winbindd_interface_version)
  winbindd_interface_version: [nss_winbind (568806)]: solicitați versiunea interfeței (versiunea = 31)
[2021/10/12 16:07:14.044847, 3] ../../source3/winbindd/winbindd_getpwnam.c:59(winbindd_getpwnam_send)
  winbindd_getpwnam_send: [nss_winbind (568806)] getpwnam EXEMPLU\myuserid
^C

Am scris un mic script care face doar un sudo la fiecare 1000ms, apoi 500ms, apoi 100ms încercând să imite ceea ce face Ansible. Am observat că procesul de samba ia aproximativ 30% CPU atunci când scriptul este setat să circule la fiecare 1000ms, 50% când scriptul rulează la 500ms și 70% când rulează la 100ms. Din păcate, nu am reușit să reproduc timeout de autentificare când rulez scriptul.

#!/bin/bash

în timp ce [ adevărat ]; do
  timp sudo echo 1
  somn 0.1
Terminat

Configurare Samba:

[global]
    nume netbios = DC4
    tărâm = AD.EXAMPLE.CA
    grup de lucru = EXEMPLU
    dns forwarder = 10.3.0.3
    rol server = controler de domeniu Active Directory
    idmap_ldb:utilizați rfc2307 = da

    directorul pid = /run/samba
    director de stat = /data/samba
    binddns dir = /data/samba/bind-dns
    directorul socket ntp signd = /data/samba/ntp_signd
    private dir = /data/samba/private
    calea usershare = /data/samba/usershares

    tls activat = da
    tls keyfile = tls/key.pem
    tls certfile = tls/cert.pem
    tls cafile = /usr/local/share/ca-certificates/internal_ca.crt

    nivelul log = 5
    dimensiune maximă a jurnalului = 1000000

    scriptul de verificare a parolei = python3 /usr/local/bin/check_password_hibpwnd.py

    permit actualizări dns = nonsecure

    ntlm auth = da

    shell de șablon = /bin/bash
    template homedir = /home/ad.example.ca/%u
    # a încercat acest lucru pentru a reduce sarcina, fără efecte
    conectare offline winbind = da
    winbind enumerare utilizatori = nr
    winbind enum groups = nr    
    grupuri imbricate winbind = false

[netlogon]
    cale = /data/samba/sysvol/ad.example.ca/scripts
    numai citire = Nu

[sysvol]
    cale = /data/samba/sysvol
    numai citire = Nu

nsswitch config (tocmai am adăugat winbind pentru passwd și grup intrări):

# /etc/nsswitch.conf
#
# Exemplu de configurare a funcționalității GNU Name Service Switch.
# Dacă aveți instalate pachetele `glibc-doc-reference' și `info', încercați:
# `info libc "Name Service Switch"' pentru informații despre acest fișier.

passwd: fișiere systemd winbind
grup: fișiere systemd winbind
umbră: fișiere
gshadow: fișiere

gazde: fișiere dns
rețele: fișiere

protocoale: fișiere db
servicii: fișiere db
eteri: fișiere db
rpc: fișiere db

netgroup: nis

Actualizați! Am descoperit că configurarea sudo pentru a nu necesita parola utilizatorului pentru a crește privilegiul funcționează bine. Aceasta nu este o soluție acceptabilă, dar poate că aceasta poate spune ceva cuiva care ar putea ajuta la diagnosticarea problemei.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.