18 Ağustos 2014

FreeRADIUS Konfigürasyon Adımları ve MySQL Entegrasyonu

Bu yazımızda FreeRADIUS üzerine MySQL veritabanı kullanarak kullanıcı tanımlama adımlarından bahsedeceğiz.

RADIUS  (Remote Authentication Dial-in User Service) Livinstone Enterprise tarafından geliştirilmiş bir protokoldür. RADIUS istemci-sunucu modeli tabanlıdır ve mesaj değişimi UDP protokolü ile gerçekleşir.FreeRADIUS dünyada en çok tercih edilen açık kaynak kodlu RADIUS serverdır.Dünya üzerindeki birçok ISP firması RADIUS server olarak FreeRADIUS kullanmaktadır.


Gerekli paketlerin kurulması

FreeRADIUS kurulumu için Unix/Linux tabanlı bir işletim sistemi kullanacağız.FreeRADIUS Windows tabanlı işletim sistemlerinde çalışmamaktadır.Şimdi gerekli paketleri indirelim daha sonra ise konfigürasyonlarımızı tamamlayalım.

Eğer Ubuntu tabanlı bir işletim sistemi kullanıyorsanız aşağıdaki şekilde gerekli paketleri indirip kurabilirsiniz

apt-get install freeradius

apt-get install freeradius-mysql

apt-get install freeradius-utils

apt-get install mysql-server

apt-get install php5

apt-get install php5-mysql

Paketler indirildikten sonra kendileri otomatik olarak kurulacaklardır.Fakat mysql-server kurulumu sırasında sizden mysql root kullanıcısı şifresi girmeniz istenecektir.Her iki sistemde uygulama adımları aynıdır sadece konfigürasyon dosyalarının bulunduğu dizinler farklılık göstermektedir.Eğer Paketler hakkında detaylı bilgi edinmek isterseniz https://debian.packages.org  sitesine göz atabilirsiniz.

Sistem üzerinde güvenlik duvarınız aktif durumda ise her ihtimale karşı portlara izin vermeniz uygun olacaktır.Port izinleri için aşağıdaki komutlar kullanılabilir;

ufw allow 1812/udp
ufw allow 1813/udp

Portların aktif olduğunu kontrol etmek için şu komutu kullanabilirsiniz;

netstat –pnl  | grep 181 




Radius Test İşlemleri

Radius üzerindeki testlerimizi gerçekleştirirken radtest komutundan yararlanacağız.Radius kurulumu ile sisteme otomatik olarak tanımlanacaktır.Ayrıca radius konfigürasyonları değiştirilirdikten sonra,radius server debug modda çalıştırılmalıdır.Şimdi debug mod ve radtest ile ilgili küçük bir örnek yapalım;




Yukarıdaki örnekte localhost üzerine kullanıcı adı  ve şifre ile bir test paketi gönderiliyor.Kullanıcı radius üzerinde tanımlı olmadığı için Access-Reject Hatası alıyor.Şimdi aynı işlemi debug mod üzerinde takip edelim.

Debug mod aktif edilebilmesi için öncelikle freeradius processi durdurulur.

service freeradius stop veya /etc/init.d/freeradius stop komutları kullanılabilir.Daha sonra freeradius –X komutu kullanılarak debug mod aktif hale getirilir.

freeradius –X komutu girildiğinde karşınıza radius konfigürasyonları ile ilgili bir döküm gelecektir.Bu ekrandaki görüntü  “Read to process requests” ise konfigürasyonlarınızda herhangi bir problem yok demektir.




Şimdi radtest ile bir paket gönderelim 





Debug mod aktif olduğu için bize hata durumunu veya gerçekleşen işlemi yukarıdaki ekranda olduğu gibi ayrıntılı bir biçimde listeleyecektir.Her yaptığınız konfigürasyon değişikliğinde debug mod üzerinde test etmeyi unutmayınız.

Şimdi sisteme bir kullanıcı ekleyerek test işlemini gerçekleştirmeye çalışalım.Radius içerisinde kullanıcı ekleme işlemi /etc/freeradius/users dizini altında gerçekleştirilmektedir.Ayrıca freeradius ile ilgili tüm konfigürasyon dosyalarına bu dizin altından erişebilirsiniz.

Kullanıcı eklemek için bu konfigürasyon dosyasını bir text editör ile açalım;
vim /etc/freeradius/users

Açılan ekranda en üste aşağıdaki satırları ekleyelim ve kaydedelim.

user Cleartext-Password := ”12345”




Bu işlemden sonra radius servisini restart edelim.

service freeradius restart

Şimdi aynı kullanıcı ile radtest komutunu kullanarak localhosta paketimizi gönderelim.

