22 Temmuz 2012 Pazar

Radius Server kurmak


Merhabalar

Bugün sizlerle Grafik arayüzlü Radius server kurulumu yapacağız.

Yaptığım herşeyi yazma özen göstereceğim.
1.      İşletim sistemi kurulumu.
2.      Radius server olarak freeradius kurulumu.
3.      Freeradius testleri
4.      Daloradius kurulumu(Sql bilgileri kolay bi şekilde girmek için grafik arayüzlü daloradius kuracağız)
5.      Freeradius a sql database i kullanır hale getireceğiz.
6.      Freeradius un sql okuma testeri
7.      Daloradius da logları bakmak


1.        İşletim sistemi kurulumu.

İşletim sistemi tercihi olarak ben ubuntu server kullandım. Centos ile de testlerimi yaptım. Genel hatlarıyla değişen bişey yok.

OS. İndirip sanal makinaya kurdum.
kurulum sırasında  aşağıdakileri aktif ettim.
ssh serveri
Basic server
Lamp serveri

Root kullanıcı karşıma çıkmadı benden yeni kullanıcı istedi
New username: enesmozturk
New User password:123456

Makalemde kullandığım tüm şifreler 123456 olacak
Eğer kurulum sırasında ssh,Lamp,basic unuttuysak
Sudo su
Tasksel
Bu komut bize kurulum ayarlarına götürüyor.
Burdan basic server,ssh server,Lamp server kurulum sırasında seçmediysek seçelim.
ilk olarak LAMP nedir diyorsanız LAMP Linux, Apache, Mysql, Php (Perl,Python) 'nin başharflerinden oluşan bir kısaltmadır.

Kurulum tamamlanınca güncellemek için aşağıdaki 2 komutu verdim.
apt-get update
apt-get upgrade

sonra kapatım snapshotını aldım yedek olsun diye…

2. Radius server olarak freeradius kurulumu.



Açıldıktan sonra
sudo su
şifrenizi girin
Bu komutu vererek root  yetkisini aldım.
Şimdi database olarak mysql kuralım…

apt-get install mysql-server

sizden mysql root şifresi isteyecek
Not: (Lamp kurduysanız hiç bir şey yapmayacak)

apt-get install php5-gd php-pear php-db
apt-get install freeradius freeradius-mysql
apt-get install phpmyadmin
Son verdiğimiz komut ile phpmyadmin hangi webservis ile ilişkendireyim diye soruyor bizde apache2 diyoruz.





3. Freeradius testleri

 
dpkg -l | grep radius
Bu komut ile sistemimizdeki Radius un versiyonu görebiliriz.


Evet Freeradius kuruldu. Test yapalım biraz.
/etc/init.d/freeradius status
/etc/init.d/freeradius stop
netstat -pnl | grep 1812
boş olması lazım.
/etc/init.d/freeradius start
netstat -pnl | grep 1812

udp        0      0 127.0.0.1:18120         0.0.0.0:*                           918/freeradius 
udp        0      0 0.0.0.0:1812            0.0.0.0:*                           918/freeradius 

Yazılarını görüyorsak Radius servisimiz hazır demektir.
radtest komutu ile test yapalım
radtest kullanıcı_adı sifre Radius_server Nas_port güvenlik_sifresi
Kurulumla birlikte test için localhostun güvenlik şifresi testing123 dür.
radtest user password localhost 0 testing123
Sending Access-Request of id 197 to 127.0.0.1 port 1812
        User-Name = "user"
        User-Password = "password"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 0
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=197, length=20

Yazısı karsımıza çıkacaktır. Basit yoldan kullanıcı tanımlıyalım.
vi /etc/freeradius/users
user Cleartext-Password := "password"

en tepeye yazalım bunu.kaydedelim.
/etc/init.d/freeradius restart
radtest user password localhost 0 testing123
ending Access-Request of id 90 to 127.0.0.1 port 1812
        User-Name = "user"
        User-Password = "password"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=90, length=20
