วิธีการรวม 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.