You are on page 1of 49

FREE RADIUS VE LDAP ILE 802.

1x
AG KIMLIK DENETIMI
Ulak-CSIRT Kimlik Denetimi alisma Grubu
Hseyin YCE, Gkhan AKIN, Hsn DEMIR
Ba Bas sl li iklar klar
} Tanimlar
} IEEE 802.1x
} Authentication, Authorization ve Accounting (AAA)
} Extensible Authentication Protocol (EAP)
} EAP esitleri
} Sifreleme Teknikleri
} Simetrik Sifreleme
} Asimetrik Sifreleme
} Sertifika
} Hash
} Imzalama
} LDAP
} RADIUS
Ba Bas sl li iklar klar
} FreeRADIUS
} PEAP TTLS Kimlik Denetimi
} Kurulum
} OpenLDAP
} Kurulum
} OpenLDAP ? FreeRADIUS Entegrasyonu
} AG CIHAZI TANIMLARI
Tanimlar
} IEEE 802.1x
IEEE 802.1x port tabanli ag erisim kontrol
standardidir. Kullanici bilgileri (kullanici adi-parola)
yardimi ile aga baglanilmasina izin verilmesini saglar
(Bazi zel durumlarda MAC adreside
kullanilmaktadir.). Kullanici dogrulama sirasinda
EAP (Extensible Authentication Protocol) yntemi
kullanilir. Bu sekilde ag erisimi isteyen cihazdan
dogrulama yapan mekanizmaya kadar kullanici
bilgilerin srekli sifreli gitmesini saglanir.
Tanimlar
} EAP
} Genisletilebilir Kimlik Kanitlama Protokol (EAP -
Extensible Authentication Protocol) [RFC 3748]
kimlik kanitlama iin bir iletim protokoldr, bir kimlik
kanitlama yntemi degildir.
} EAP kimlik kanitlama srecinde, kimlik kanitlama
sunucusu ile istemci arasinda geen ve taraflarin
hangi kimlik kanitlama yntemini kullanacaklarini
belirler. EAP kimlik kanitlama yntemi olarak MD5,
TLS, TTLS, PEAP, LEAP kullanir.
Tanimlar
} EAP esitleri
Evet Evet Evet Hayir Hayir Gvenilirlik
Evet Evet Evet Evet Hayir
WPA Anahtar
Degisimi
Hayir Hayir Evet Hayir Hayir Istemci Sertifikasi
Evet Evet Evet Hayir Hayir Sunucu Sertifikasi
PEAP EAP-TTLS EAP-TLS LEAP EAP-MD5
Tanimlar
} Hash
} Hash belirli bir matematik fonksyonu ile verinin tek
ynl (yani veri geri elde edilemiyecek sekilde) bir
kontrol numarasi elde etme teknigidir. Hash
kaynaginin dogrulanmasi ve veri btnlgn test
etmek iin kullanilir.
} MD5 ve SHA1 gnmzde kullanilan popler bir
hash algoritmalaridir. Kimlik dogrulama iin EAP
tneli yntemlerinde ve sertifika imzala amaci ile
Kullanilmaktadirlar.
Tanimlar
} Simetrik Sifreleme:
Ayni anahtar kelime ile verinin hem sifrelenmesi
hemde geri zlmesi seklinde alisan tekniktir.
Veri + Anahtar = Sifreli Veri
Sifreli Veri + Anahtar = Veri
Az sistem kaynagi tketen bir sifreleme sistemidir
ancak anahtarin karsilikli haberlesirken taraflara
gvenli ulastirilmasi zordur.
Tanimlar
} Asimetrik Sifreleme:
Iki anahtardan olusan bu sistemde anahtar1'in
sifreledigini anahtar2, anahtar2'nin sifreledigi ise
anahtar1 aabilir.
Veri + Anahtar1 = Sifreli Veri (Public)
Sifreli Veri + Anahtar2 = Veri (Private)
Not:ift ynl gvenli haberlesme iin 2 ift anahtar
gerekir.
Not2: Asimetrik sifreleme ok sistem kaynagi
tkettiginden daha ok simetrik anahtarin tasinmasi
iin kullanlilir.
Tanimlar
} Sertifika
} Sertifika Public anahtari ve bunun yani sira hizmet
alinacak kurumun Adi, web adresi, mail adresi ...vs
bilgileri barindiran bir dkmana verilen addir.
Tanimlar
} Imza - 1
Private
A
Public
A
Bay A
Gvenilen
kisi
Private
G
Hash
Sifreli
Public
A
+
+
Bay Anin
Bilgileri
=
Bay B
Public
G
Gvenilen(Kk)
Public
G
Gvenilen(Kk)
Bay Gnin
Bilgileri
Tanimlar
} Imza - 2
Bay B
Hash
Sifreli
+
Public
G
+
=
=
?
Public
G
Gvenilen(Kk)
Bay Anin
Tanimlar
} Imza - 3
Bay G
Bay A
Tanimlar
} EAP esitleri
Evet Evet Evet Hayir Hayir Gvenilirlik
Evet Evet Evet Evet Hayir
WPA Anahtar
Degisimi
Hayir Hayir Evet Hayir Hayir Istemci Sertifikasi
Evet Evet Evet Hayir Hayir Sunucu Sertifikasi
PEAP EAP-TTLS EAP-TLS LEAP EAP-MD5
Tanimlar
} EAP-TLS
} TLS (Iletim Katmani Gvenligi), Secure Sockets Layer (SSL) in atasi
olan bir kriptografi protokoldr.
} Protokol iki katmandan olusur.
} TLS kayit protokol : TLS kayit protokol ile veriler simetrik sifreleme
anahtarlari ile sifrelenir.
} TLS el sikisma (handshake) protokol : Bu anahtar TLS el sikisma
protokol kullani larak alici ve verici tarafindan paylasilir. TLS el
sikisma protokol ile haberlesecek taraflarin birbirlerini
yetkilendirmeleri, sifreleme algoritmasi ve anahtarlarin karsilikli
degisimi saglanir.
}
} Bu ift ynl dogrulama zelligi ile EAP-TLS en gvenilir EAP
yntemlerinden biri olarak bilinir. Ancak her istemciye zgn sertifika
retilerek, gvenli bir sekilde dagiti lmasini gerektiren bu yntemin
uygunalmasi zordur.
Tanimlar
} PEAP
Tanimlar
} AAA
} Authentication (Yetkilendirme) : Kullanici ya da
kullanicilara sisteme, programa veya aga erisim
hakkinin verilmesidir.
} Authorization (Kimlik Dogrulama) : Sunucu,
anahtar veya ynlendirici kullanimlarinda cihaz ya da
kullanicinin kimliginin onaylanmasidir.
} Accounting (Hesap Ynetimi) : Herhangi bir
kullanicinin ne yaptigi , kullanici hareketleri kullanici
veri baglantilari ve kullanici sistem kayitlarinin
izlenebilmesi amaciyla yapilan islemdir.
RADIUS Uygulamalari
} FreeRADIUS
} Windows IAS
} Cisco ACS
} Juniper SBR
FreeRADIUS
} alisma Grubu Kapsaminda GPL lisansina sahip
FreeRADIUS ile alisilistir.
} FreeRADIUS : PAP,CHAP,MS-CHAP,EAP-MD5,
EAP-TLS, PEAP, EAP-TTLS ...VS ile kimlik
denetimi yapabilmektedir.
} Ayrica kendi bnyesinde Kullanici veritabani
olusturulabildigi gibi harici bir kaynaktanda
kullanici denetimi yapabilmektedir.
} Kurulum ile ilgili detaylari FreeRADIUS kurulum
sunumunda bulabilirsiniz.
LDAP Nedir
} LDAP (Lightweight Directory Access Protocol : Hafif
Dizin Erisim Protokol)
} Dizin ifadesi LDAP'in yapisi ve ierdigi bilgi itibari ile
"veritabani" olarak adlandirilmaktadir.
} LDAP da ki ana ama aranan verinin mmkn olan
en kisa srede bulunmasidir.
} LDAPda veriler hiyerarsik nesneler seklindedir.
} Nesneler giris (entry) olarak adlandirilir.
LDAP Nedir
} "objectclass" bir entry iinde bulunabilecek attribute
'lari tanimlar.
} Objectclass'larin tanimlari schema dosyalarinda
tanimlanir.
} Aga yapisi seklinde olan bu yapiya Data
Information Tree (DIT) denir.
} Veri bilgi agacinin tepesinde ise kk (root) vardir.
} LDAP dizinine entry'ler LDIF (LDAP Data
Interchange Format) girdi dosyasi ile eklenir
LDAP Nedir
} Sart olmamakla birlikte genellikle aga yapisinin
tepe noktasi yani kk 'o' (organization)'dur.
} Daha altinda genellikle 'ou' (organizational unit)'ler
bulunur.
} Her organization'un altinda esitli 'cn' (common
name)'ler bulunur. Bir ou'nun altina baska bir ou
konabilir.
LDAP Yapisi
LDAP Uygulamalari
} cretsiz LDAP Uygulamalari
} OpenLDAP,
} Fedora Directory Server,
} OpenDS,
} ApacheDS
} cretli LDAP Uygulamalari
} MS Active Directory
} Novel e-Directory
OpenLDAP
} OpenLDAP uygulamasi ntanimli olarak
kuruldugunda yapilandirma dosyalari Linux
sistemlerde /etc/openldap, BSD sistemlerde
/usr/local/etc/openldap klasrnde bulunur.
} Dzenlenecek olan ilk yapilandirma dosyasi
slapd.conf dir.
OpenLDAP (slapd.conf)
} } include include / /usr usr/ /local local/ /etc etc/ /openldap openldap/ /schema schema/ /core core. .schema schema
} } I Include nclude / /usr usr/ /local local/ /etc etc/ /openldap openldap/ /schema schema/ /cosine cosine. .schema schema
Bu iki girdi gerekli olan LDAPv3 sistemini ve X.500 tani mlar
} } pidfile pidfile /var/ /var/run run/ /openldap openldap/ /slapd slapd. .pid pid
} } argsfile argsfile /var/ /var/run run/ /openldap openldap/ /slapd slapd. .args args
} pidfile direktifi OpenLDAP (slapd)in PIDi nereye yazacagi ni
tanimlar.
} argsfile direktifi, OpenLDAPi n komut satirinda hangi parametre ile
alisacagini belirler.
} } / /usr usr/ /local local/ /libexec libexec/ /slapd slapd - -h h
ldapi ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ://%2fvar%2frun%2fopenldap%2fldapi/ ldap ldap://0.0.0.0/ ://0.0.0.0/ - -u u
ldap ldap - -g g ldap ldap
OpenLDAP (slapd.conf)
} } modulepath modulepath / /usr usr/ /local local/ /libexec libexec/ /openldap openldap
} } moduleload moduleload back back_ _bdb bdb
} modulepath direktifi, OpenLDAP tarfindan
yklenebilir modllerin (overlays) yerini
} gsterir.
} moduleload direktifi ile verilen tanim bu dizinde
olmalidir. Burada back_bdb kullanilmistir.
} Bu sekilde Berkeley Database kullanilabilecektir. .
OpenLDAP (slapd.conf)
} } database database bdb bdb
} } suffix suffix " "dc dc= =marmara marmara, ,dc dc=edu, =edu,dc dc=tr" =tr"
} } rootdn rootdn " "cn cn= =root root, ,dc dc= =marmara marmara, ,dc dc=edu, =edu,dc dc=tr" =tr"
} } rootpw rootpw {SSHA}K73K9RFa7ti+ {SSHA}K73K9RFa7ti+Dz Dz+RpCyG9L6M0YXyb5SE +RpCyG9L6M0YXyb5SE
} database direktifi Data Information Tree (DIT)nin veritabani
esidini belirler
} suffix direktifi veritabaninda tutulacak Data Information Tree
(DIT)nin hiyerarsisini yada Distinguished Namein en st
dgm noktasini belirler.
} rootdn en st dgm noktasini rootpw direktifinde verilen
sifre ile erisebilecek sper kullanici tanimini belirler.
} rootpw direktifi sper kullanicinin veritabanina erisimi iin
kullanilir.
} komut satirinda slappasswd -h {SSHA} -s konya kullanilarak
hash li bir sifre olusturulabilir.
OpenLDAP (slapd.conf)
} } directory directory /var/ /var/db db/ /openldap openldap- -data data
} } index index objectClass objectClass eq eq
} } index index uid uid eq eq
} directory direktifi veritabaninin hangi dizinde
tutulacagini belirler
} index direktifi ile hangi alanlarin indekslemesi
yapilacagi belirlenir. Bu sekilde daha hizli sorgulama
yapilabilir.
LDAP Data Interchange Files (LDIF)
} base.ldif
} } dn dn: : dc dc= =marmara marmara, ,dc dc=edu, =edu,dc dc=tr =tr
} } objectclass objectclass: : dcObject dcObject
} } objectclass objectclass: : organization organization
} } o: Marmara o: Marmara Universitesi Universitesi LDAP Sunucusu LDAP Sunucusu
} } dc dc: : marmara marmara
} } # #ldapadd ldapadd - -H H ldap ldap://127.0.0.1 ://127.0.0.1 - -x x - -D D
" "cn cn= =root root, ,dc dc= =marmara marmara, ,dc dc=edu, =edu,dc dc=tr" =tr" - -f f base base. .ldif ldif W W
OpenLDAP ? FreeRADIUS Entegrasyonu
OpenLDAP ? FreeRADIUS
} FreeRADIUS kimlik dogrulamasinda, kullanici
kimlikleri bilgileri ve erisim tanimlari sunucu zerinde
yapilabilecegi gibi kullanim kolayligi saglayacak
LDAP sunucusunda da yapilabilir.
} LDAP sunucunda daha nceden tanimlanmis
kullanici tanimlarini da kullanmak mmkndr.
} Daha nce kurulan FreeRADIUSla birlikte gelen
RADIUS LDAP sema dosyasini
/usr/local/share/doc/freeradius/ldap_howto.txt
dosyasindan dzenleyerek RADIUS-
LDAPv3.schema adinda OpenLDAP schema
dizinine kopyalanmasi gerekir.
OpenLDAP ? FreeRADIUS
} slapd.conf dosyasina asagidaki girdinin girilmesi gerekir.
include include / /usr usr/ /local local/ /etc etc/ /openldap openldap/ /schema schema/RADIUS /RADIUS- -
LDAPv3. LDAPv3.schema schema
freeradiusbase.ldif
dn dn: : ou ou= =radius radius, ,dc dc= =marmara marmara, ,dc dc=edu, =edu,dc dc=tr =tr
objectclass objectclass: : organizationalunit organizationalunit
ou ou: : radius radius
dn dn: : ou ou= =profiles profiles, ,ou ou= =radius radius, ,dc dc= =marmara marmara, ,dc dc=edu, =edu,dc dc=tr =tr
objectclass objectclass: : organizationalunit organizationalunit
ou ou: : profiles profiles
dn dn: : ou ou= =users users, ,ou ou= =radius radius, ,dc dc= =marmara marmara, ,dc dc=edu, =edu,dc dc=tr =tr
objectclass objectclass: : organizationalunit organizationalunit
ou ou: : users users
dn dn: : ou ou= =admins admins, ,ou ou= =radius radius, ,dc dc= =marmara marmara, ,dc dc=edu, =edu,dc dc=tr =tr
objectclass objectclass: : organizationalunit organizationalunit
ou ou: : admins admins
# #ldapadd ldapadd - -H H ldap ldap://127.0.0.1 ://127.0.0.1 - -x x - -D " D "cn cn= =root root, ,dc dc= =marmara marmara, ,dc dc=edu, =edu,dc dc=tr" =tr"
- -f f freeradiusbase freeradiusbase. .ldif ldif
freeradius.ldif
dn: uid=vlan_02,ou=profiles,ou=radius,dc=marmara,dc=edu,dc=tr
uid: vlan_02
radiusTunnelMediumType: IEEE-802
radiusTunnelType: VLAN
radiusTunnelPrivateGroupId: 2
objectClass: radiusprofile
dn: uid=hyuce,ou=users,ou=radius,dc=marmara,dc=edu,dc=tr
objectclass: radiusprofile
uid: hyuce
userPassword: hyuce
radiusGroupName: vlan_02
freeradius.ldif
dn dn: :cn cn= =freeradius freeradius, ,ou ou= =admins admins, ,ou ou= =radius radius, ,dc dc= =marm marm
ara ara, ,dc dc=edu, =edu,dc dc=tr =tr
objectclass objectclass: : person person
sn: sn: freeradius freeradius
cn cn: : freeradius freeradius
userPassword userPassword: : freeradius freeradius
dn dn: :cn cn= =replica replica, ,ou ou= =admins admins, ,ou ou= =radius radius, ,dc dc= =marmara marmara
, ,dc dc=edu, =edu,dc dc=tr =tr
objectclass objectclass: : person person
sn: sn: replica replica
cn cn: : replica replica
userPassword userPassword: : replica replica
# #ldapadd ldapadd - -H H ldap ldap://127.0.0.1 ://127.0.0.1 - -x x - -D " D "cn cn= =root root, ,dc dc= =marmara marmara, ,dc dc=edu, =edu,dc dc=tr" =tr"
- -f f freeradiusbase freeradiusbase. .ldif ldif
ldapsearch
} } # #ldapsearch ldapsearch - -x x - -b b
" "ou ou= =radius radius, ,dc dc= =marmara marmara, ,dc dc=edu, =edu,dc dc=tr" =tr"
"( "(uid uid= =hyuce hyuce)" )"
} } # # hyuce hyuce, , users users, , radius radius, , marmara marmara.edu.tr .edu.tr
} } dn dn: :uid uid= =hyuce hyuce, ,ou ou= =users users, ,ou ou= =radius radius, ,dc dc= =marmara marmara
, ,dc dc=edu, =edu,dc dc=tr =tr
} } objectClass objectClass: : radiusprofile radiusprofile
} } uid uid: : hyuce hyuce
} } radiusGroupName radiusGroupName: : vlan vlan_02 _02
} } userPassword userPassword:: aHl1Y2U= :: aHl1Y2U=
FreeRADIUS
} Radius sunucu iin kullanacagimiz yapilandirma
dosyalari radiusd.conf , eap.conf, users ,
clients.conf ve raddb/certs dizindeki ca.cnf ,
client.cnf , server.cnf dosyalaridir.
} raddb/certs dinindeki sertifika bilgilerin istege gre
dzenlenebilir. Bu yapilandirma dosyalarinda ki
input_password ve output_password girdileri
daha sonra kullanilacagindan degistirilmesi uygun
olacaktir. Bu degisikliklerden sonra sertifika
olusturmak iin make komutunu kullanarak
sertifikalarin olusturulmasi saglanir.
radiusd.conf
. Kirpildi
modules modules { {
$INCLUDE $INCLUDE eap eap. .conf conf
# # Lightweight Lightweight Directory Directory Access Access Protocol Protocol (LDAP) (LDAP)
# #
ldap ldap { {
server = "127.0.0.1" server = "127.0.0.1"
# #identity identity = =
" "cn cn= =freeradius freeradius, ,ou ou= =admins admins, ,ou ou= =radius radius, ,dc dc= =marmara marmara, ,dc dc=edu, =edu,dc dc=tr" =tr"
# # password password = = freeradius freeradius
basedn basedn = " = "ou ou= =radius radius, ,dc dc= =marmara marmara, ,dc dc=edu, =edu,dc dc=tr" =tr"
filter filter = "( = "(uid uid=%{ =%{Stripped Stripped- -User User- -Name: Name:- -%{ %{User User- -
Name}})" Name}})"
# # base base_ _filter filter = "( = "(objectclass objectclass= =radiusprofile radiusprofile)" )"
tls tls { {
start_ start_tls tls = no = no
} }
dictionary dictionary_ _mapping mapping = ${ = ${confdir confdir}/ }/ldap ldap. .attrmap attrmap
password password_ _attribute attribute = = userPassword userPassword
} }
. Kirpildi
authorize authorize { {
eap eap
suffix suffix
ldap ldap
} }
authenticate authenticate { {
eap eap
} }
users
DEFAULT DEFAULT Auth Auth- -Type Type := LDAP := LDAP
Fall Fall- -Through Through = 1 = 1
eap.conf
eap eap { {
default default_ _eap eap_ _type type = = ttls ttls
timer timer_ _expire expire = 60 = 60
ignore ignore_ _unknown unknown_ _eap eap_ _types types = no = no
cisco cisco_ _accounting accounting_ _username username_ _bug bug = no = no
## EAP ## EAP- -TLS TLS
tls tls { {
certdir certdir = ${ = ${confdir confdir}/ }/certs certs
cadir cadir = ${ = ${confdir confdir}/ }/certs certs
private private_ _key key_ _password password = = marmara marmara
private private_ _key key_file = ${ _file = ${certdir certdir}/server. }/server.pem pem
certificate certificate_file = ${ _file = ${certdir certdir}/server. }/server.pem pem
CA_file = ${ CA_file = ${cadir cadir}/ }/ca ca. .pem pem
dh dh_file = ${ _file = ${certdir certdir}/ }/dh dh
random random_file = ${ _file = ${certdir certdir}/ }/random random
make make_ _cert cert_ _command command = "${ = "${certdir certdir}/ }/bootstrap bootstrap" "
} }
ttls ttls { {
default default_ _eap eap_ _type type = md5 = md5
copy copy_ _request request_ _to to_ _tunnel tunnel = no = no
use use_ _tunneled tunneled_ _reply reply = = yes yes
} }
} }
clients.conf
client client localhost localhost { {
ipaddr ipaddr = 127.0.0.1 = 127.0.0.1
secret secret = testing123 = testing123
shortname shortname = = localhost localhost
require require_ _message message_ _authenticator authenticator = no = no
nastype nastype = = other other
} }
Test
# # radtest radtest hyuce hyuce " "hyuce hyuce" " localhost localhost 1 testing123 1 testing123
Sending Sending Access Access- -Request Request of id 241 of id 241 to to 127.0.0.1 port 1812 127.0.0.1 port 1812
User User- -Name = " Name = "hyuce hyuce" "
User User- -Password Password = " = "hyuce hyuce" "
NAS NAS- -IP IP- -Address Address = 192.168.1.10 = 192.168.1.10
NAS NAS- -Port = 1 Port = 1
rad rad_ _recv recv: Access : Access- -Accept Accept packet packet from from host host 127.0.0.1 port 1812, 127.0.0.1 port 1812,
id=241, id=241, length length=20 =20
# #radtest radtest hyuce hyuce " "hyucex hyucex" " localhost localhost 1 testing123 1 testing123
Sending Sending Access Access- -Request Request of id 217 of id 217 to to 127.0.0.1 port 1812 127.0.0.1 port 1812
User User- -Name = " Name = "hyuce hyuce" "
User User- -Password Password = " = "hyucex hyucex" "
NAS NAS- -IP IP- -Address Address = 192.168.1.10 = 192.168.1.10
NAS NAS- -Port = 1 Port = 1
rad rad_ _recv recv: Access : Access- -Reject Reject packet packet from from host host 127.0.0.1 port 1812, 127.0.0.1 port 1812,
id=217, id=217, length length=20 =20
rnek AgCihazi Tanimlari
} Cisco 2950 Ethernet Anahtari
} aaa new-model
} aaa authentication login default group line
} aaa authentication dot1x default group radius
} aaa accounting system default start-stop group radius
} dot1x system-auth-control
} radius-server host 192.168.1.103 auth-port 1812 acct-port
1813 key 1234
} interface FastEthernet0/1
} switchport mode access
} dot1x port-control auto
rnek AgCihazi Tanimlari
} Cisco Aironet Kablosuz Erisim Cihazi - 1
rnek AgCihazi Tanimlari
} Cisco Aironet Kablosuz Erisim Cihazi - 2
rnek AgCihazi Tanimlari
} Cisco Aironet Kablosuz Erisim Cihazi - 3
} TESEKKRLER

You might also like