450 likes | 580 Views
Linux for Organization Infrastructure Management. Part 1 Light Weight Directory Access Protocol. Light-Weight Directory Access Protocol (LDAP).
E N D
Light-Weight Directory Access Protocol (LDAP) • Directory Access คือระบบฐานข้อมูลที่มีโครงสร้างแบบต้นไม้ ซึ่งนิยมใช้งานกันมากในการเก็บฐานข้อมูลผู้ใช้ในระบบปฏิบัติการต่างๆ (ในระบบวินโดวส์จะเรียกวิธีการเก็บแบบนี้ว่า Active Directory)
Light-Weight Directory Access Protocol (LDAP) • LDAP จัดเก็บข้อมูลอยู่ในรูปของโครงสร้างของต้นไม้ ทำให้ง่ายต่อการนำเอาโครงสร้างขององค์กรวางลงไปในฐานข้อมูลของ LDAP • LDAP อิงตามมาตรฐาน X.500 ในการจัดเก็บข้อมูล
ข้อดี / ข้อเสีย • ข้อดีของ LDAP • LDAP เก็บข้อมูลเป็นโครงสร้างแบบต้นไม้ ซึ่งสามารถเก็บข้อมูลแยกกันอยู่หลายๆเครื่องได้ โดยแยกตามโครงสร้างของต้นไม้ • LDAP สามารถทำงานได้ทั้งบนโปรโตคอลแบบ Secure และไม่ Secure • ระบบ Authentication บน Linux สามารถใช้งานผ่าน LDAP ได้อย่างสมบูรณ์ • สามารถทำ Replication ได้ • ข้อเสียของ LDAP • การคอนฟิกยุ่งยากมาก ต้องใช้คำสั่งเฉพาะของ LDAP ในการเพิ่ม/ลบผู้ใช้ออกจากฐานข้อมูลเท่านั้น • โครงสร้างข้อมูลซับซ้อน
LDAP Schema • กลุ่มของข้อมูลในแต่ละโหนดในฐานข้อมูล • ประกอบด้วยวัตถุหนึ่งประเภทหรือมากกว่า วัตถุแต่ละประเภทเรียกว่า objectClass • สามารถขยายจาก schema ที่มีอยู่แล้วได้ • การสร้างเป็นโหนดไม่จำเป็นต้องมีข้อมูลครบทุกประเภท
objectclass ( 2.5.6.2 NAME 'country' DESC 'RFC2256: a country' SUP top STRUCTURAL MUST c MAY ( searchGuide $ description ) ) objectclass ชื่อ country ขยายมากจากวัตถุ top ต้องมีข้อมูล c อาจมีข้อมูล searchGuide หรือ description ก็ได้ ตัวอย่าง LDAP Schema
LDAP ใน Linux • LDAP Server ที่ใช้งานกันอย่างแพร่หลายในระบบ Linux คือ OpenLDAP • OpenLDAP (www.openldap.org) จะมีส่วนประกอบสำคัญๆสองส่วนคือ • Slapd – เป็นแดมอนหลักของ OpenLDAP • Slurpd – เป็นแดมอนสำหรับการทำ Replication เพื่อการ Backup หรือการใช้งาน OpenLDAP หลายๆที่ • Fedora Directory Server (directory.fedora.redhat.com) • LDAP Server ที่พัฒนาต่อมาจาก Netscape Directory Server • สนับสนุนคุณลักษณะเด่นทุกอย่างของ OpenLDAP • ยังใช้งานไม่เป็นที่แพร่หลายมากเท่า OpenLDAP • นอกจากนี้ใน Linux Distribution ส่วนใหญ่ ยังประกอบไปด้วยโมดูลสำหรับการทำ Authentication ผ่านระบบ LDAP ทำให้สามารถทำระบบ Authentication ได้โดยง่าย
การตั้งค่า OpenLDAP • คอนฟิกไฟล์หลักของ OpenLDAP จะอยู่ในไดเรคทอรี่ /etc/openldap ทั้งหมด โดยจะมีไฟล์สำคัญๆดังต่อไปนี้ • /etc/openldap/slapd.conf – เป็นคอนฟิกไฟล์ของ slapd • /etc/openldap/ldap.conf – เป็นคอนฟิกไฟล์ของ OpenLDAP client • ไฟล์อื่นๆสามารถทิ้งไว้ได้โดยไม่ต้องแก้ไข ในส่วนไดเรคทอรี่ /etc/openldap/schema จะเป็นที่เก็บ Schema ของ LDAP ซึ่งจะเป็นตัวบอกประเภทของข้อมูลที่จัดเก็บใน LDAP ซึ่งโดยปกติแล้วจะไม่จำเป็นที่จะต้องแก้ไข
การตั้งค่า OpenLDAP สำหรับเป็นฐานข้อมูล • ก่อนที่จะคอนฟิกระบบ LDAP ให้ใช้เป็น Authentication system ควรจะทดสอบการคอนฟิกให้เป็นระบบฐานข้อมูลปกติก่อน แล้วจึงค่อยคอนฟิกให้ใช้ LDAP เป็นระบบ Authentication • ขั้นตอนการคอนฟิก • ปรับแก้ /etc/openldap/slapd.conf ให้ตรงตามความต้องการ • ปรับแก้ /etc/openldap/ldap.conf ให้ตรงกับ slapd.conf • เริ่มการทำงานของ slapd • สร้างไฟล์ฐานข้อมูลเริ่มต้น • นำเข้าฐานข้อมูลเข้าไปใน OpenLDAP • ทดสอบผลการคอนฟิกด้วยการ search
โครงสร้างฐานข้อมูลที่จะใช้โครงสร้างฐานข้อมูลที่จะใช้
/etc/openldap/slapd.conf • แก้ไข Option suffix และ rootdn ให้ตรงตามความต้องการ • suffix – suffix เปรียบเสมือนสิ่งที่ใช้อธิบายองค์กรของเรา • O=Traincorp1,c=TH หรือ o=Traincorp2,c=TH • rootdn – rootdn เปรียบเสมือนชื่อแอคเคานต์ของผู้ที่เป็น Admin ของระบบ Ldap • cn=Manager,o=Traincorp1,c=TH หรือ cn=Manager,o=Traincorp2,c=TH • rootpw – password ของ rootdn ซึ่งจะต้องสร้างโดยใช้คำสั่ง slappasswd • slappasswd >> slapd.conf • พิมพ์ password ที่ต้องการลงไป แล้วนำเอา password ที่ใส่ลงไปใน slapd.conf ไปวางไว้หลัง rootpw
/etc/openldap/slapd.conf (ต่อ) • จะเห็นว่า LDAP มีลักษณะกาทำงานคล้ายคลึงกับระบบฐานข้อมูลทั่วไป คือจะต้องมีแอคเคานต์สำหรับผู้ใช้ที่จะเป็น Admin ของระบบ ซึ่งในกรณีของ LDAP จะเก็บแอคเคานต์ของ Admin ในรูปแบบ X.500 และเก็บลงในฐานข้อมูลเดียวกัน เราต้องกำหนดชื่อของ Admin ของระบบในไฟล์ slapd.conf ไว้ก่อน เนื่องจากหากไม่มี Admin account แล้วเราก็จะไม่สามารถนำเข้าฐานข้อมูลได้ ทำให้ไม่สามารถนำเอาฐานข้อมูลเข้าได้เลยถ้าไม่ระบุชื่อแอคเคานต์ Admin ในไฟล์คอนฟิกนอกระบบฐานข้อมูล
/etc/openldap/ldap.conf • ไฟล์คอนฟิกนี้เป็นไฟล์คอนฟิกสำหรับคำสั่งพื้นฐานในการ Query ข้อมูลจาก LDAP เช่น คำสั่ง ldapsearch, ldapadd ldapmodify เป็นต้น • แก้ไข HOST ให้มี Address ตรงกับเครื่องที่รัน slapd และ BASE ให้ตรงกับ suffix ที่กำหนดใน slapd.conf • BASE เป็นเหมือนกับ search filter โดยทุกครั้งที่คำสั่ง ldap ทำงานจะนำเอา BASE ไปต่อท้ายกับคำที่ต้องการค้นหาเสมอ เช่น cn=Group1,ou=Group ก็จะกลายเป็น cn=group1,ou=Group,o=Traincorp1,c=TH
เริ่มการทำงานของ Slapd server • /sbin/service ldap start • /sbin/chkconfig ldap on • ทดสอบว่าระบบทำงานได้หรือไม่โดยสั่ง ldapsearch –x • -x หมายถึงว่าให้ใช้ simple authentication
สร้างไฟล์ฐานข้อมูลเริ่มต้นสร้างไฟล์ฐานข้อมูลเริ่มต้น • ใช้รูปแบบ Ldif ในการจัดเก็บข้อมูล โดยถูกส่งเข้าไปในระบบฐานข้อมูลของ OpenLDAP ด้วยคำสั่ง ldapadd • ใน Red Hat Linux ตั้งแต่เวอร์ชัน 9 จะมีคำสั่งสำหรับแปลง /etc/passwd และ /etc/group ให้กลายเป็นไฟล์ในรูปแบบของ ldif • LDAP_DEFAULT_MAIL_DOMAIN=localhost LDAP_EXTENDED_SCHEMA=1 LDAP_BASEDN="o=Traincorp1,c=TH" /usr/share/openldap/migration/migrate_passwd.pl /etc/passwd > pwd.ldif • LDAP_DEFAULT_MAIL_DOMAIN=localhost LDAP_EXTENDED_SCHEMA=1 LDAP_BASEDN="o=Traincorp1,c=TH" /usr/share/openldap/migration/migrate_group.pl /etc/group >> pwd.ldif
สร้างไฟล์ฐานข้อมูลเริ่มต้น (ต่อ) • เพิ่ม parent directory เข้าไปที่ต้นไฟล์ pwd.ldif dn: o=Traincorp1,c=TH o: Traincorp1 objectClass: top objectClass: organization dn: ou=People,o=Traincorp1,c=TH ou: People objectClass: top objectClass: organizationalUnit dn: ou=Group,o=Traincorp1,c=TH ou: Group objectClass: top objectClass: organizationalUnit
สร้างไฟล์ฐานข้อมูลเริ่มต้น (ต่อ) • เพิ่มผู้ใช้ที่ต้องการ (user1-3 และ group1-3) เข้าไปในไฟล์ pwd.ldif • ลบแอคเคานต์ของระบบเช่น root ออกจากฐานข้อมูล LDAP เพื่อป้องกันความผิดพลาดในกรณีที่เครื่องลูกข่ายใช้แอคเคานต์ที่มีชื่อแอคเคานต์และ User ID ไม่ตรงกัน และเพื่อเหตุผลทางความปลอดภัยด้วย
การนำเข้าฐานข้อมูลเริ่มต้นการนำเข้าฐานข้อมูลเริ่มต้น • นำเข้าฐานข้อมูลโดย • ldapadd –x –W –D ‘cn=Manager,o=Traincorp1,c=TH’ –f pwd.ldif • ทดสอบโดยการใช้คำสั่ง ldapsearch –x อีกครั้ง • ทดลองใช้คำสั่ง ldapsearch –x ‘uid=user1’ • หากต้องการลดเวลาในการเพิ่มผู้ใช้อาจใช้วิธีการ add user เข้าไปในไฟล์ก่อนแล้วจึง convert อีกทีหนึ่ง
นำเอาระบบ LDAP มาใช้เป็นระบบ Authentication • เรียกคำสั่ง system-config-authentication หรือเรียกจาก System Setting -> Authentication
นำเอาระบบ LDAP มาใช้เป็นระบบ Authentication
ความแตกต่างระหว่าง User Information Configuration และ AuthenticationConfiguration • User Information Configuration – วิธีการที่จะดึงข้อมูลของผู้ใช้ แต่ไม่รวมไปถึงการ Authenticate (Log-in) เข้าสู่ระบบ • คำสั่งจำนวนมากต้องการอ่านข้อมูลเกี่ยวกับผู้ใช้ ไม่ว่าจะเป็น finger, lsUser Information Configuration • Authentication Configuration – วิธีการ Authenticate เพื่อเข้าสู่ระบบ • เช่น แหล่งที่จะอ่าน password และ username
การทดสอบ • ลองใช้คำสั่ง finger user1 เพื่อทดสอบว่าสามารถมองเห็น user คนนั้นหรือไม่ • หมายเหตุ: เราจำเป็นต้องสร้าง home directory ของผู้ใช้คนนั้นเอง เนื่องจากเราไม่ได้เพิ่มผู้ใช้เข้าในระบบด้วยคำสั่ง useradd เอง • mkdir /home/user1 • cd /etc/skel • tar –cf - .[a-zA-Z]* | (cd /home/user1 ; tar –xf -) • chown –R user1.group1 /home/user1
ปฏิบัติการ 1: ทดลองการใช้งาน LDAP • สร้างระบบ Authentication ในเครื่องที่ท่านใช้อยู่ โดยให้ Authenticate ผ่าน LDAP และมีรายชื่อผู้ใช้ตามตัวอย่างข้างต้นทั้งหมด
ชุดคำสั่งสำหรับ LDAP • ldapadd – เพิ่มข้อมูลเข้าสู่ฐานข้อมูล โดยต้องส่งไฟล์ในรูปแบบของ LDIF เข้าไป • ldapmodify – แก้ไขข้อมูลที่มีอยู่แล้ว • ldapsearch – ค้นหาข้อมูลในฐานข้อมูล • ldapdelete – ลบ entry ในฐานข้อมูล • ldapmodrdn – rename entry ในฐานข้อมูล • ladppasswd – เปลี่ยน password ของ entry นั้นๆ • slappasswd – สร้าง password สำหรับระบบฐานข้อมูล LDAP
ชุดคำสั่งสำหรับ LDAP • ldapadd • ldapadd –c –x –W –D ‘cn=Manager,o=Traincorp1,c=TH’ –f add.ldif • -x – ใช้ simple authentication • -W – ให้ถาม password จาก prompt • -D – ระบุ rootdn • -f – อ่านข้อมูลจากไฟล์ add.ldif (หากไม่ระบุ คำสั่งจะอ่านข้อมูลจาก standard input) • -c – ทำงานต่อไปเรื่อยๆแม้ว่าจะมีปัญหาเกิดขึ้น (เช่น มี entry ซ้ำ หากเป็นปกติจะหยุดทำงานทันที แต่หากระบุ –c จะไม่หยุดจนกว่าจะหมด input) • argument ส่วนใหญ่ของคำสั่งนี้จะเหมือนกับคำสั่งอื่นๆ
ชุดคำสั่งสำหรับ LDAP • ldapdelete • ldapdelete –x –W –D ‘cn=Manager,o=Traincorp1,c=TH’ ‘cn=mailman,ou=Group,o=Traincorp1,c=TH’ • ลบ entry cn=mailman,ou=Group,o=Traincorp1,c=TH ออกจากฐานข้อมูล • ในการลบ entry ใดๆ entry นั้นต้องเป็นปลายสุดของโครงสร้างต้นไม้ทั้งหมดจึงจะลบได้ เช่น เราจะไม่สามารถลบ ou=People,o=Traincorp1,c=TH ได้หากไม่ลบ entry ที่อยู่ภายใต้ ou=People ออกให้หมดก่อน
ชุดคำสั่งสำหรับ LDAP • ldapmodrdn • ldapmodrdn –x –W –D ‘cn=Manager,o=Traincorp1,c=TH’ –f rdn.ldif • โดย rdn.ldif มีข้อมูลดังต่อไปนี้ cn=mailman,ou=Group,o=Traincorp1,c=TH cn=mailwoman • เปลี่ยนชื่อ group mailman จาก mailman เป็น mailmanjung
ldapmodify ldapmodify –x –W –D ‘cn=Manager,o=Traincorp1,c=TH’ –f mod.ldif ลบ entry ที่ระบุในไฟล์ mod.ldif ออกจากฐานข้อมูล รูปแบบของไฟล์ mod.ldif dn: cn=Modified, o=Traincorp1, c=TH changetype: modify replace: mail mail: xx@yy.org - add: title title: Modified One - delete: description สั่งให้เปลี่ยนฟิลด์ mail ของ entry cn=Modified, o=Traincorp1, c=TH เป็นxx@yy.org และเพิ่มฟิลด์ title โดยให้มีค่าเป็น Modified One และลบ field description ออก ตัวคั่นระหว่างการเปลี่ยนแปลงคือ – เสมอ หากมีหลาย entry ที่ต้องการเปลี่ยนแปลง ให้คั่นด้วยบรรทัดว่างหนึ่งบรรทัด dn: cn=group1,ou=Group, o=Traincorp1, c=TH changetype: modify add: memberUid memberUid: uid=user1,ou=People,o=Traincorp1,c=TH memberUid: uid=user2,ou=People,o=Traincorp1,c=TH เพิ่มฟิลด์ memberUid เข้าไปใน entry group1 โดยมีค่าที่เพิ่มสองค่าคือ uid=user1,ou=People,o=Traincorp1,c=TH และ uid=user2,ou=People,o=Traincorp1,c=TH จริงๆแล้วคำสั่ง ldapadd และ ldapdelete ก็คือการเรียก ldapmodify โดยมี changetype เป็น add และ delete นั่นเองเราสามารถทำทุกคำสั่งได้ด้วย ldapmodify ชุดคำสั่งสำหรับ LDAP
ชุดคำสั่งสำหรับ LDAP • ldapsearch • ldapsearch –x ‘cn=mailman,ou=Group,o=Traincorp1,c=TH’ • ค้นหาข้อมูลของ entry ที่ระบุ (cn=mailman) • ldapsearch –x –b ‘ou=People,o=Traincorp1,c=TH’ ‘uid=roo*’ • ค้นหาข้อมูลของ entry ที่ขึ้นต้นด้วย uid= roo โดยเริ่มค้นหาจาก ou=People • slappasswd • slappasswd –h ‘{CRYPT}’ • สร้าง password สำหรับใช้ใน entry ที่เก็บ password ต่างๆเช่น userPassword โดยสามารถระบุวิธีการเข้ารหัสได้ด้วย ตัวอย่างนี้เป็นการสร้าง password โดยใช้วิธีการเข้ารหัสโดยใช้ฟังก์ชัน crypt ใน UNIX • หมายเหตุ: หากต้องการให้ password สามารถนำกลับมาใช้ในฟอร์แมตของไฟล์ password ธรรมดาได้ควรจะใช้วิธีการเข้ารหัสแบบ Crypt เสมอ (default จะเป็น SSHA)
ปฏิบัติการ 2: ตัวอย่างการใช้งานคำสั่ง LDAP • ทดลองเพิ่มผู้ใช้ชื่อว่า user4 ลงไปในฐานข้อมูลโดยใช้คำสั่ง ldapadd • เปลี่ยน gecos ของ user1 ให้เป็นคำว่า “I am user1” แล้วทดสอบผลด้วยการใช้คำสั่ง fingeruser1 ดู • ลบ user4 ที่พึ่ง add เข้ามาในระบบ
ปรับแก้ให้ผู้ใช้สามารถเปลี่ยน password ของตัวเองในฐานข้อมูลได้ • ต้องปรับตั้งให้ slapd ยอมให้ผู้ใช้ที่ Log-in แก้ไขฐานข้อมูลในส่วนของตัวเองก่อน โดยเพิ่ม Config ชุดนี้เค้าไปใน /etc/openldap/slapd.conf access to * by self write by users read by anonymous read • access to * หมายถึง access มายังฐานข้อมูลตรงส่วนไหนก็ได้ • by self หมายถึงเมื่อตัวเอง Log-in เข้ามา • by users หมายถึง เมื่อเป็น users Log-in • by anonymous หมายถึงเมื่อไม่ได้ Log-in • LDAP เก็บ password สำหรับ user คนนั้นๆไว้ที่ฟิลด์ userPassword ในส่วนของแต่ละ User เราสามารถแก้ไข password ของผู้ใช้คนนั้นได้โดยการใช้คำสั่ง ldapmodify โดยตรงเพื่อแก้ไขข้อมูลเฉพาะฟิลด์ • หมายเหตุ: ต้องให้ anonymous read ได้เสมอเพราะการใช้งานคำสั่งโดยทั่วๆไปทั้งหมดเป็นการ Log-in แบบ anonymous เสมอ • ผู้ใช้จะสามารถเปลี่ยน password ได้ในทันที
ปรับแก้ให้ root สามารถเปลี่ยน password ของผู้ใช้ได้ • ในกรณีของ root แม้ว่าจะเปลี่ยน password ของ User ก็จำเป็นที่จะต้องรู้ password ของ rootdn หรือของ user นั้นๆก่อนเสมอ (ปัญหาทำนองเดียวกับ NIS) แต่หาสร้างไฟล์ /etc/ldap.secret และใส่ password ของ rootdn ไว้ในนั้นจะสามารถทำให้เปลี่ยน password ได้ด้วยคำสั่ง passwd โดยไม่ต้องใส่ password ของ rootdn เลย • สมมุติ password เป็นคำว่า “secret” • แก้ไขออพชั่น rootbinddn ใน /etc/ldap.conf ให้เป็น rootdn ของระบบ • rootbinddn cn=Manager,o=TrainCorp1,c=TH • echo secret > /etc/ldap.secret • chmod 600 /etc/ldap.secret # หากไม่ทำระบบจะไม่ยอมอ่านไฟล์นี้ • ไฟล์ /etc/ldap.conf เป็นไฟล์คอนฟิกหลักของระบบ Authentication ผ่าน LDAP (แยกคนละไฟล์กับ /etc/openldap/ldap.conf ซึ่งเป็นไฟล์คอนฟิกสำหรับชุดคำสั่ง LDAP เท่านั้น)
การเพิ่มความเร็วให้กับ LDAP • ระบบ Authentication มีการทำงานเกือบตลอดเวลา ความเร็วของ OpenLDAP อาจไม่เพียงพอจริง • เราสามารถเพิ่มความเร็วในการทำ Authentication ได้ โดยใช้ Name service caching daemon (nscd) ซึ่งจะ cache การร้องขอข้อมูลเกี่ยวกับการ Authentication ไว้เสมอ • เริ่มการทำงานได้โดยการเลือกที่หัวข้อ “Cache information” ของโปรแกรม system-config-authentication โดยไม่ต้องคอนฟิกอย่างอื่นเพิ่มเติมเลย • nscd สามารถใช้ร่วมกับการ authentication อื่นๆได้ • บางครั้ง nscd อาจไม่ได้ update ข้อมูล สามารถบังคับให้ nscd refresh ข้อมูลก็สั่ง /sbin/service nscd reload ได้
การเพิ่มความเร็วให้กับ LDAP • นอกจากนั้นระบบ LDAP เป็นระบบที่ใช้งานไฟล์เป็นจำนวนมาก จำเป็นอย่างยิ่งที่จะต้องแก้ไขคอนฟิกของเคอร์เนลให้สามารถรองรับการเปิดไฟล์จำนวนมากๆได้ • /sbin/sysctl –w fs.file-max = 65536
การใช้งาน LDAP ผ่านโปรโตคอลแบบปลอดภัย (TLS) • OpenLDAP สามารถทำงานผ่าน TLS ได้ • เอาคอมเมนต์ของคอนฟิกที่ขึ้นต้นด้วยคำว่า TLS ออกให้หมดในไฟล์ /etc/openldap/slapd.conf • TLSCertificateFile /usr/share/ssl/certs/slapd.pem • TLSCertificateKeyFile /usr/share/ssl/certs/slapd.pem • TLSCACertificateFile /usr/share/ssl/certs/ca-bundle.crt • ไปที่ /usr/share/ssl/certs และสร้าง certificate ใหม่ • cd /usr/share/ssl/certs • rm –f slapd.pem && make slapd.pem • ตอบคำถามทั้งหมดที่ปรากฏ และต้องตอบคำถามในขั้นตอนที่ถาม Common name ให้ถูกต้องโดยต้องใส่ชื่อ host ที่ถูกต้องลงไป • chgrp ldap slapd.pem && chmod 640 slapd.pem • เมื่อแก้ไขทั้งหมดแล้วให้ restart ldap server • service ldap restart
การใช้งาน LDAP ผ่าน TLS • แก้ไขคอนฟิกไฟล์ /etc/openldap/ldap.conf • แก้ชื่อโฮสต์ (HOST) ให้ตรงกับสิ่งที่ใส่ไปใน Common Name • คำตอบของ Common Name จะเป็นตัวกำหนดชื่อเครื่องที่ถูกต้องที่ต้องใส่ใน /etc/openldap/ldap.conf เพราะฉะนั้นต้องใส่ชื่อเครื่องให้ถูกต้อง เช่น myhostname.mydomainame.com • เพิ่มออพชั่น TLS_REQCERT allow • สร้าง link จากไดเรคทอรี่ /usr/share/ssl/certs มาที่ /etc/openldap/cacerts ln -s /usr/share/ssl/certs /etc/openldap/cacerts • ทดสอบผลการคอนฟิกได้โดยใช้คำสั่ง ldapsearch –x –ZZ (-ZZ หมายถึงบังคับให้ใช้ TLS ในการติดต่อขอข้อมูล)
การ Authentication โดยใช้ LDAP/TLS • เลือกออพชั่น Use TLS ในคำสั่ง system-config-authentication เพื่อบังคับให้ใช้ TLS และต้องใส่ชื่อ Host ให้ตรงกับ Common name ใน Certificate ด้วย • เพิ่มออพชั่น tls_checkpeer no ลงใน /etc/ldap.conf • ทดสอบผลการคอนฟิกโดยการใช้งานคำสั่ง finger user1
เกี่ยวกับระบบ Certificates Authority (CA) • ในการคอนฟิก TLS ข้างต้นที่ผ่านมา จะไม่มีการตรวจสอบ CA หรือเครื่องปลายทางว่าเป็นเครื่องที่ถูกต้องหรือไม่ • TLS_REQCERT allow • tls_checkpeer no • ข้อมูลที่รับส่งจะถูกเข้ารหัส แต่ยังมีโอกาศที่เครื่องปลายทางอาจจะไม่ใช่เครื่องที่เราต้องการจะติดต่อจริงๆ • ในระบบจริงควรจะมี CA ซึ่งมีความปลอดภัยสูง เพื่อดูแลการออก Certificates ในองค์กรทั้งหมด
ปฏิบัติการ 3: TLS + LDAP + NSCD • บังคับให้ทุกๆส่วนทำ Authentication แบบปลอดภัยโดยผ่าน TLS ทั้งหมด • ใช้งานแดมอน NSCD แล้วดูผลว่าการทำ Authentication เร็วขึ้นหรือไม่
การคอนฟิกเพิ่มเติม • ไฟล์คอนฟิกที่คำสั่ง system-config-authentication ไปแก้ไขนั้นจะอยู่ในไดเรคทอรี่ /etc/pam.d/system-auth ซึ่งเป็นไฟล์คอนฟิกหลักของการทำ Authentication ทั้งระบบ ขอให้ผู้เรียนทดลองเปลี่ยนคอนฟิกด้วยคำสั่ง system-config-authentication และดูผลของคอนฟิกที่เปลี่ยนไปด้วยตัวเอง • ไฟล์คอนฟิกในส่วนของ User Information Configuration ใน system-configu-authenticaion จะอยู่ที่ /etc/nsswitch.conf ซึ่งเป็นไฟล์คอนฟิกที่ใช้ระบุแหล่งที่มาของข้อมูลต่างๆไม่ว่าจะเป็น passwd, hosts, ethers, netgroup, autofs • เราสามารถระบุ search base ในการอ่านข้อมูลรวมไปถึง account ที่ใช้ในการ Log-in แทน account anonymous ในการใช้งานระบบ Authentication ผ่าน ldap ได้ โดยการแก้ไขคอนฟิกไฟล์ /etc/ldap.conf ซึ่งสามารถระบุคอนฟิกดังกล่าวได้ เช่น การอ่านรายชื่อผู้ใช้โดยปกติจะอ่านจาก ou=People,o=Traincorp1,c=TH เราสามารถระบุให้อ่านจากส่วนอื่นแทนได้ เช่น ou=HumanResource,ou=Employee,o=Traincorp1,c=TH
สรุป • ระบบฐานข้อมูล LDAP เป็นระบบฐานข้อมูลสำหรับจัดเก็บข้อมูลในลักษณะของโครงสร้างต้นไม่ซึ่งมีความยืดหยุ่นสูงมาก • สามารถใช้งานเป็นระบบ Authentication ได้ • ไฟล์คอนฟิกหลักทั้งหมด 3 ไฟล์คือ • /etc/openldap/slapd.conf – OpenLDAP server • /etc/openldap/ldap.conf – OpenLDAP command suite • /etc/ldap.conf – Authentication system configuration • ในการนำ LDAP ไปใช้งานจริง นอกจากนำไปทำระบบ Authentication แล้ว ยังสามารถนำไปจัดเก็บข้อมูลเพื่อใช้ในการค้นหาข้อมูลผ่านทางโปรแกรมอื่นๆ เช่นโปรแกรม Outlook Express ก็มีส่วนสนับสนุนการค้นหาชื่อบุคคลทีต้องการผ่าน Directory service ได้