วิธีการรวม Active Directory กับ FreeBSD 10.0 โดยใช้ความปลอดภัย / sssd


9

ขั้นตอนที่จำเป็นในการรับรองความถูกต้องผู้ใช้จาก Active Directory ที่ทำงานบน Windows Server 2012 R2 ใน FreeBSD 10.0 ใช้sssdกับแบ็กเอนด์โฆษณาที่มี Kerberos TGT ทำงานอย่างไร

คำตอบ:


14

มีข้อควรพิจารณาบางประการที่จะทำให้ทุกอย่างทำงานนอกกรอบได้ FreeBSD รองรับเฉพาะsssdเวอร์ชั่น 1.9.6 ในขณะนี้ ดังนั้นจึงไม่มีการสนับสนุนชื่อ Enterprise Principal

หากคุณมีโดเมนที่มี UPN ที่ไม่ตรงกันโดเมนจะไม่สามารถเข้าสู่ระบบได้เนื่องจากการรับรองความถูกต้อง Kerberos จะล้มเหลวในระหว่างกระบวนการแม้ว่า FreeBSD จะสนับสนุนชื่อหลักขององค์กรที่มี Kerberos ก็ตามsssdไม่สามารถจัดการกับกรณีนี้ได้

ดังนั้นในรุ่นจริงของsssdคุณจะถูก จำกัด ให้มีชื่อผู้ใช้หลักภายในชื่อโดเมนเดียวกันตัวอย่างเช่น:

Domain Name = example.com
NetBIOS Name = EXAMPLE
User Principal Name:
username@example.com sAMAccountName: username

การรู้สิ่งนี้เราสามารถอธิบายขั้นตอนในการตรวจสอบสิทธิ์ผู้ใช้จาก AD ใน FreeBSD ได้สำเร็จ

1. กำหนดค่า Kerberos

สร้างไฟล์/etc/krb5.confด้วยเนื้อหาดังต่อไปนี้:

[libdefaults]
    default_realm = EXAMPLE.COM
    dns_lookup_realm = true
    dns_lookup_kdc = true
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = yes

2. ติดตั้ง Samba 4.1 และกำหนดค่าเพื่อเข้าร่วมโดเมน

ติดตั้ง Samba 4.1:

$ pkg install samba41

สร้างไฟล์/usr/local/etc/smb4.confด้วยเนื้อหาดังต่อไปนี้:

[global]
    security = ads
    realm = EXAMPLE.COM
    workgroup = EXAMPLE

    kerberos method = secrets and keytab

    client signing = yes
    client use spnego = yes
    log file = /var/log/samba/%m.log

ขอตั๋ว Kerberos ผู้ดูแลระบบ:

$ kinit Administrator

จากนั้นเข้าร่วมโดเมนและสร้างแท็บคีย์

$ net ads join createupn=host/server-hostname.example.com@EXAMPLE.COM -k
$ net ads keytab create -k

3. ติดตั้งแพคเกจ sssd และ Cyrus SASL พร้อมรองรับ Kerberos

ติดตั้งแพ็คเกจที่ต้องการ:

$ pkg install sssd cyrus-sasl-gssapi

แก้ไขไฟล์/usr/local/etc/sssd/sssd.confเพื่อให้ตรงกับการตั้งค่านี้:

[sssd]
    config_file_version = 2
    services = nss, pam
    domains = example.com

[nss]

[pam]

[domain/example.com]
    # Uncomment if you need offline logins
    #cache_credentials = true

    id_provider = ad
    auth_provider = ad
    access_provider = ad
    chpass_provider = ad

    # Comment out if the users have the shell and home dir set on the AD side
    default_shell = /bin/tcsh
    fallback_homedir = /home/%u

    # Uncomment and adjust if the default principal SHORTNAME$@REALM is not available
    #ldap_sasl_mech = GSSAPI
    #ldap_sasl_authid = SERVER-HOSTNAME$@EXAMPLE.COM

4. เพิ่มการสนับสนุน sssd ไปยัง nsswitch.conf

แก้ไขไฟล์/etc/nsswitch.confเพื่อให้ตรงกับการตั้งค่านี้:

group: files sss
passwd: files sss

5. กำหนดค่า PAM เพื่ออนุญาตการตรวจสอบความถูกต้อง sssd และจัดการการสร้างโฮมไดเรกทอรี

ติดตั้งแพ็กเกจเผื่อเลือกสำหรับการสร้างโฮมไดเร็กทอรี:

$ pkg install pam_mkhomedir

ปรับเปลี่ยนPAMอาณาจักรที่จำเป็นเพื่อให้ตรงกับการตั้งค่านี้:

