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/