Öğlen
Transkript
Öğlen
LDAP Servis Yönetimi Ender Güler HPC Sistem Sorumlusu Ulusal Yüksek Başarımlı Hesaplama Merkezi UHeM Konu başlıkları ● AAA nedir? ● LDAP nedir? ● Kavramlar ● LDAP AAA'da nerede bulunur? ● OpenLDAP servisi CentOS 7'de nasıl kurulur? ● OpenLDAP servisi CentOS 7'de nasıl ayarlanır? ● ● Linux sunucuların OpenLDAP üzerinden kimlik doğrulama işlemleri yapabilmeleri için neler yapılır? OpenLDAP servisi durum incelemesi: UHeM AAA Nedir? ● ● ● ● AAA (İngilizce triple a) diye okunur genelde... Authentication, Authorization and Accounting sözcüklerinin baş harflerinden oluşturulmuş bir kısaltmadır. AAA, bilgisayar sistemlerine kontrollü bir şekilde erişime, erişilen sistem üzerinde erişen kişiye kısıtlayıcı kural koymaya, sisteme erişen kişinin sistem kullanımıyla ilgili kayıtlarının tutulmasına ve bunların herhangi bir anda incelenmesine imkan sağlayan sistematik bir yapıdır. Modern tüm işletim sistemleri bu yapıyı bir şekilde kurmuştur. LDAP Nedir? ● ● ● ● LDAP, Lightweight Directory Access Protocol sözcüklerinin baş harflerinden olusturulmuş bir kısaltmadır. Network üzerinde dağıtık bir şekilde dizin bilgi servislerine erişim ve bu servislerin yönetimi için kullanılan, açık ve endüstri standardı, yazılım üretici firmalardan bağımsız bir uygulama protokolüdür. LDAP öncesinde X.500 denilen başka bir dizin erişim ve yönetim standardı kullanılmaktaydı. LDAP X.500'ün basitleştirilmiş halidir. Kısacısı LDAP tek başına anıldığında, yazılımsal herhangi bir bütünü değil de yazılımların dizin servislerini kullanması için ortaya konmuş kurallar topluluğunu ifade eder. Kavramlar - 1 ● ● ● LDAP uygulamalarının en önemli özelliği bir veri tabanı uygulaması olmasıdır. Genellikle okumaya yönelik olarak optimize edilmiştir. Verilerde sıklıkla değişiklik yapılması gereken durumlar için çok da uygun olmayabilir. Yapısı ağaç şeklindedir. Hiyerarşik bilgi tutmak için kullanılır. Örneğin adres defterleri LDAP üzerinde tutulmaya çok uygun bir veri tabanıdır. – Adres defterindeki insanları gruplara ayırmak isteyebiliriz – Oradaki kişilerin değişik bilgilerini tutmak isteyebiliriz – Her değişik bilgi türü ya da sınıflandırması için değişik kategoriler açabiliriz. Kavramlar - 2 Kavramlar - 3 ● ● Ağaç yapısı kurulurken dikkat edilmesi gereken bazı anahtar ifadeler ve yazım şekilleri mevcuttur. Önemli anahtar ifadeler şu şekildedir: – dc: Domain Component – o: Organization – ou: Organizational Unit – cn: Common Name – uid: User ID – dn: Distinguished Name Kavramlar - 4 ● Ağacın yaprakları bilginin toplandığı son noktadır ve bu kayıtlar “dn” ile ifade edilirler ve “dn”ler yaprağın bağlı olduğu her dalı ve nihayetinde kökü içerecek şekilde aşağıdaki sentaks ile yazılmalıdırlar: dn: uid=eguler,ou=users,dc=uybhm,dc=itu,dc=edu,dc=tr ● Bir DN ağaçtaki tekil yapraktır. Aynı DN'den o ağacın üzerinde birden fazla bulunamaz. Eğer iki farklı LDAP servisi biribirleriyle bilgi alışverişinde bulunmayacaksa bu durumda bu iki ağaçta aynı DN'den birer tane bulunabilir. Kavramlar - 5 ● ● ● ● Şemalar LDAP uygulamalarının olmazsa olmazlarıdır ve bilginin bütünlüğü ve tutarlılığı bu şemalarla sağlanır. Nesnelerin sınıflarını tanımlayarak, hangi bilgileri tutabileceklerini, kaydedilecek bu bilgilerden hangilerinin zorunlu olarak tutulması gerektiğini hangilerininse isteğe bağlı tutulacağını ya da boş bırakılacağını belirlerler. LDAP ağaç örneğindeki eguler kullanıcısına baktığımızda objectClass ile başlayan satırlar mevcut. Bu satırlar, şemalarda tanımlanmış sınıflara atıfta bulunurlar. Yaygın olarak kullanılan şemalar, LDAP servis uygulamalarıyla birlikte gelirler. Ancak istenirse sıfırdan şema yazılabileceği gibi, herhangi bir şema örnek alınarak yeni bir şema türetilebilir. Uygulamalar Pekçok yazılım üreticisi kendisine ait LDAP servis uygulaması geliştirmiştir: ● ● Açık Kaynak Kodlu – OpenLDAP Server: Sırf bu yazılımı meydana getiren geliştiricilerin oluşturduğu bir topluluktur. – Apache Directory Server: Apache Vakfı tarafından geliştirilmektedir – 389 Directory Server: Fedora/Red Hat tarafından geliştirilmektedir Ticari ● Active Directory: Microsoft ● Novell eDirectory: Novell ● Oracle Internet/Unified Directory Server: Oracle LDAP – AAA ilişkisi ● AAA'in kimlik doğrulama, yetkilendirme ve denetleme için kayıt tutma olduğu göz önüne alındığında LDAP – hem kimlik doğrulama – hem de yetkilendirme için kullanılabilir. LDAP ile dağıtılan şemalar tam da bu iki işte özelleşecek şekilde hazırlanagelmiştir ve bu sayede LDAP servis uygulamalarını yazanlar büyük ölçüde standart bir kimlik doğrulama ve yetkilendirme mekanizması sunar haldedirler. Kurulum ve Ayarlamalar 1 1- Gerekli paketler yum repo'sundan kurulurlar [root@admin-training ~]# yum install openldap-servers openldap-clients nss-pam-ldapd 2- OpenLDAP servisi başlatılır ve sunucu reboot edildiğinde otomatik başlatılsın diye enable edilir. [root@admin-training ~]# systemctl start slapd [root@admin-training ~]# systemctl enable slapd 3- CentOS ile birlikte dağıtılan ancak sisteme dahil edilmeyen şemalar aşağıdaki komutla sunucuda aktif hale getirilir. ldapmodify -a -Q -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapmodify -a -Q -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif ldapmodify -a -Q -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif 4- LDAP servis yöneticisinin şifresi üretilir. (Bunu daha sonra kullanacağız...) [root@admin-training ~]# slappasswd -s BuR4ya_zor+birSifreYazin! -h {SSHA} {SSHA}z34xX6y/rbbFnhLAC2LIXMaPpbKuhgNc 5- LDAP DB'si için -mesela- domain name ile ilişkilendirilmiş bir kök DN oluşturulmalıdır. Bunun için aşağıdaki içeriğe sahip bir dosya hazırlanmalıdır: [root@admin-training ~]# vi 00-ldap_tree_root.ldif dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr Ayarlamalar 2 6- İçeriği hazırlanan dosya DB'e aşağıdaki komutla eklenir: [root@admin-training ~]# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f 00-ldap_tree_root.ldif 7- Oluşturmaya başladığımız LDAP DB'sinin yönetici kullanıcısını ve daha önce ürettiğimiz şifresini aşağıdaki içeriğe sahip dosyayı kullanarak aktive edeceğiz. [root@admin-training ~]# vi 01-manager_initialization.ldif dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=Manager,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr add: olcRootPW olcRootPW: {SSHA}z34xX6y/rbbFnhLAC2LIXMaPpbKuhgNc 8- Yukarıdaki dosyayı aşağıdaki komutla DB'mize ekliyoruz: [root@admin-training ~]# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f 01-manager_initialization.ldif 9- Temel ayarlar kısnda son olarak 'organization'ın 'O'su ile kısaltılan organizasyonumuzun en üst seviye nesnesini aşağıdaki ldif dosyası ile oluşturuyoruz. [root@admin-training ~]# vi 02-organization_init.ldif dn: dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr objectClass: dcObject objectClass: organization dc: test1 o: test1 10- Bu bilgiyi DB'mize eklemek içinse aşağıdaki komutu kullanıyoruz: [root@admin-training ~]# ldapadd -x -w BuR4ya_zor+birSifreYazin! -D \ cn=Manager,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr -f 02-organization_init.ldif Ayarlamalar 3 11- Genel LDAP dal tanımlamaları (branch_initialization.ldif): # Genel gruplar dalı tanımı dn: ou=groups,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr objectClass: top objectClass: organizationalUnit ou: groups # genel kullanıcılar tanımı dn: ou=users,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr objectClass: top objectClass: organizationalUnit ou: users 12- Genel LDAP dallarını aşağıdaki komutla DB'mize ekleriz (tek satır): ldapadd -x -w BuR4ya_zor+birSifreYazin! -D cn=Manager,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr -f 03-branch_initialization.ldif Ayarlamalar 4 13- Üyesiz grup tanımlamaları (04-groups.ldif) dn: cn=admins,ou=groups,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr objectClass: posixGroup objectClass: top cn: admins gidNumber: 1001 dn: cn=developers,ou=groups,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr objectClass: posixGroup objectClass: top cn: developers gidNumber: 1002 dn: cn=academicians,ou=groups,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr objectClass: posixGroup objectClass: top cn: academicians gidNumber: 1003 14- Grupları DB'mize eklemek için aşağıdaki komut kullanılır. ldapadd -v -x -w BuR4ya_zor+birSifreYazin! -D cn=Manager,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr -f 04-groups.ldif Ayarlamalar 5 15- Kullanıcı tanımlamaları (05-users.ldif) dn: uid=ender,ou=users,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr objectClass: top objectClass: posixAccount objectClass: shadowAccount objectClass: account cn: ender uidNumber: 10001 gecos: Ender Guler gidNumber: 1001 LoginShell: /bin/bash homeDirectory: /home/ender uid: ender dn: uid=guler,ou=users,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr objectClass: top objectClass: posixAccount objectClass: shadowAccount objectClass: account cn: guler uidNumber: 10002 gecos: Guler Ender gidNumber: 1002 LoginShell: /bin/bash homeDirectory: /home/guler uid: guler dn: uid=test,ou=users,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr objectClass: top objectClass: posixAccount objectClass: shadowAccount objectClass: account cn: test uidNumber: 10003 gecos: Test Kullanicisi gidNumber: 1003 LoginShell: /bin/bash homeDirectory: /home/test uid: test 16- Kullanıcıları DB'mize eklemek için aşağıdaki komut kullanılır. ldapadd -x -w BuR4ya_zor+birSifreYazin! -D cn=Manager,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr -f 05-users.ldif Ayarlamalar 6 17- Kullanıcı-grup eşleştirmesi (06-user-to-group-mapping.ldif) dn: cn=admins,ou=groups,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr changetype: modify add: memberUid memberUid: ender dn: cn=developers,ou=groups,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr changetype: modify add: memberUid memberUid: guler dn: cn=academicians,ou=groups,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr changetype: modify add: memberUid memberUid: test 18- Eşleştirmeleri DB'mizde etkin kılmak için aşağıdaki komut kullanılır: ldapmodify -x -w BuR4ya_zor+birSifreYazin! -D cn=Manager,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr -f 06-user-to-group-mapping.ldif Ayarlamalar 7 17- Kullanıcılara şifre verilmesi işlemi slappasswd komutunun çalıştırılmasıyla yapılır. Her bir kullanıcıya verilecek olan şifre için bir kez slappasswd komutu çalıştırılarak hash'lenmiş değerler elde edilir. Ilk şifreyi ender, ikinci şifreyi guler, üçüncü şifreyi de test kullanıcısı için kullanacağımızı varsayalım. [root@admin-training ~]# slappasswd -s 3nd3r.1c1n! -h {SSHA} {SSHA}cBatpV87Mn7vJt6V4afLJPvFn4j9Yjjz [root@admin-training ldifs]# slappasswd -s guler.1c1n! -h {SSHA} {SSHA}ffShLRU/ytofGoLiSf4vvaig7LukPr/w [root@admin-training ldifs]# slappasswd -s test.1c1n! -h {SSHA} {SSHA}lgDtGSwt3fEetyHf+sZerkDxZ8KFJn3I 18- Kullanıcılara şifre atama (07-user-password-assignment.ldif) dn: uid=ender,ou=users,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr changetype: modify add: userPassword userPassword: {SSHA}cBatpV87Mn7vJt6V4afLJPvFn4j9Yjjz dn: uid=guler,ou=users,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr changetype: modify add: userPassword userPassword: {SSHA}ffShLRU/ytofGoLiSf4vvaig7LukPr/w dn: uid=test,ou=users,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr changetype: modify add: userPassword userPassword: {SSHA}lgDtGSwt3fEetyHf+sZerkDxZ8KFJn3I 19- Şifreleri DB'mizde etkinleştirmek için aşağıdaki komut çalıştırılır: ldapmodify -x -w BuR4ya_zor+birSifreYazin! -D cn=Manager,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr -f 07user-password-assignment.ldif İstemci Ayarlamaları - İstemci ayarlamalarına geçmeden önce istemci paketlerinin kurulumu üzerinden tekrar geçmek isterim: [root@admin-training ~]# yum install openldap-clients nss-pam-ldapd Yukarıdaki komut kurmuş olduğumuz sunucudan kimlik doğrulama işlemi yapması beklenen herbir bilgisayarda çalıştırılmalı ve gerekli paket kurulumları yapılmalıdır. - İstemcinin ayarlaması için aşağıdaki komut veriliyor. [root@admin-training ~]# authconfig --enableldap \ --enableldapauth \ --ldapserver=admin-training.uhem.itu.edu.tr \ --ldapbasedn="dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr" \ --enablemkhomedir \ --update localhost İstemci Testi ve Diğer Konular ● LDAP DB'mize kaydettiğimiz kullanıcıların sistem tarafından algılanıp algılanmadığını aşağıdaki komutlarla anlayabiliriz: [root@admin-training ~]# id ender uid=10001(ender) gid=1001(admins) groups=1001(admins) [root@admin-training ~]# getent passwd | grep test test:x:10003:1003:Test Kullanicisi:/home/test: ● Ancak ldap'ta açtığımız kullanıcılar henüz sistemde bir yere sahip değildirler. Ev dizinleri yoktur. Bunun için aşağıdaki komutlarla kullanıcılarla ilgili son işlemlerimizi yapmamız gerekecektir. [root@admin-training ~]# mkdir -p /home/{ender,guler,test} [root@admin-training ~]# cp /etc/skel/.bash* /home/ender/ [root@admin-training ~]# cp /etc/skel/.bash* /home/guler/ [root@admin-training ~]# cp /etc/skel/.bash* /home/test/ [root@admin-training ~]# chown -R ender:admins /home/ender [root@admin-training ~]# chown -R guler:developers /home/guler [root@admin-training ~]# chown -R test:academicians /home/test ● Bu noktadan sonra kullanıcılarımız artık gerçek birer kullanıcıdır ve tanımladığımız şifreler ile sisteme erişebilir durumdadırlar. Ödev Aşağıdaki işleri yerine getiren bir bash script yazmanız beklenmektedir. ● ● Yazılacak bash script sonsuz döngüde çalışmaya başlayacak, kullanıcıdan seçim yapmasını isteyecektir. Girilecek seçime göre – Yeni bir sistem kullanıcısı açacak ● Ldap kaydını şifresiyle birlikte oluşturacak ● Ev dizinini oluşturup gerekli .bash ile başlayan dosyaları ayarlayacaktır – Yeni bir sistem grubu oluşturabilecek (ldap üzerinde) – Oluşturulmuş olan kullanıcıları mevcut olan gruplara ekleyebilecek (ldap üzerinden...) – Mevcut kullanıcılardan silmek istediğimiz herhangi birini (kullanıcı adını input olarak kabul edip) ldap'tan ve /home altındaki ev dizinini de silecek – Mevcut gruplardan silmek istediğimiz herhangi birini (grup adını input alarak) ldap'tan silecek Ödevi bitirdiğinizde kodunuzu gönderip incelememi isterseniz eposta adresim şu şekildedir: [email protected] Admin Olarak LDAP İşlemleri ● ldapadd, ldapmodify (örneklerini daha önce gördük) ● ldapsearch: ldapsearch -LLL -x -b "dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr" -H ldap://localhost \ uid=test uidNumber homeDirectory ● ldapdelete: ldapdelete -x -D "cn=Manager,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr" \ -w BuR4ya_zor+birSifreYazin! \ uid=test,ou=users,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr – Sonucunu görmek için aşağıdaki komutu çalıştırabilirsiniz: [root@admin-training Ldifs]# id test id: test: no such user [root@admin-training Ldifs]# ● Ldappasswd: ldappasswd -H ldap://localhost -x \ -D "cn=Manager,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr" \ -w BuR4ya_zor+birSifreYazin! -s 1q2w3e \ uid=ender,ou=users,dc=test1,dc=uhem,dc=itu,dc=edu,dc=tr ● ldapsearch için bileşik filtre örneği: (&(objectClass=inetOrgPerson)(!(|(uid=k3di)(uid=wikiuser)(uid=nuzhet.dalfes)(uid=gokhan.akin)(uid=iletisim)))) UHeM Durum İncelemesi UHeM Hesaplama Sunucularında Kullanılan LDAP istemcilerinde ldaprr.uhem.itu.edu.tr şeklinde bir sunucu tanımı var ve bu tanımın karşılığı RHCS Failover Cluster ile oluşturulmuş bir HA cluster sanal IP adresi: a.b.c.h (buradaki tanımıyla...) ● Aşağıda bu yapının şemasını kabaca bulabilirsiniz: ● +---------------+ +---------------+ | LDAP3 | | LDAP4 | +---------------+ +---------------+ a.b.c.d ^ ^ a.b.c.e | ROUND-ROBIN | | LOADBALANCING | | | +------+-----------------------+---+ | | | +xxxxxxxxxxxx+ +------------+ | | x x | | | | x x | | | | x x | | | | x SLB1 x | SLB2 | | | x (Pasif) x | (Aktif) | | | x x | | | | x x | | | | x a.b.c.f x | a.b.c.g | | | +xxxxxxxxxxxx+ +------------+ | | | +----------------------------------+ | LOADBALANCER - a.b.c.h | +----------------------------------+ RHCS Failover Cluster SLB1 Sunucusu eth0 IP: a.b.c.f SLB1 Sunucusu eth0 IP: a.b.c.g UHeM'de aktif-aktif çalışan fiziksel iki adet LDAP server vardır ve bunların her ikisi de master server görevi görürler. OpenLDAP'ın sunduğu bir özellik olan Multi-Master Replication sayesinde client'lar herhangi bir LDAP sunucuda şifresini değiştirdiğinde doğrudan diğerine de bu değişiklik replike olur. ● Yukarıdaki ldap loadbalancing işlemini balance isimli opensource bir yazılım gerçekleştirmektedir. RHCS cluster ile oluşturulmuş HA ise, balance yazılımını çalıştıran makinalardan birine birsey olduğunda otomatik olarak diğerinin devreye girmesini sağlayacak bir yapıdır. ● Daha fazla bilgi için... ● http://www.openldap.org/ ● http://www.zytrax.com/books/ldap/ Bu derste anlatılanları deneyebileceğiniz VirtualBox appliance dosyasını aşağıdaki linkten indirip, kendi makinanızdaki VirtualBox'a import edip çalışabilirsiniz: https://ucs.uhem.itu.edu.tr/owncloud/public.php?service=files&t=7016a5210cc026 09fbf49bd682dfb4bf Konuyla ilgili herhangi bir sorunuz olduğunda bana aşağıdaki yollardan erişebilirsiniz: – [email protected] (eposta/gtalk) – [email protected] (eposta) – @k3di (Twitter)
Benzer belgeler
LDAP Administrator ile Active Directory Yonetimi Active Directory
olduğunu fark ediyorsunuz, bu durumda Groups and Members dan aşağıdaki örnekte olduğu
gibi obje bulunup silinebilir ( Bu işlemlerden önce system state in yedeğini almayı unutmamalıyız
Ag Kimlik Denetimi Raporu v1 - Ulak-CSIRT
Country Name (2 letter code) [GB]:TR
State or Province Name (full name) [Berkshire]:Istanbul
Locality Name (eg, city) [Newbury]:Maslak
Organization Name (eg, company) [My Company Ltd]:ITU
Organizat...