auth            sufficient      /usr/local/lib/pam_sss.so
account         required        /usr/local/lib/pam_sss.so        ignore_unknown_user
session         required        /usr/local/lib/pam_mkhomedir.so  mode=0700
session         optional        /usr/local/lib/pam_sss.so
password        sufficient      /usr/local/lib/pam_sss.so        use_authtok

6. เปลี่ยนไปใช้ไคลเอ็นต์ OpenLDAP ที่เปิดใช้งาน SASL

$ pkg remove -f openldap-client
$ pkg install openldap-sasl-client

7. ในที่สุดก็ยืนยันว่าทุกอย่างทำงานได้

$ getent passwd <username>

คุณมีวิธีแก้ปัญหาสำหรับ FreeBSD 10.3 ซึ่งติดตั้ง openldap-sasl-client หรือไม่ทำให้ pkg ลบ sssd, ldb และ samba44 ฉันรู้สึกว่าฉันสนิทเมื่อใช้คำตอบของคุณ แต่ฉันติดอยู่ในส่วนนี้
— bgStack15

2

คุณใช้ Kerberos ใดอยู่ที่นี่ built-in one หรือ security / krb5 จาก MIT?

เมื่อทำการติดตั้ง sssd จะต้องมีการติดตั้งความปลอดภัย / krb5 ซึ่งขณะนี้ยังถือว่าเป็นรุ่นทดลองใน FreeBSD ดังนั้นคำถามนี้

ฉันไม่มีโชคในการรับผู้ใช้ AD / กลุ่มเมื่อดำเนินการคำสั่ง 'getent' อาจเป็นเพราะความจริงที่ว่าชื่อ NETBIOS แตกต่างจากชื่อโดเมน - ฉันในกรณีของฉันชื่อโดเมนคือ dawnsign.com และชื่อ NETBIOS เป็น DSP

ฉันกำหนดค่าโมดูลล็อกอิน pam.d เท่านั้น โมดูล pam อื่นใดที่ต้องได้รับการแก้ไขเพื่อให้การพิสูจน์ตัวตนประสบความสำเร็จ

ข้อมูลเพิ่มเติมใด ๆ ที่จะได้รับการชื่นชมอย่างมาก!


ฉันใช้ Heimdal Kerberos จากฐาน ไม่ได้ติดตั้งพอร์ต MIT Kerberos
— ViníciusFerrão

1

การคอมไพล์ซ้ำ samba4 จากพอร์ตเป็นไปได้ที่จะใช้ autentication winbind เช่น linux แม้ไม่มี sssd เพียงคอมไพล์ samba4 จากพอร์ตหลังจากเปิดใช้งาน sasl ldap

    pkg remove samba41 
    pkg install cyrus-sasl-gssapi samba36-libsmbclient pam_mkhomedir ldb 
    pkg remove -f openldap-client 
    pkg install openldap-sasl-client 
    cd /usr/ports/security/sssd && make install

นี่จะคอมไพล์แซมบ้าใหม่พร้อมการสนับสนุนที่จำเป็นทั้งหมด (gssapi, ldap, kerberos) จากนั้นแก้ไข nsswitch.conf เช่นนี้

passwd: files winbind
group: files winbind

เหตุใดจึงต้องใช้ winbind และ samba ถ้าเราสามารถใช้ Kerberos ดั้งเดิมได้
— ViníciusFerrão

สำหรับผู้ใช้ไดเรกทอรีที่ใช้งาน kerberos ใช้สำหรับรหัสผ่านและ
— sso

0

สวัสดี

นี่คือการอัปเดตเล็ก ๆ เกี่ยวกับการใช้ sssd v1.11.7

หากคุณใช้ "id_provider = ad" และคุณเห็นข้อผิดพลาดต่อไปนี้ในไฟล์บันทึกการทำงาน sssd:

/var/log/sssd/sssd_example.com.log
(Sun Oct  5 18:41:37 2014) [sssd[be[alidaho.com]]] [sasl_bind_send] (0x0020): ldap_sasl_bind failed (-12)[Not Supported]
(Sun Oct  5 18:41:37 2014) [sssd[be[alidaho.com]]] [sasl_bind_send] (0x0080): Extended failure message: [unknown error]

คุณสามารถใช้ขั้นตอนต่อไปนี้เพื่อแก้ไขปัญหานี้และทำให้การรวม AD ทำงานอย่างถูกต้อง ตอนนี้สร้าง sssd v1.11.7 ด้วยการรองรับ Samba การสร้างจาก src sssd เป็นสิ่งจำเป็นดังนั้นมันจึงเชื่อมโยงกับ libsasl2

​pkg remove samba41
pkg install cyrus-sasl-gssapi samba36-libsmbclient pam_mkhomedir ldb
pkg remove -f openldap-client
pkg install openldap-sasl-client
cd /usr/ports/security/sssd && make install