Görüldüğü gibi gönderdiğimiz paket radius tarafından kabul edildi ve erişim sağlandı.Eğer sizde aşağıdaki ekranı görüyorsanız buraya kadar olan konfigürasyon sorunsuz tamamlanmış demektir.



Mysql ile Radius Bağlantı Sağlanması

Bu bölümde radius servisimiz ile MySql veritabanını entegre ederek kullanıcıları buradan ekleyeceğiz.

Öncelikle mysql ‘e bağlanıp kullanıcı ve NAS kimlik doğrulaması için gerekli olan veritabanı tablolarını oluşturalım



Ben radius isimli bir database oluşturdum.Siz kendi konfigürasyonunuza uygun bir isim seçebilirsiniz.Database içerisindeki tabloloları oluşturmak için freeradius ile birlikte gelen schema.sql ve nas.sql datalarını radius içerisine import edeceğiz.Bu işlem için aşağıdaki komutlar kullanılabilir;

mysql –u root –p radius < /etc/freeradius/sql/mysql/schema.sql

mysql –u root –p radius < /etc/freeradius/sql/mysql/nas.sql

-p parametresinden sonra girilen değer parola değil database adıdır. Her iki komut girildiğinde sizden mysql kullanıcı parolanızı isteyecektir.Ben tablolarda herhangi bir değişiklik yapmadım.Fakat siz farklı bir alan eklemek veya çıkartmak isterseniz sql uzantılı dosyaları herhangi bir text editör ile açıp değiştirebilirsiniz.

Sonraki adım olarak /etc/freeradius/radiusd.conf dosyası altında  $INCLUDE sql.conf ve $INCLUDE sql/mysql/counter.conf  satırını aktif ediyoruz.radiusd.conf dosyası tüm konfigürasyon dosyalarının referansını içermektedir.



/etc/freeradius/sites-available/default dosyası herhangi bir text editör ile açılarak;

Authorize,session,post-auth ve accounting bölümlerde bulunan sql satırları aktif hale getirilir. Authorize bölümündeki sql satırı aktif hale getirilirken files satırı pasif duruma getirilmelidir. Böylece authorize işlemi dosyadan değil sql üzerinden sağlanacak.


Sql üzerindeki bilgilere erişilmesi için gerekli ayarlar için /etc/freeradius/sql.conf dosyasını text editör yardımı ile açıp satırları düzenleyelim

sql bölümündeki login ve password alanlarını tanımladığınız kullanıcı bilgileri ile değiştirelim.



Ayrıca readclients=yes satırını aktif hale getirelim




Son olarak /etc/freeradius/sites-available/inner-tunnel dosyasını açıyoruz ve buradaki authorize bölümündeki sql satırını aktif hale getiriyoruz.



MySQL Veritabanına Kullanıcı Ekleme ve Test İşlemleri

Bu bölümde kullanıcı ekleme kısmının daha anlaşılır olması açısından phpmyadmin programını kullanacağım.Aşağıdaki komut ile programı yükleyebilirsiniz.

apt-get install phpmyadmin

Paketler kurulduktan sonra herhangi bir browser yardımı ile phpmyadmine erişebilirsiniz.Kurulum esnasında sizden Web Server yapılandırması ve myadmin için parola girmenizi isteyecektir.Web server olarak apache seçiyoruz.Belirlediğiniz herhangi bir parola girebilirsiniz.Kullanıcı adı default olarak root gelecektir.


Login olduktan sonra sol tarafta mevcut veritabanlarını görebilirsiniz.Burada bizim oluşturduğumuz radius veritabanıda mevcut.Üzerine tıkladığınızda daha önceden schema.sql ve nas.sql üzerinden import ettiğimiz tablolar görülecektir.Bu tablolar içerisinde radcheck tablo üzerine tıklayalım ve bir kullanıcı girelim




Aşağıdaki SQL cümlesi ile kolayca bir kullanıcı oluşturabilirsiniz.SQL cümlesine dikkatli incelerseniz aslında users dosyasına eklediğimiz alanların aynısını eklemekteyiz.


INSERT INTO `radcheck` (`username`, `attribute`, `op`, `value`) VALUES ('testuser', 'Cleartext-Password', ':=', 'test123');




Gerekli alanları girdikten sonra sağ altta bulunan Git butonuna tıklıyoruz ve kullanıcımız eklemiş oluyor.

Şimdi en son işlem olarak eklediğimiz kullanıcı ile testimizi gerçekleştirelim.Aşağıdaki ekranda görüldüğü gibi eklediğim kullanıcı ile gönderdiğim paketler radius server tarafından kabul edildi.








http://konfigmaster.de/
http://networkradius.com/