Yazacaktır. Bu şifreyi sonra silmeyi unutmayın yoksa güvenlik açığıı olacaktır.
vi /etc/freeradius/clients.conf

client 192.168.0.0/16 {
       secret          = 123456
       shortname       = deneme
}
En tepeye bunu yazasak  192.168.0.0/16 networkundeki tüm NAS (Network-attached storage) 123456 şifresi ile bağlanabilirler.
Bir cihaz bağlayıp gerçek testini yapabilrsiniz.

İlerde sql ile kullanıcı tanımı  yapacağız.

4. Daloradius kurulumu


ihtiyacımız olan tüm servisler kurulmuş oldu. Şimdi daloradius u indirelim .En güncel olanı bulup indiriyoruz. Şuanda en güncel 0,9-9 var.
wget http://garr.dl.sourceforge.net/project/daloradius/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz
dosya indirildi.Sıkıştırılmış dosyayı açalım
tar -zxvf daloradius-0.9-9.tar.gz
mv daloradius-0.9-9 daloradius
dosya ismini düzelttik. Webservis hizmeti vermesi için gerekli yere taşıyalım.
cp daloradius/ /var/www -R
Komut sonundaki -R kopya yapıştırda bozulabiliyor.
chown www-data:www-data /var/www/daloradius -R
Webservis hizmeti için okuma yazma yetkilerini ayarlıyalım.
chmod 644 /var/www/daloradius/library/daloradius.conf.php
chown www-data:www-data /var/log/freeradius -R
chown www-data:www-data /var/log/syslog -R
chown www-data:www-data /var/log/dmesg -R
touch /tmp/daloradius.log

cd /var/www/daloradius/contrib/db/
database ayarlamaya başlıyalım
mysql -u root -p
mysql root şifremiz

mysql> CREATE DATABASE radius;
Query OK, 1 row affected (0.00 sec)

mysql> exit
Bye

mysql -u root -p radius < fr2-mysql-daloradius-and-freeradius.sql
mysql root şifremiz

cd /var/www/daloradius/library/
vi  daloradius.conf.php
Bu komut ile yazı editörü açılır. Aşağıdaki tablo gibi yapmamız lazım. Ben sadece mysql root şifresini girdim.123456.
Vi kullanmayı bilmeyenler için küçük bir hatırlatma ilk açılışta okuma modundadır. Ok (yön ) tuşları ile istediğimiz yere gideriz. İ harfine bastığımızda yazma moduna geçeriz istediğimiz yazıp esc ile tekrar okuma moduna geçeriz.
Kaydetmek için :wr
Çıkmak içim :q!
 
FreeRADIUS 2.X
  • If you are working with FreeRADIUS 2.X (Ubuntu 10.04) then:
 $configValues['FREERADIUS_VERSION'] = '2';
 $configValues['CONFIG_DB_PASS'] = 'password';
 $configValues['CONFIG_DB_TBL_RADUSERGROUP'] = 'radusergroup';


Kurulum bitti;
Browser a IP adresimizi yazalım.
http://your ip address/
It works!  Yazısını göreceğiz yani webserver çalışıyor.
Şimdi Browser a http://your ip address/daloradius yazalım.
 
username: administrator
password: radius

Notice: Güvenlik için ilerde default şifremizi değiştirmeyi unutmayalım.



5. Freeradius a sql database i kullanır hale getireceğiz


Şimdi Freeradius umuzu database  okumasını sağlamayız.

cd /etc/freeradius/
vi  sql.conf

# Connection info:
        server = "localhost"
        #port = 3306
        login = "root"
        password = "123456"
freeradius database oku şifresini vermiş oluyoruz.

vi /etc/freeradius/radiusd.conf

girdiğimizde sonlara
#     $INCLUDE sql.conf
Başındaki # kaldırıyoruz.
$INCLUDE sql.conf