จุดประสงค์ในการลบ samba41 คืออะไร ใช้งานได้กับ samba36 เท่านั้นหรือ ฉันมีปัญหาตรงนี้ แต่ไม่ต้องการ backrev เป็น 3.6 ถ้าฉันไม่ต้อง
— MikeyB

คุณลบไบนารี samba41 จากนั้นคอมไพล์ samba41 ใหม่จากพอร์ต (ร้องขอโดย sssd) ในกรณีของฉัน (ติดตั้ง 10.1 ใหม่) ไบนารี samba41 ใช้งานไม่ได้ samba41 ที่คอมไพล์โดยพอร์ตทำงานได้อย่างสมบูรณ์
— elbarna

0

นี่คือคำแนะนำของฉันเกี่ยวกับการรวม AD ผ่าน SSSD กับ FreeBSD เวอร์ชันเหล่านี้ ณ เวลาที่เขียนนี้ (6/2017)

  • FreeBSD 10.3 และ 11.0 (10.3-RELEASE-p18 และ 11.0-RELEASE-p9)
  • การติดตั้ง (และบรรจุภัณฑ์ที่สนุกสนานและปัญหาการพึ่งพา)

    • แพ็คเกจที่ต้องการดูเหมือนจะไม่เข้ากันกับ Heimdal Kerberos ดังนั้นสิ่งต่างๆจะต้องติดตั้งและคอมไพล์ด้วยการเปิดใช้งาน MIT Kerberos flag นี่น่าจะเป็นปัญหาการพึ่งพาบรรจุภัณฑ์มากกว่าปัญหาความเข้ากันได้จริง
    • Heimdal มีการติดตั้งระบบฐานดังนั้นใบนี้คุณมีสองชุดของคำสั่งของ Kerberos หากคุณติดตั้ง MIT Kerberos หนึ่งชุด /usr/binและอื่น /usr/local/binๆ เนื่องจากดูเหมือนว่าไม่มีไฟล์ระบบพื้นฐานอยู่ในแพ็คเกจคุณจึงไม่สามารถลบสิ่งที่ Heimdal KRB ได้ สิ่งที่ต้องระวัง
    • ไปข้างหน้าการพึ่งพาของแพคเกจต่าง ๆ (ขึ้นอยู่กับความสนใจในตัวหนาและความขัดแย้งที่แตกต่างกันในตัวเอียงตัวหนา):

      • net-mgmt/adcli:net/openldap24-sasl-client
      • security/cyrus-sasl2-gssapi: security/cyrus-sasl2
      • net/openldap24-sasl-client: security/cyrus-sasl2
      • security/sssd: security/nss
      • security/sssd:security/krb5
      • security/sssd: security/cyrus-sasl2
      • security/sssd:net/openldap24-client
      • security/sssd: lang/python27
      • security/sssd: lang/python2
      • security/sssd: dns/c-ares
      • security/sssd: devel/tevent
      • security/sssd: devel/talloc
      • security/sssd: devel/popt
      • security/sssd: devel/pcre
      • security/sssd: devel/libunistring
      • security/sssd: devel/libinotify
      • security/sssd: devel/gettext-runtime
      • security/sssd: devel/ding-libs
      • security/sssd: devel/dbus
      • security/sssd: databases/tdb
      • security/sssd: databases/ldb
    • ย้อนกลับการพึ่งพาของแพ็คเกจต่างๆ:

      • net/openldap24-sasl-client: sysutils/msktutil
      • net/openldap24-sasl-client: net/nss-pam-ldapd-sasl
      • net/openldap24-sasl-client: net-mgmt/adcli
        • อย่างที่เราเห็นว่าsssdตัวเองต้องการ MIT Kerberos แม้ว่าเราจะมี Heimdal เป็นแพ็คเกจพื้นฐาน
        • adcliต้องการopenldap-sasl-clientแต่แพ็คเกจอื่น ๆ (รวมถึงการพึ่งพาย่อยsssd) ดึงopenldap-clientซึ่งเป็น mutex กับลูกค้า sasl (ด้วยเหตุผลโง่ ๆ ) สิ่งนี้ทำให้การติดตั้งเป็นเรื่องที่เจ็บปวดแม้จะมีชุดไบนารีแพ็คเกจขั้นต่ำก็ตาม
        • การพึ่งพาเหล่านี้มีอยู่สำหรับทั้งแพ็กเกจ repo ไบนารีและหากแพ็กเกจถูกสร้างขึ้นในทรีพอร์ต สิ่งนี้จำเป็นต้องมีวิธีการติดตั้งที่น่ารำคาญเพื่อให้ได้ทุกสิ่งที่เราต้องการ (อธิบายไว้ด้านล่าง)
    • จากการเขียนนี้ pkg ไบนารีสำหรับ SSSD สำหรับ FreeBSD ไม่รวมการสนับสนุนโฆษณาใน SSSD

      • ต้องสร้างเวอร์ชั่นพอร์ตของ SSSD ด้วยตัวเลือก (make config) ที่เหมาะสม:
        • SMB
      • SSSD ยังต้องการที่จะดึงใน openldap-client เมื่อมันต้องการให้ openldap-sasl-client ทำงานได้อย่างถูกต้อง
    • มีรุ่นไบนารี pkg adcliอยู่แล้ว แต่จากการเขียนนี้ไม่สามารถใช้งานได้
      • อีกครั้งเวอร์ชันของพอร์ตก็ถูกคอมไพล์ด้วยตัวเลือกที่เหมาะสม
        • GSSAPI_MIT
    • cyrus-sasl-gssapi จำเป็นต้องมี แต่เวอร์ชัน pkg แบบไบนารีไม่ทำงานและมีปัญหาการพึ่งพาที่ไม่ปกติซึ่งทำให้ SSSD ถูกลบ
      • สร้างจากพอร์ตที่เปิดใช้งานตัวเลือก MIT-KRB5:
        • GSSAPI_MIT
    • openldap-sasl-client เป็นสิ่งจำเป็นสำหรับการทำงาน แต่ SSSD ต้องการดึงใน openldap รุ่นที่ไม่ใช่ SASL
      • เพื่อให้งานนี้
        • กำหนดค่าopenldap-sasl-clientด้วยGSSAPIตัวเลือกที่เลือก ( make config) ในพอร์ต
        • ทำการสร้างในพอร์ตเพื่อสร้าง
        • ก่อนทำการติดตั้งให้ทำ pkg remove –f openldap-client
          • สิ่งนี้จะลบออกopenldap-clientโดยไม่ดำเนินการตอบรับอัตโนมัติใด ๆ ของแพ็คเกจอื่น ๆ (เช่น SSSD) และอนุญาตการติดตั้งเวอร์ชัน SASL
        • ทำการติดตั้งสำหรับ openldap-sasl-client
          • สิ่งนี้จะติดตั้งลงในระบบ
    • สิ่งนี้จะให้สิ่งที่จำเป็นสำหรับ SSSD ที่ใช้งานได้พร้อมความสามารถของโฆษณา
    • โปรดทราบว่าถ้าคุณรวบรวม SSSD จากพอร์ตมันจะดึงการอ้างอิงจำนวนมากซึ่งจะทำให้พวกเขาจะถูกสร้างขึ้นและต้องเลือกตัวเลือกการกำหนดค่า
      • ขอแนะนำให้คุณติดตั้งแพ็กเกจไบนารีก่อนด้วย pkg install sssd แล้วลบออกด้วย pkg remove –f sssd
        • สิ่งนี้จะทำให้ไบนารีแพคเกจสำหรับสิ่งต่าง ๆ ส่วนใหญ่ที่ SSSD ต้องถูกดึงเข้ามาและเอาความจำเป็นในการสร้างสิ่งเหล่านี้ขึ้นอยู่กับพอร์ตซึ่งใช้เวลาค่อนข้างนาน
      • เมื่อลบออกแล้วให้ติดตั้ง SSSD ใหม่จากพอร์ตที่เปิดใช้งานตัวเลือกที่กล่าวถึงข้างต้นและคุณจะต้องสร้างแพ็คเกจสี่แพ็กเกจที่กล่าวถึงข้างต้นเพื่อรับการตั้งค่าการทำงาน
    • (ไม่บังคับ) เมื่อทุกอย่างทำงานและตรวจสอบแล้วคุณสามารถใช้pkg createเพื่อสร้างแพ็คเกจไบนารีของสี่แพ็กเกจโดยเปิดใช้งานตัวเลือกที่เหมาะสมและใช้แทนการสร้างแพ็คเกจในพอร์ตในทุกระบบ การติดตั้งไบนารีจะตามรูปแบบที่คล้ายคลึงกับกระบวนการสร้างพอร์ต:

      • pkg install sssd-1.11.7_8.txz
        • แน่นอนว่าเวอร์ชั่นของคุณอาจแตกต่างออกไป
        • สิ่งนี้จะติดตั้งไบนารีแพคเกจสำหรับ SSSD และดึงทุกอย่างที่ต้องการจาก FreeBSD repo
      • pkg add แพ็คเกจอื่น ๆ (ไม่ได้ติดตั้งเพิ่ม) บันทึกแพ็คเกจ openldap เป็นครั้งสุดท้าย
      • ก่อนที่จะเพิ่มopenldap-sasl-clientทำpkg remove –f openldap-client
        • นี่เป็นการกำจัดรุ่นที่ไม่ใช่ SASL และอนุญาตให้ติดตั้งเวอร์ชันของเรา
      • pkg add openldap-sasl-client-2.4.44.txz
        • อีกครั้งเวอร์ชันของคุณอาจแตกต่างกัน
      • คุณควรปิดท้ายด้วยแพ็คเกจที่จำเป็นติดตั้ง
      • มันอาจจะเป็นไปได้ที่จะเปลี่ยนข้อมูลเมตาสำหรับไบนารี SSSD ก่อนที่จะทำpkg createเพื่อแทนที่การพึ่งพาopenldap-clientกับopenldap-sasl-clientที่จะเอาความจำเป็นในการที่จะทำนี้ลบ / ติดตั้ง ฉันไม่มีเวลาที่จะทำสิ่งนี้
        • นอกจากนี้ยังมีการพึ่งพา SSSD ย่อยซึ่งดึงเข้าไป openldap-clientด้วยดังนั้นคุณจะต้องแก้ไขสิ่งเหล่านั้นด้วย
      • โปรดทราบว่าบันทึกเหล่านี้ทั้งหมดเป็นของรุ่นของแพ็คเกจเหล่านี้ในทรีพอร์ตในขณะที่เขียนนี้และอ้างอิงที่พวกเขาได้เชื่อมโยงกับพวกเขา ทั้งหมดนี้อาจเปลี่ยนแปลงได้เมื่อ FreeBSD อัพเดตทรีพอร์ตและไบนารี บางทีวันหนึ่งเราจะมีไบนารีทุกอย่างที่ดึงการอ้างอิงที่ถูกต้องทั้งหมดด้วยตัวเลือกที่เหมาะสมที่กำหนดค่าสำหรับฟังก์ชั่นโฆษณาทันที
    • การกำหนดค่า Kerberos:

      • ตัวอย่างไฟล์ /etc/krb5.conf:
[libdefaults]
   default_realm = MYDOMAIN.NET
   forwardable = true
# โดยปกติสิ่งที่คุณต้องการในสภาพแวดล้อมโฆษณาเนื่องจากระเบียน DNS SRV
# จะระบุเซิร์ฟเวอร์ / บริการ AD / KRB แสดงความคิดเห็นถ้าคุณ
# ต้องการชี้ไปยังเซิร์ฟเวอร์โฆษณาของคุณด้วยตนเอง
dns_lookup_kdc = จริง
[อาณาจักร]
   MYDOMAIN.NET = {
# หากคุณกำลังชี้ไปยังเซิร์ฟเวอร์โฆษณาอื่นที่ไม่ใช่ DNS
# admin_server = adserver.mydomain.net
# kdc = adserver.mydomain.net
   }
[domain_realm]
   mydomain.net = MYDOMAIN.NET
   .mydomain.net = MYDOMAIN.NET
  • (เยื้อง)
    • การกำหนดค่า SSSD:
      • ตัวอย่างนี้สันนิษฐานว่าเป็นคุณลักษณะ POSIX ใน AD สำหรับผู้ใช้และกลุ่มโดยทั่วไปจำเป็นสำหรับเมื่อมีการแทนที่สภาพแวดล้อมที่มีอยู่ซึ่งได้สร้าง UID และ GID แล้ว
      • ตัวอย่างไฟล์ /usr/local/etc/sssd/sssd.conf:
[sssd]
config_file_version = 2
โดเมน = MYDOMAIN.NET
services = nss, pam, pac
fallback_homedir = / home /% u

[โดเมน / MYDOMAIN.NET]
id_provider = ad
access_provider = ad
auth_provider = ad
chpass_provider = ad
# ใช้แอตทริบิวต์ AD POSIX แสดงความคิดเห็นหากคุณใช้งานโดยอัตโนมัติ
# UID และ GID
ldap_id_mapping = False
cache_credentials = true
ad_server = adserver.mydomain.net
# ถ้าคุณไม่มีทุบตีหรืออะไรก็ตามที่อยู่ใน loginShell ของบัญชี AD
ติดตั้ง # attribute แล้ว
override_shell = / bin / tcsh
  • (เยื้อง)
    • การกำหนดค่า PAM:
      • การกำหนดค่า PAM บน FreeBSD นั้นค่อนข้างยุ่งยากเนื่องจากวิธีการทำงานของ OpenPAM ฉันจะไม่ลงรายละเอียด แต่การใช้ pam_sss สำหรับ SSSD และใช้งานได้และการล็อกอิน passwd ยังทำงานคุณต้องใส่ pam_unix ลงในไฟล์สองครั้ง จากสิ่งที่ฉันเข้าใจสิ่งนี้เกี่ยวข้องกับการตรวจสอบครั้งที่สองที่ทำ "เบื้องหลัง" ที่ต้องใช้โมดูล pam_unix ตัวที่สองที่ต้องผ่าน
        • นี่คือรายการของ/etc/pam.dไฟล์ที่ฉันต้องแก้ไขเพื่อให้ SSSD ทำงานกับ FreeBSD:

/etc/pam.d/sshd:

#
# $ FreeBSD: releng / 11.0 / etc / pam.d / sshd 197769 2009-10-05 09: 28: 54Z des $
#
# การกำหนดค่า PAM สำหรับบริการ "sshd"
#

# รับรองความถูกต้อง
รับรองความถูกต้องเพียงพอ pam_opie.so no_warn no_fake_prompts
รับรองความถูกต้องตรวจสอบ pam_opieaccess.so no_warn allow_local
#auth เพียงพอ pam_krb5.so no_warn try_first_pass
#auth เพียงพอ pam_ssh.so no_warn try_first_pass
รับรองความถูกต้อง pam_unix.so no_warn try_first_pass nullok
รับรองความถูกต้อง pam_sss.so เพียงพอ use_first_pass
รับรองความถูกต้อง pam_unix.so no_warn use_first_pass

# บัญชีผู้ใช้
ต้องมีบัญชี pam_nologin.so
#account ต้องการ pam_krb5.so
ต้องมีบัญชี pam_login_access.so
ต้องมีบัญชี pam_unix.so
บัญชี pam_sss.so ให้เพียงพอ

# เซสชัน
#session ตัวเลือก pam_ssh.so want_agent
เซสชันเสริม pam_sss.so
ต้องการเซสชัน pam_mkhomedir.so โหมด = 0700
เซสชันที่ต้องการ pam_permit.so

# รหัสผ่าน
#password เพียงพอ pam_krb5.so no_warn try_first_pass
#password เพียงพอ pam_unix.so try_first_pass use_authtok nullok
รหัสผ่าน pam_unix.so เพียงพอดังนั้นลอง _first_pass use_authtok
รหัสผ่านเพียงพอ pam_sss.so use_authtok

/etc/pam.d/system:

#
# $ FreeBSD: releng / 11.0 / etc / pam.d / ระบบ 197769 2009-10-05 09: 28: 54Z des $
#
# ค่าเริ่มต้นทั้งระบบ
#

# รับรองความถูกต้อง
รับรองความถูกต้องเพียงพอ pam_opie.so no_warn no_fake_prompts
รับรองความถูกต้องตรวจสอบ pam_opieaccess.so no_warn allow_local
#auth เพียงพอ pam_krb5.so no_warn try_first_pass
#auth เพียงพอ pam_ssh.so no_warn try_first_pass
#auth ต้องการ pam_unix.so no_warn try_first_pass nullok
รับรองความถูกต้อง pam_unix.so no_warn try_first_pass
รับรองความถูกต้อง pam_sss.so เพียงพอ use_first_pass
รับรองความถูกต้อง pam_deny.so

# บัญชีผู้ใช้
#account ต้องการ pam_krb5.so
ต้องมีบัญชี pam_login_access.so
ต้องมีบัญชี pam_unix.so
บัญชี pam_sss.so ให้เพียงพอ

# เซสชัน
#session ตัวเลือก pam_ssh.so want_agent
ต้องใช้เซสชัน pam_lastlog.so no_fail
เซสชันเสริม pam_sss.so
ต้องการเซสชัน pam_mkhomedir.so โหมด = 0700

# รหัสผ่าน
#password เพียงพอ pam_krb5.so no_warn try_first_pass
#password ต้องใช้ pam_unix.so no_warn try_first_pass
รหัสผ่านเพียงพอ pam_unix.so no_warn try_first_pass nullok use_authtok
รหัสผ่านเพียงพอ pam_sss.so use_authtok
#password ต้องใช้ pam_deny.so

/etc/pam.d/su:

#
# $ FreeBSD: releng / 11.0 / etc / pam.d / su 219663 2011-03-15 10: 13: 35Z des $
#
# การกำหนดค่า PAM สำหรับบริการ "su"
#

# รับรองความถูกต้อง
รับรองความถูกต้องเพียงพอ pam_rootok.so no_warn
รับรองความถูกต้อง pam_self.so no_warn
รับรองความถูกต้องตรวจสอบ pam_group.so no_warn group = wheel root_only fail_safe ruser
รับรองความถูกต้องรวม system.dist

# บัญชีผู้ใช้
บัญชีรวมถึง system.dist

