การพิสูจน์ตัวตนเซิร์ฟเวอร์ Linux กับ AD มีประโยชน์อย่างไร?


18

เราใช้ทั้งเซิร์ฟเวอร์ Windows และ Linux ที่ บริษัท พัฒนาซอฟต์แวร์ของเรา

หนึ่งในจุดฝืดของการตั้งค่านี้คือเราไม่มีวิธีการลงชื่อเข้าระบบครั้งเดียว การเป็นร้านค้า Microsoft มากกว่า Linux ที่เราต้องการรับรองความถูกต้องกับโฆษณา

ฉันอ่านบทความออนไลน์สองสามฉบับและเข้าใจว่าเป็นไปได้

ขณะนี้เรากำลังใช้บริการต่อไปนี้บน Linux ที่ต้องใช้การรับรองความถูกต้อง:
- เซิร์ฟเวอร์ git (ผ่าน SSH)
- Sendmail
- Apache เว็บเซิร์ฟเวอร์ปัจจุบันใช้ไฟล์. htaccess
- การแชร์ไฟล์ SAMBA

สิ่งที่ฉันอยากรู้คือการตั้งค่าประเภทนี้เป็นประโยชน์อย่างไร มันใช้งานได้จริงหรือว่าเป็นข้อผิดพลาดได้ง่าย?


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

ตรวจสอบ FreeIPA :) freeipa.org
GioMac

คำตอบ:


11

มันไม่ยากและมันใช้งานได้อย่างสมบูรณ์แบบ

เรามีเครื่องเดสก์ท็อปสำหรับบูตคู่สองสามร้อยเครื่องที่ใช้ AD auth และเซิร์ฟเวอร์จำนวนมากที่ใช้ AD auth เพื่อเปิดใช้งานไคลเอนต์ windows ให้ใช้แซมบ้าของพวกเขาร่วมกัน

มีบทความอีกบทความหนึ่งเกี่ยวกับ SF เกี่ยวกับสิ่งที่คุณต้องทำ

โดยทั่วไปคุณต้องกำหนดค่า kerberos, winbind, nss และ pam

จากนั้นคุณทำkinitและ a net ads joinและขึ้นของคุณ

คุณสามารถกำหนดค่า pam ให้ใช้หลายวิธีสำหรับการรับรองความถูกต้องหากคุณต้องการดังนั้นหากวิธีนี้ใช้ไม่ได้ผลก็จะย้อนกลับไปยังถัดไป

เรามักจะใช้ไฟล์ winbindd และ ldap สำหรับเซิร์ฟเวอร์ที่ให้บริการแชร์ไฟล์ไปยังเซิร์ฟเวอร์ windows

ถ้าเป็นไปได้ฉันจะใช้ LDAP สำหรับข้อมูลบัญชีและ windbind สำหรับการรับรองความถูกต้อง แต่ฉันเชื่อว่าคุณสามารถแมปแอตทริบิวต์ในฉันคิดว่า /etc/ldap.conf ถ้าคุณต้องการ หากคุณใช้ winbindd สำหรับข้อมูลบัญชีเป็นไปได้ที่จะใช้ RID (วิธีการแฮช) เพื่อสร้าง uids / gids แต่ก็เป็นไปได้ที่จะใช้วิธีการอื่น เราใช้ RIDs กับ fileserver ขนาดใหญ่หนึ่งไฟล์และมันก็เป็นความเจ็บปวดอย่างแท้จริงดังนั้นฉันจึงลองและสำรวจตัวเลือกอื่น ๆ หากเป็นไปได้ ในกรณีของเราผู้ใช้ AD และกลุ่มโฆษณาทั้งหมดจะแสดงใน LDAP โดยระบบ IDM ขั้นต้นดังนั้นเราจึงใช้ LDAP สำหรับข้อมูลบัญชีบนเซิร์ฟเวอร์ใหม่และใช้ winbind เพื่อการรับรองความถูกต้องโดยสมบูรณ์


6

การพิสูจน์ตัวตนนั้นง่ายมากโดยใช้ Likewise Open http://www.likewise.com/products/likewise_open/index.php

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

ในฐานะที่เป็นโน้ต UID และ GID จะถูกกำหนดตามฟังก์ชั่นแฮชดังนั้นจึงเหมือนกันในโครงสร้างพื้นฐานทั้งหมดดังนั้น NFS mounts จึงทำงานได้อย่างสมบูรณ์


1
ฉันใช้เช่นเดียวกันเปิดในเซิร์ฟเวอร์หลายแห่งและพบว่าทำงานได้ดี หาก Apache / Sendmail เป็นเครื่องหันหน้าไปทางด้านนอกคุณอาจต้องการตรวจสอบเวลาแฝง / โหลดที่เพิ่มเข้ามา
Kyle Brandt

3
ลิงก์เสียแล้ว
gogaz

ดูเหมือนว่า (โดยเนื้อหาเว็บไซต์) บริษัท ไม่ได้ทำผลิตภัณฑ์นี้อีกต่อไป
Alexei Martianov

