ฉันติดตั้งตัวควบคุมโดเมนใหม่ที่โฮสต์โดย Samba 4.11 บน Ubuntu 20.04 (โดยใช้แพ็คเกจ Ubuntu) ฉันกำหนดค่าการรับรองความถูกต้องของระบบเพื่อใช้ข้อมูลรับรอง AD ด้วยการใช้ winbind ในเซิร์ฟเวอร์อื่น (สมาชิก) ฉันมักจะใช้ sssd แทน winbind แต่ความเข้าใจของฉันคือฉันไม่สามารถใช้ sssd บนเซิร์ฟเวอร์ที่ใช้ samba เป็น DC
ในตอนแรกมันใช้งานได้ดี เซิร์ฟเวอร์ทำงานเป็น DC อย่างที่ควรจะเป็น ฉันสามารถเข้าสู่ระบบด้วยข้อมูลรับรอง AD ของฉันไปยังเซิร์ฟเวอร์ด้วย SSH
ปัญหาคือเมื่อฉันเชื่อมต่อกับเครื่องนี้ด้วย Ansible Ansible ทำการเชื่อมต่อ SSH จำนวนมากต่อกัน (หนึ่งรายการสำหรับแต่ละงาน) นอกจากนี้ยังยกระดับเป็นรูทด้วย sudo เกือบทุกครั้งเช่นกัน เมื่อเรียกใช้ playbook ของฉัน มันล้มเหลวโดยสุ่มเนื่องจากข้อผิดพลาดนี้ หมดเวลา (62 วินาที) กำลังรอพร้อมต์การเลื่อนระดับสิทธิ์
. หากฉันพยายามเชื่อมต่อกับ SSH ด้วยตนเองในขณะนี้ นี่เป็นเพียงการหมดเวลา หลังจากนั้นสักครู่ ฉันสามารถเข้าสู่ระบบได้อีกครั้ง
ปัญหาจะไม่เกิดขึ้นเมื่อใช้บัญชีภายในเครื่องแทนบัญชีโดเมน
บันทึกที่เกี่ยวข้องเท่านั้นที่ฉันพบอยู่ใน log.windbindd
บันทึก:
[2021/10/12 16:06:57.312913, 5] ../../source3/winbindd/winbindd.c:1204(remove_timed_out_clients)
ไคลเอนต์ที่ไม่ได้ใช้งานหมดเวลา ปิดถุงเท้า 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 ตัวอย่าง\myuserid
[2021/10/12 16:07:12.326288, 5] ../../source3/winbindd/winbindd.c:1204(remove_timed_out_clients)
ไคลเอนต์ที่ไม่ได้ใช้งานหมดเวลา ปิดถุงเท้า 34, pid 568806
[2021/10/12 16:07:12.326413, 5] ../../source3/winbindd/winbindd.c:1209(remove_timed_out_clients)
หมดเวลาคำขอไคลเอ็นต์ ปิดถุงเท้า 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: เก็บข้อกำหนดย่อยที่ถูกละเลย[0x563394622e40]
[2021/10/12 16:07:14.044393, 3] ../../source3/winbindd/winbindd_misc.c:429(winbindd_interface_version)
winbindd_interface_version: [nss_winbind (568806)]: ขอเวอร์ชั่นอินเตอร์เฟส (เวอร์ชั่น = 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 ตัวอย่าง\myuserid
^ซี
ฉันเขียนสคริปต์เล็ก ๆ ที่ทำ sudo ทุก ๆ 1,000ms จากนั้น 500ms และ 100ms พยายามเลียนแบบสิ่งที่ Ansible ทำ ฉันสังเกตเห็นว่ากระบวนการแซมบ้าใช้ซีพียูประมาณ 30% เมื่อสคริปต์ถูกตั้งค่าให้วนซ้ำทุกๆ 1,000 มิลลิวินาที 50% เมื่อสคริปต์ทำงานที่ 500 มิลลิวินาที และ 70% เมื่อทำงานที่ 100 มิลลิวินาที ขออภัย ฉันไม่สามารถทำซ้ำการหมดเวลาการตรวจสอบสิทธิ์เมื่อเรียกใช้สคริปต์
#!/bin/bash
ในขณะที่ [ จริง ] ; ทำ
เวลา sudo echo 1
นอน 0.1
เสร็จแล้ว
การกำหนดค่าแซมบ้า:
[ทั่วโลก]
ชื่อเน็ตไบโอ = DC4
ขอบเขต = AD.EXAMPLE.CA
เวิร์กกรุ๊ป = ตัวอย่าง
ตัวส่งต่อ DNS = 10.3.0.3
บทบาทเซิร์ฟเวอร์ = ตัวควบคุมโดเมนไดเรกทอรีที่ใช้งานอยู่
idmap_ldb:ใช้ rfc2307 = ใช่
ไดเร็กทอรี pid = /run/samba
ไดเร็กทอรีสถานะ = /data/samba
binddns dir = /data/samba/bind-dns
ไดเรกทอรีซ็อกเก็ตลงนาม ntp = /data/samba/ntp_signd
dir ส่วนตัว = /data/samba/ส่วนตัว
เส้นทาง usershare = /data/samba/usershares
เปิดใช้งาน tls = ใช่
tls keyfile = tls/key.pem
tls certfile = tls/cert.pem
tls cafile = /usr/local/share/ca-certificates/internal_ca.crt
ระดับบันทึก = 5
ขนาดบันทึกสูงสุด = 1000000
ตรวจสอบสคริปต์รหัสผ่าน = python3 /usr/local/bin/check_password_hibpwnd.py
อนุญาตการอัปเดต DNS = ไม่ปลอดภัย
ntlm รับรองความถูกต้อง = ใช่
เปลือกแม่แบบ = /bin/bash
เทมเพลต homedir = /home/ad.example.ca/%u
# ลองสิ่งนี้เพื่อลดการโหลดไม่มีผล
winbind เข้าสู่ระบบออฟไลน์ = ใช่
ผู้ใช้ winbind enum = ไม่
winbind enum กลุ่ม = ไม่
กลุ่มที่ซ้อนกัน winbind = เท็จ
[เน็ตล็อกออน]
เส้นทาง = /data/samba/sysvol/ad.example.ca/scripts
อ่านอย่างเดียว = ไม่
[sysvol]
เส้นทาง = /data/samba/sysvol
อ่านอย่างเดียว = ไม่
nsswitch config (ฉันเพิ่งเพิ่ม วินบินด์
สำหรับ รหัสผ่าน
และ กลุ่ม
รายการ):
# /etc/nsswitch.conf
#
# ตัวอย่างการกำหนดค่าของฟังก์ชัน GNU Name Service Switch
# หากคุณติดตั้งแพ็คเกจ `glibc-doc-reference' และ `info' ให้ลอง:
# `info libc "Name Service Switch"' สำหรับข้อมูลเกี่ยวกับไฟล์นี้
passwd: ไฟล์ systemd winbind
กลุ่ม: ไฟล์ systemd winbind
เงา: ไฟล์
gshadow: ไฟล์
โฮสต์: ไฟล์ DNS
เครือข่าย: ไฟล์
โปรโตคอล: ไฟล์ db
บริการ: ไฟล์ db
อีเธอร์: ไฟล์ db
rpc: ไฟล์ db
เน็ตกรุ๊ป: นิส
อัปเดต! ฉันพบว่าการกำหนดค่า sudo ไม่ต้องการรหัสผ่านของผู้ใช้เพื่อยกระดับสิทธิ์ใช้งานได้ดี นี่ไม่ใช่วิธีแก้ปัญหาที่ยอมรับได้ แต่นี่อาจบอกอะไรบางอย่างกับคนที่สามารถช่วยวินิจฉัยปัญหาได้