# เซสชัน
เซสชันที่ต้องการ pam_permit.so
  • (เยื้อง)

    • หมายเหตุ:
      • system.distเป็นสำเนาของ/etc/pam.d/systemไฟล์สต็อก มันรวมอยู่ใน/etc/pam.d/suไฟล์ด้านบนเพื่อป้องกันปัญหาเกี่ยวกับคำสั่ง su
      • หนึ่งยังคงสามารถsuบัญชี AD เป็นรูทตั้งแต่ครั้งเดียวsuไม่จำเป็นต้องรับรองความถูกต้องและข้อมูลบัญชีจะถูกดึงผ่านสวิตช์บริการชื่อผ่าน SSSD
      • หากคุณต้องการสลับจากผู้ใช้รายหนึ่ง (ไม่ใช่รูท) ไปเป็นผู้ใช้คนอื่นควรใช้sudoเพื่อเหตุผลด้านความปลอดภัยเพียงอย่างเดียว
      • นอกจากนี้คุณยังสามารถใช้ksuและใช้ได้กับการสลับจากผู้ใช้ A ไปยังผู้ใช้ B
        • Heimdal's ksu(เป็น/usr/bin) ไม่ได้ตั้งค่า SUID ไว้ตามค่าเริ่มต้น
          • เพื่อให้ Heimdal ksuทำงานchmod u+s /usr/bin/ksu
        • MIT Kerberos ( krb5แพ็คเกจที่ติดตั้งใน/usr/local/bin) เป็น SUID ในการติดตั้ง
      • เนื่องจาก Heimdal เป็นส่วนหนึ่งของแพ็คเกจพื้นฐานคุณจะมีไบนารีของ Kerberos ทั้งสองชุด
        • คุณอาจต้องการปรับเปลี่ยนเส้นทางเริ่มต้นเพื่อให้/usr/local/binเป็นมาก่อน/usr/binเป็นต้น
      • ksu จะแจ้งให้ผู้ใช้รหัสผ่าน AD / Kerberos ของผู้ใช้เป้าหมาย
      • passwdจะไม่ทำงานเพื่อเปลี่ยนรหัสผ่าน AD / Kerberos ของคุณแม้ว่าคุณpam_sss.soจะเพิ่มไฟล์ PAM passwd passwdไบนารีสนับสนุนเฉพาะท้องถิ่นและ NIS ใช้kpasswdเปลี่ยนรหัสผ่านของคุณในการโฆษณา / เซิร์ฟเวอร์ Kerberos (s)
    • สวิตช์ชื่อบริการ:

      • /etc/nsswitch.confไฟล์ควรจะกำหนดค่าใช้บริการสำหรับ sss passwd และกลุ่ม ตัวอย่าง:
        • group: files sss
        • passwd: files sss
    • เข้าร่วมโดเมน:

      • มีสองเครื่องมือหลักใน * nixs เพื่อเข้าร่วมกล่อง linux ของคุณ
        • adcli
          • นี่คือเครื่องมือที่ฉันต้องการ มันทำงานได้ดีมากและทุกอย่างสามารถทำได้ในบรรทัดคำสั่งเดียว ข้อมูลประจำตัวสามารถให้แบบไม่โต้ตอบ (ผ่าน stdin ฯลฯ )
          • ไม่จำเป็นต้องทำkinitก่อนที่จะใช้มันทำเพื่อคุณตามเครดิตที่ให้ไว้
            • ตัวอย่าง:
              • adcli join -D mydomain.net -U Administrator--show-details –v
              • adcli join –H adclient.mydomain.net -D mydomain.net -U Administrator --show-details -v
                • ขอแนะนำให้ใช้แบบฟอร์มนี้เนื่องจากยูทิลิตี้ไม่สามารถระบุ FQDN ได้อย่างถูกต้องเสมอไป เมื่อคุณระบุ FQDN ที่ตรงกับ DNS ทั้งข้างหน้าและย้อนกลับสำหรับโฮสต์หลักการจะถูกสร้างขึ้นอย่างถูกต้อง หากยูทิลิตีใช้ชื่อโฮสต์ที่ไม่ถูกต้อง (ไม่รวมโดเมน DNS เป็นต้น) ผู้ให้บริการบางรายจะไม่ถูกสร้างขึ้นและสิ่งต่าง ๆ เช่น SSH ในโฮสต์อาจล้มเหลว
        • netยูทิลิตี้ แซมบ้า
          • netยูทิลิตี้เป็นส่วนหนึ่งของชุดแซมบ้า
          • ยูทิลิตี้นี้ต้องการรายละเอียดโดเมนที่จะตั้งค่าในsmb.confไฟล์กำหนดค่าซึ่งทำให้ยากและไม่สะดวกในการใช้โดยเฉพาะอย่างยิ่งไม่โต้ตอบ
          • เครื่องมือนี้ยังต้องที่คุณได้รับบัตร Kerberos kinitก่อนที่จะใช้โดยการใช้ อีกครั้งสิ่งนี้ไม่สะดวกมากขึ้นและทำให้การใช้สคริปต์แบบไม่โต้ตอบอาจทำได้ยากขึ้นเนื่องจากมีสองขั้นตอนแทนที่จะเป็นขั้นตอนเดียว
    • ข้อควรพิจารณาเกี่ยวกับ SSHD:

      • การใช้ SSHD เพื่อทำงานกับ AD และ SSSD นั้นค่อนข้างง่าย
      • ต้องเพิ่มตัวเลือกต่อไปนี้ /etc/ssh/sshd_config
        • GSSAPIAuthentication yes
          • เปิด GSS API auth สำหรับ SSHD นี่จะทำให้ SSHD ตรวจสอบสิทธิ์กับ AD KDC
        • PasswordAuthentication yes
          • อนุญาตให้ผู้ใช้เข้าสู่ระบบด้วยรหัสผ่าน จำเป็นหากคุณต้องการให้ผู้ใช้รับตั๋ว KRB5 เมื่อทำการล็อกอิน หากไม่มีการเปิดใช้งานนี้ระบบจะไม่สามารถถอดรหัส TGT ที่ส่งโดย KDC
        • ChallengeResponseAuthentication yes
          • สำหรับ FreeBSD วิธีนี้น่าจะใช้ได้ผลดีที่สุด
            • ตรวจสอบให้แน่ใจว่าคุณกำหนดค่าPasswordAuthentication noเมื่อใช้ตัวเลือกนี้
            • นี่เป็นวิธีเดียวที่ฉันพบสำหรับ FreeBSD ที่ทำงานเพื่อเปลี่ยนรหัสผ่านที่หมดอายุเมื่อเข้าสู่ระบบ ถ้าคุณใช้อีกอันมันจะเรียก/bin/passwdซึ่งไม่สนับสนุนอะไรเลยนอกจากไฟล์ NIS และโลคัล passwd
        • GSSAPICleanupCredentials yes
          • (ไม่บังคับ) จะทำkdestroyเมื่อออกจากระบบ
        • GSSAPIStrictAcceptorCheck no
          • (เป็นทางเลือก) ตัวเลือกนี้มักจะต้องใช้หาก SSHD สับสนเกี่ยวกับชื่อโฮสต์ของตัวเองหรือเป็นแบบ multihomed ฯลฯ หรือใช้บริการหลักอื่นในการสื่อสารกับ KDC โดยทั่วไป SSHD จะใช้บริการหลักhost/<FQDN>@REALMเพื่อพูดคุยกับ KDC แต่บางครั้งทำให้เกิดความผิดพลาด (ตัวอย่างเช่นหากชื่อโฮสต์ไม่ตรงกับชื่อ DNS ของเซิร์ฟเวอร์ SSH) ตัวเลือกนี้ช่วยให้ SSHD ใช้เงินต้นใด ๆ ใน/etc/krb5.keytabไฟล์ซึ่งรวมถึงการที่เหมาะสมhost/<FQDN>@REALM
      • ขึ้นอยู่กับการผสมผสานของตัวเลือกที่คุณใช้คุณอาจหรืออาจไม่จำเป็นต้องเพิ่มตัวการโฮสต์กับ KDC สำหรับที่อยู่ IPv4 และ IPv6 ของโฮสต์ของคุณเพื่อssh -K <ip>ให้ทำงานโดยไม่ต้องแจ้งรหัสผ่าน (สันนิษฐานว่าคุณได้ทำ 'kinit' แล้ว แน่นอน).