4

ฉันติดตั้ง Windows Services สำหรับ Unix และเพิ่มผู้ใช้ในโฆษณาชื่อ "Unix Authenticator" จากนั้นทำการเปลี่ยนแปลงไฟล์กำหนดค่าต่อไปนี้บนเครื่อง linux:

/etc/ldap.conf:
host ldap.<foo>.com
base cn=Users,dc=<foo>,dc=com
binddn cn=Unix Authenticator,cn=Users,dc=<foo>,dc=com
bindpw <password>
nss_base_passwd cn=Users,dc=<foo>,dc=com?sub
nss_base_shadow cn=Users,dc=<foo>,dc=com?sub
nss_base_group cn=Users,dc=<foo>,dc=com?sub
nss_map_objectclass posixAccount User
nss_map_objectclass shadowAccount User
nss_map_objectclass posixGroup Group
nss_map_attribute cn msSFUName
nss_map_attribute uid msSFUName
nss_map_attribute gid gidNumber
nss_map_attribute gecos sAMAccountName
nss_map_attribute homeDirectory msSFUHomeDirectory
nss_map_attribute uniqueMember Member
pam_login_attribute msSFUName
pam_filter objectclass=user
pam_password ad
/etc/ldap.secret:
<password>
/etc/nsswitch.conf:
passwd: compat ldap
shadow: compat ldap
group: compat ldap
/etc/nsswitch.ldap:
host files dns
/etc/pam.d/system-auth:
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth sufficient /lib/security/pam_ldap.so use_first_pass
auth required /lib/security/pam_deny.so

account sufficient /lib/security/pam_ldap.so
account required /lib/security/pam_unix.so

password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok md5 shadow use_authtok
password sufficient /lib/security/pam_ldap.so use_first_pass use_authtok
password required /lib/security/pam_deny.so

session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so

หวังว่านี่จะช่วยได้


นี่เป็นวิธีการที่น่าสนใจขอบคุณฉันจะสำรวจถนนสายนี้เช่นกัน
Philip Fourie

1
โปรดอย่าใช้ pam_ldap สำหรับรับรองความถูกต้อง (ใน /etc/pam.d/system-auth) ตามที่เป็นอยู่ มันจะส่งรหัสผ่านของคุณใน cleartext คุณควรใช้ LDAPS หรือ GSSAPI หากคุณต้องการตรวจสอบสิทธิ์ผ่าน LDAP คุณสามารถใช้ LDAP สำหรับ NSS และ Kerberos สำหรับการตรวจสอบสิทธิ์หากคุณต้องการทำอย่างปลอดภัย (ดูด้านล่าง)
TheFiddlerWins

2

มีผู้ใช้ Windows ที่กำลังทำการต่อต้าน AD แต่เซิร์ฟเวอร์ส่วนใหญ่ของเรา (ไดรฟ์สาธารณะเป็นต้น) เป็น linux และพวกเขาเป็นส่วนหนึ่งของโดเมน จากหน้าต่าง PoV ไม่มีใครสังเกตเห็น จากด้านข้างของฉันมันให้ความรู้สึกถึงผลไม้เล็กน้อยด้วยชื่อผู้ใช้ windows ของฉัน แต่มันเกี่ยวกับขนาดของมัน

เพียงแค่ใช้แซมบ้าแบบเก่าธรรมดา


2

คุณไม่จำเป็นต้องใช้ Samba, AD รองรับ Kerberos และ LDAP โดยตรง ไม่มีเหตุผลใดที่คุณจะใช้ซอฟต์แวร์ภายนอกในการแจกจ่ายส่วนใหญ่

สำหรับ Debian / Ubuntu คุณสามารถทำได้ด้วย libnss-ldap และ libpam-krb5 มีเทคนิคเล็กน้อยเพื่อให้ได้ 100% สิ่งนี้ถือว่าคุณมี "unixHomeDirectory" บรรจุอยู่สำหรับผู้ใช้ Linux กล่อง Linux ของคุณกำลังใช้ NTP ทั่วไปกับระบบ Windows ของคุณ (จำเป็นต้องใช้ Kerberos) และคุณตกลงกับการค้นหา NSS ข้อความธรรมดา (ไม่ใช่รหัสผ่าน แต่เป็นข้อมูลกลุ่มสมาชิกเป็นต้น - คุณยังสามารถ ใช้ TLS แต่การตั้งค่านั้นซับซ้อนกว่า) คุณไม่ควรมี pam_ldap เป็นรหัสผ่านหรือแหล่งข้อมูลรับรองความถูกต้องใน PAM เว้นแต่คุณจะตั้งค่าให้ใช้ TLS

/etc/ldap.conf