vi /etc/freeradius/sites-available/default

    authorize {
    …
    sql
    …
    }

    accounting {
    …
    sql
    …
    }

    session {
    …
    sql
    …
    }

    post-auth {
    …
    sql
    …
    }

Yukarıda saydığım #sql  Başındaki # kaldırıyoruz. Zaten yukarıda saydığımdan başa #sql yok 4 tane olacak…

Freeradiusa database okuması için gerekli ayarları yaptık şimdi yeniden başlatalım ve database kullanıcı girelim girelim.
 /etc/init.d/freeradius restart
* Stopping FreeRADIUS daemon freeradius
   ...done.
 * Starting FreeRADIUS daemon freeradius
   ...done.

6.        Freeradius un sql okuma testeri

Browser a IP adresimizi yazalım.
http://your ip address/phpmyadmin
Karşımıza resimdeki gibi ekran açılır.
 

Mysql root ve şifresini yazalım.
 
Phpmyadmin hakkında küçük bilgi vereyim. Sistemimizdeki mysql kontrol etmemize olanak sağlayağan küçük ama bi okadar da kullanışlı php temelli databasecilerin kullandığı bir tool.
 
Veritabanları içinde radiusu seçip radcheck tablosuna veri oluşturalım
 
 
 




INSERT INTO `radius`.`radcheck` (`id`, `username`, `attribute`, `op`, `value`) VALUES (NULL, 'deneme', 'Cleartext-Password', ':=', 'deneme');

Yaptığımızda kolay bir şekilde database kullanıcı tanımladık.
/etc/init.d/freeradius restart

radtest deneme deneme localhost 0 testing123
Sending Access-Request of id 166 to 127.0.0.1 port 1812
        User-Name = "deneme"
        User-Password = "deneme"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=166, length=20

Gördüğünüz gibi kullanıcımızı tanımış J))

İsterseniz şimdi bunu Daloradius dan kullancı tanımlıyalım.
 
 

Görüldüğü gibi daloradius da tanımladığımız kullanıcı phpmyadmin degözüküyor.

Not:radtest komutu sadece cleartext-Password şekilde kullanıcıları tanıyabilir
 

7.  WPA / WPA2  wireless ağlarından Windows 7 üzerinden  bağlantı sağlama.

Gerçeği söylemek gerekirse en çok zorlandığım bu bölüm oldu. Çünkü bu bölümü tam olarak anlatan olmamış herkes parça parça anlatmış.

Sertifikaların Hazırlanması

Openssl servisi kurulu olması gerekiyor. Benim sistemimde kurulu geldi :))

Freeradius un kurulumla beraber gelen sertifikalarına bakalım ve onları silelim.
cd /etc/freeradius/certs
ls
ca.pem  dh  server.key  server.pem
rm –R *
find / -name "ca.cnf"
/usr/share/doc/freeradius/examples/certs/ca.cnf

cd /usr/share/doc/freeradius/examples/certs/
ls
bootstrap  ca.cnf  client.cnf  Makefile  README  server.cnf  xpextensions

Sildiğimiz sertifikalar yerine yenisi oluşturacağız. Eğer daha önceden oluşturulmuş sertifikalar varsa onlarıda kullanabiliriz.
Burda ca.cnf , client.cnf ve server.cnf dosyalarının içini bize uygun şekilde düzenleyebiliriz. İstersek düzenlemeden devam edebiliriz.
Örnek verecek olursak…
Ca.cnf dosyasının bizi ilgilendiren kısmı

[ req ]
prompt                  = no
distinguished_name      = certificate_authority
default_bits            = 2048
input_password          = whatever
output_password         = whatever
x509_extensions         = v3_ca

[certificate_authority]
countryName             = FR
stateOrProvinceName     = Radius
localityName            = Somewhere
organizationName        = Example Inc.
emailAddress            = admin@example.com
commonName              = "Example Certificate Authority"


Ben kendimce değiştirdim.
[ req ]
prompt                                               = no
distinguished_name      = certificate_authority
default_bits                       = 2048
input_password                              = sifrem
output_password                            = sifrem
x509_extensions                             = v3_ca