ฉันหวังว่านี่จะช่วยผู้คน โดยทั่วไปจะรวบรวมจากบันทึกย่อของฉันในขณะที่พยายามทำให้ FBSD10 และ 11 ทำงานร่วมกับ SSSD และเซิร์ฟเวอร์โฆษณา ปัญหาที่ใหญ่ที่สุดที่ฉันพบคือการกำหนดค่า PAM ซึ่งไม่จริงและไม่ทำงานเหมือนที่พวกเขาทำภายใต้ลินุกซ์ (บั๊กใน openpam?) และบรรจุภัณฑ์ / การอ้างอิง แสดงความคิดเห็นหากคุณมีวิธีการอื่น โดยเฉพาะอย่างยิ่งถ้าคุณได้รับมันทำงานกับสร้างขึ้นใน Heimdal Kerberos เหมือนViníciusFerrãoดูเหมือนจะทำในคำตอบของเขา ฉันไม่ได้ลองเพราะ SSSD ยืนยันที่จะดึงแพ็คเกจ MIT krb5 ต่อไป
— jbgeek

อัปเดตสิ่ง pam.d ฉันค้นพบสาเหตุของความว้าวุ่นใจของ openpam และพบการแก้ไข (ใช้โมดูล pam_unix สองครั้งจึงผ่านการทดสอบแบบ "ซ่อน" ที่จำเป็นสำหรับการเข้าสู่ระบบเพื่อประสบความสำเร็จ)
— jbgeek
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.