# LDAP Configuration for libnss-ldap and libpam-ldap.
# Permit host to continue boot process with out contacting LDAP server
bind_policy soft
# Define LDAP servers to use for queries, these must be Global Catalog servers
uri ldap://ldap.site.company.local
# Define root search location for queries
base dc=company,dc=local
#debug 1
# LDAP version, almost always going to be v3, it is quite mature
ldap_version 3
# Username used to proxy authentication. You can have this in a separate file owned by root for security OR use TLS/SSL (see man page)
# Do NOT use LDAP for authentication if you are using plain text binds, use Kerberos instead (and LDAP for authorization only). See libpam-krb5.
binddn cn=ldap-auth-svc,ou=ldap,ou=services,dc=site,dc=company,dc=local
# Password for proxy acct
bindpw SooperSekeretPazzwerd
#  TCP port to perform queries on, 3268 is a Global Catalog port which will reply for all users in *.company.local
port 3268
# Search range scope (sub = all)
scope sub
# Tell the client to close TCP connctions after 30 seconds, Windows will do this on the server side anyways, this will prevent errors from showing up in the logs.
 idle_timelimit 30
# Expect queries for group membership to return DN for group members instead of usernames (lets you use MSAD group membership seamlessly)
nss_schema rfc2307bis
# Filters - User accounts must have a UID >= 2000 to be recognized in this configuration and must have a unixHomeDirectory defined.
nss_base_group dc=company,dc=local?sub?&(objectClass=group)(gidNumber=*)
nss_base_user dc=company,dc=local?sub?&(objectClass=user)(!(objectClass=localputer))(uidNumber>=2000)(unixHomeDirectory=*)
nss_base_shadow dc=company,dc=local?sub?&(objectClass=user)(!(objectClass=localputer))(uidNumber>=2000)(unixHomeDirectory=*)
# Object Class mappings.  You may want to have the posixAccount to map to "mail" and have users login with their email addresses, i.e.  "nss_map_objectclass posixAccount mail".
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_objectclass posixGroup group
# Attribute mappings.
nss_map_attribute uniqueMember member
nss_map_attribute uid sAMAccountName
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_attribute shadowLastChange pwdLastSet
# Attribute in LDAP to query to match the username used by PAM for authentication
pam_login_attribute sAMAccountName
# Filter for objects which are allowed to login via PAM
pam_filter objectclass=User

คุณไม่จำเป็นต้องแก้ไข /etc/krb5.conf สมมติว่ากล่อง Linux ของคุณกำลังใช้เซิร์ฟเวอร์ DNS ที่รู้เกี่ยวกับ AD (โซน _msdcs ที่มีระเบียน SRV ที่เหมาะสมสามารถแก้ไขได้)

/etc/nsswitch.conf ควรมี "files ldap" สำหรับผู้ใช้กลุ่มเงา

สำหรับ Red Hat โดยใช้ SSSD:

/etc/sssd/sssd.conf

[domain/AD]
id_provider = ldap
auth_provider = krb5
chpass_provider = krb5
access_provider = ldap

ldap_uri = ldap://ldap.company.local:3268/
ldap_search_base = dc=company,dc=com
ldap_default_bind_dn = cn=ldap-auth-svc,ou=ldap,ou=services,dc=site,dc=company,dc=local
ldap_default_authtok = SooperSekeretPazzwerd
ldap_schema = rfc2307bis
ldap_user_object_class = user
ldap_group_object_class = group
ldap_user_name = sAMAccountName
ldap_user_home_directory = unixHomeDirectory
enumerate = true
ldap_tls_reqcert = never
ldap_tls_cacertdir = /etc/openldap/cacerts

ldap_id_use_start_tls = False
cache_credentials = True
krb5_realm = SITE.COMPANY.COM
case_sensitive = false
[sssd]
services = nss, pam
config_file_version = 2

domains = AD
[nss]
filter_users = root,named,avahi,nscd

คุณต้องการเปลี่ยนแปลงอะไรในด้านโฆษณาในสถานการณ์นี้หรือไม่? ฉันจำการเห็น "เครื่องมือ Unix สำหรับ windows" จำเป็นต้องติดตั้งเมื่อใช้ SAMBA หรือไม่
Martin Nielsen

โซลูชันนี้ไม่ได้ขึ้นอยู่กับ SAMBA มันกำลังใช้ Native LDAP / Kerberos เหตุผลเดียวที่ใช้เครื่องมือ Unix คือการได้รับ GUI เพื่อแก้ไขแอตทริบิวต์ผู้ใช้ / กลุ่ม POSIX แม้จะไม่จำเป็นถ้าคุณใช้ SSSD SAMBA (ใน Winbind) ให้คุณติดตั้งซอฟต์แวร์ที่ทำให้ระบบเลียนแบบไคลเอนต์ Windows การตั้งค่าด้านบนเพียงแค่ใช้ LDAP / Kerberos มาตรฐาน
TheFiddlerWins

Argh damn ฉันต้องการเขียน "ldap / kerberos" ฉันไม่รู้ว่าเกิดอะไรขึ้น ความผิดของฉัน. แต่เครื่องมือ Unix สำหรับโฆษณานั้นไม่จำเป็นจริง ๆ สำหรับ LDAP / Kerberos?
Martin Nielsen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.