ฉันกำลังติดตั้ง Squid3 บน Ubuntu 14.10 และฉันต้องการรวม ADDS บน windows server 2012 โดยใช้ kerberos 5 โครงสร้างพื้นฐานของฉันมีดังนี้:

เกตเวย์เริ่มต้น:

192.168.1.1

DNS & ตัวควบคุมโดเมน (Windows Server 2012 ):

dc.mydomain.com

 address   192.168.1.250
 netmask 255.255.255.0
 gateway 192.168.1.1

พร็อกซี่ (Ubuntu Desktop 14.10) vmproxy

address 192.168.1.251
netmask 255.255.255.0
gateway 192.168.1.1
dns-search mydomain.com
dns-nameservers 192.168.1.2

มีขั้นตอนดังนี้

ขั้นตอนที่ 1: ตรวจสอบ DNS Lookup: ทำงานได้ดีทั้งการค้นหาแบบไปข้างหน้าและย้อนกลับ

ขั้นตอนที่ 2: กำหนดค่าเขตเวลาที่ถูกต้องบนพร็อกซีเซิร์ฟเวอร์ของคุณ:

  $ sudo service ntp stop
  $ sudo ntpdate -b dc.mydomain.com
  $ sudo service ntp start

ขั้นตอนที่ 3: ติดตั้ง Kerberos Client Libraries และตั้งชื่ออาณาจักร Kerberos เป็น MYDOMAIN.COM

$ sudo apt-get install krb5-user

ขั้นตอนที่ 4: แก้ไขไฟล์คอนฟิกูเรชัน Kerberos /etc/krb5.conf.

[libdefaults]
default_realm = MYDOMAIN.COM    
default_tgs_enctypes = rc4-hmac des3-hmac-sha1    
default_tkt_enctypes = rc4-hmac des3-hmac-sha1

ตรวจสอบว่าการกำหนดค่า Kerberos ถูกต้อง โดย

$ kinit [email protected]
$ klist

ขั้นตอน:5 การสร้างผู้ใช้เฉพาะทางใน Active Directory และจับคู่ผู้ใช้รายนี้กับชื่อหลักของ Kerberos

c:/> ktpass -princ HTTP/[email protected] -mapuser [email protected] -crypto rc4-hmac-nt -pass [email protected] -ptype KRB5_NT_PRINCIPAL -out krb5.keytab

ขั้นตอน:6 คัดลอกไฟล์ keytab ไปยัง /etc/krb5.keytab บน vmproxy


/etc/krb5.conf ของฉันมีดังนี้:-

[libdefaults]
default_realm= MYDOMAIN.COM
default_tgs_enctypes=rc4.hmac des3-hmac.sha1
default_tkt_enctypes=rc4.hmac des3-hmac.sha1

[realms]
MYDOMAIN.COM={

kdc=dc.mydomain.com
admin_server=dc.mydomain.com
default_domain=mydomain.com

}

[domain_realm]
.mydomain.com=  MYDOMAIN.COM
mydomain.com=MYDOMAIN.COM

ตอนนี้เมื่อฉันทดสอบ TGT จาก dc.mydomain.com เป็น:

$ kinit -V -k -t /etc/krb5.keytab HTTP/[email protected]

มันบอกว่า:

Using default cache: /tmp/krb5cc_0
Using principal: HTTP/[email protected]
Using Keytab: /etc/krb5.keytab
kinit:Client 'HTTP/[email protected]' not found in kerberos database while getting initial credentials

ขณะใช้

$ kinit -k

มันบอกว่า

kinit:Cannot determine realm for host (principal host/[email protected])
answer

คำสั่งนี้:

c:/> ktpass -princ HTTP/[email protected] -mapuser [email protected] -crypto rc4-hmac-nt -pass [email protected] -ptype KRB5_NT_PRINCIPAL -out krb5.keytab

ฉันเชื่อว่าตั้งค่า HTTP/ [email protected] เป็นบริการหลักที่เกี่ยวข้องกับผู้ใช้[email protected] ใน AD โดยทั่วไปแล้ว Active Directory จะไม่อนุญาตให้คุณตรวจสอบสิทธิ์เป็นบริการหลัก (โดยเฉพาะอย่างยิ่ง ไม่อนุญาตให้รับ TGT ผ่าน AS_REQ) ในทางทฤษฎี หลักการบริการควรจะเป็นการยอมรับข้อมูลรับรองผู้ใช้ ไม่ใช่สำหรับการรับรองความถูกต้องกับขอบเขต kerberos ของคุณ

สิ่งนี้แตกต่างจาก Unix KDC ซึ่งโดยทั่วไปจะไม่แยกความแตกต่างระหว่าง "หลักการบริการ" และ "หลักการผู้ใช้" โดยค่าเริ่มต้น อนุญาตให้ตรวจสอบสิทธิ์ผ่านkinit. ใน Active Directory แทนที่ KDC จะแสร้งทำเป็นว่าไม่มีตัวการสำคัญเมื่อคุณพยายามทำkinitซึ่งมีแนวโน้มที่จะค่อนข้างสับสน

หากคุณสามารถพิสูจน์ตัวตนได้สำเร็จในฐานะผู้ใช้รายอื่น ฉันจะลองทดสอบว่าบริการหลักทำงานโดยเรียกใช้แทน:

$ kinit some_other_user
$ kvno HTTP/[email protected]

ซึ่งเพิ่งได้รับตั๋วบริการสำหรับ HTTP/ [email protected] หรือคุณอาจตรวจสอบสิทธิ์เป็น[email protected] แทนบริการหลักที่คุณตั้งค่าไว้

หากคุณต้องการให้kinitเป็น HTTP/ [email protected] โดยตรง ฉันคิดว่าเป็นไปได้ แต่คุณต้องเปลี่ยนแอตทริบิวต์ userPrincipalName ในบัญชี AD ที่เกี่ยวข้อง ตอนนี้ฉันจำไม่ได้ว่าต้องทำอย่างไร แต่ถ้าจำไม่ผิด คุณจะมี UPN ได้เพียงอันเดียวเท่านั้น คุณไม่สามารถมีชื่อหลักที่แตกต่างกันได้หลายชื่อkinitสำหรับบัญชีเดียวกัน