Öğ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

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

Detaylı

Ag Kimlik Denetimi Raporu v1 - Ulak-CSIRT

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...

Detaylı