[certificate_authority]
countryName                   = TR
stateOrProvinceName  = Radius
localityName                    = Ankara
organizationName          = Enes AS.
emailAddress                   = enesmozturk@gmail.com
commonName                  = "Example Certificate Authority"




Sertifika bilgilerini verdikden sonra sertifikamızı oluşturalım.

./bootstrap
Using configuration from ./client.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 2 (0x2)
        Validity
            Not Before: Jul 24 14:23:18 2012 GMT
            Not After : Jul 24 14:23:18 2013 GMT
        Subject:
            countryName               = TR
            stateOrProvinceName       = Radius
            organizationName          = Enes AS.
            commonName                = user@example.com
            emailAddress              = enesmozturk@gmail.com
        X509v3 extensions:
            X509v3 Extended Key Usage:
                TLS Web Client Authentication
Certificate is to be certified until Jul 24 14:23:18 2013 GMT (365 days)

Write out database with 1 new entries
Data Base Updated

cp -R * /etc/freeradius/certs/

cd /etc/freeradius/certs/
ls
01.pem     ca.der      client.crt  index.txt           Makefile  serial.old  server.key
02.pem     ca.key      client.csr  index.txt.attr      random    server.cnf  server.p12
bootstrap  ca.pem      client.key  index.txt.attr.old  README    server.crt  server.pem
ca.cnf     client.cnf  dh          index.txt.old       serial    server.csr  xpextensions

Not:burdaki ca.der almamız lazım.Bu dosyayı Wireless bağlantısı yapacak Windows makineler kuracağız.

Kullanılacak Protokol un belirlenmesi


Windows makinelerin ağa bağlanması için peap protokolunu tercih ettim.

Cd /etc/freeradius
Vi eap.conf


default_eap_type = md5   --à  default_eap_type = peap

tls {
                                               #
                                               #  These is used to simplify later configurations.
                                               #
                                               certdir = ${confdir}/certs
                                               cadir = ${confdir}/certs

                                               private_key_password = whatever
                                               private_key_file = ${certdir}/server.key

“whatever” yazan yeri “sifrem” ile değiştiriyoruz.

Cd ..

vi sites-available/inner-tunnel

# sql
 Yazan 3 yerdeki # işaretini kaldırıyoruz.





/etc/init.d/freeradius start


Database kullanıcı ve client tanımlaması

Daloradius üzerinden kullanıcı tanımlıyoruz. Test amaçlı Users  dosyasına tanımladığım ilaveleri sildim.

Kullanıcıları cleartext-Password olarak tanımlıyoruz

Aşağıdaki tabloda Protocol and Password Compatibility bilgisi verilmiş. Aklımızda bulunsun.

 

Daloradius üzerinden Nas tanımlıyoruz. Test amaçlı Client.conf  dosyasına tanımladığım ilaveleri sildim.

 Ca.der ile wifi bağlantısı yapacak Windows makineye kuruyoruz.
Ve sonuç başarılı.

Ben hemen andorid telefonum ile de  denediğimde sertifikasız bağlandım.



4 yorum:

  1. Gayet güzel bir anlatım olmuş. Elinize sağlık.
    win7 den bağlantı kısmının anlatımı biraz daha genişletilebilir mi? Ayrıca AP bağlantı denediniz mi?

    YanıtlaSil
  2. Merhabalar, güzel olmuş lakin hiç bir şey yapamadım size zahmet olmazsa hazır yapılmış bir image atar mısınız? Ne kadar çok dua ederim size. Bu durumda kurulu bir sistemi nette bilgisayar ve firewalle beraber 12.000 tlye satıyorlar toplamda cihazları ayrı ayrı alsak 1500 lira yardımcı olursanız size müteşekkir olurum. Başarılar.

    YanıtlaSil
  3. Daha ben 64bitubuntu yükleyemedim :P bu nasıl iştir :))

    YanıtlaSil