CentOS üzerinde Freeradius ve Ghost Kurulumu

Belirli nedenlerden dolayı Radius sunucunuzu bir başka sunucuda tutmak isteyebilir ve/veya pfSense yerine başka bir firewall tercih etmişsinizdir. Örneğin;Mikrotik ve Ghost’u veya sıfırdan yazdığınız bir ürünü Mikrotik’e göre Attribute değerlerini güncelleyerek daha gelişmiş bir Radius Manager yazmışsınızdır.Mikrotik veya Donanımsal Firewall’lar üzerinde Radius server bulunmuyorsa ve üzerinede kurulum yapmanıza izin vermiyor,desteklemiyorsa Radius sunucuzunuzu dışarıdaki bir sunucu’da tutmanız gerekebilir.Bu durum da benim gibi kaynak olarak bakmak için bu makaleyi takip edebilirsiniz.

Neyse lafı daha fazla uzatmadan.Şöyle yapacaklarımıza maddeler halinde sıralayalım.

  • Apache Kurulumu (Ghost’un çalışması için)
  • MySQL Kurulumu (Freeradius ve Ghost Veritabanı için)
  • Freeradius Kurulumu
  • pfSense – Remote radius authentication

Bütün kurulumlar tamamlandıktan sonra pfSense ile radius sunucumuzu haberleştireceğiz.Şuan elimde CentOS 6 olduğundan dolayı Freeradius2 yerine freeradius kurulumu yapacağım. Malesef freeradius2’nin centos reporlarında rpmleri yok .

Kuruluma geçmeden önce network şemamızı paylaşmakta fayda var. Aşağıda şekilde bir grafik hazırladım umarım yeterince açıklayıcı olur.
Çizim1
Yukarıdaki diyagram’da CentOS’u direk router’dan besledim.Bu sunucu’nun illa pfSense arkasında olmasına gerek yok.Satın aldığınız bir VPS Sunucu veya Dedicated varsa orayada kurulum yaparak bütün bölgelerinizde kurduğunuz radius sunucunuzu kullanabilirsiniz.Olayı anlayabilmeniz için böyle bir yapı tercih ettim.

Freeradius ve MySQL kurulumunu başlatıyoruz.

yum install freeradius freeradius-mysql freeradius-utils mysql-server -y

Bu adımları başarıyla geçmişseniz aşağıdaki komutumuzla MySQL Server’i çalışır hale getirelim.

service mysqld start

MySQL Root kullanıcısı için bir şifre belirlemek için aşağıdaki komutu koşturuyoruz.Önünüze gelen ekranda şifrenizi belirleyip Enter’a basiniz. (Şifreyi aklınızda tutun birazdan lazim olacak : ) )

/usr/bin/mysql_secure_installation

Tebrikler, Freeradius ve MySQL kurulumunu başarıyla tamamlandınız. Şimdi Apache ve Php kurulumunu yapalım.

yum install httpd php php-mysql -y

Radius,MySQL ve Apache’nin başlangıçta çalışabilmesi için aşağıdaki komutları koşturun.

chkconfig httpd on
chkconfig mysqld on
chkconfig radiusd on

Başlangıçta çalışmasını sağladıktan sonra bir kontrol edelim.Aşağıdaki komutu koşturun.

 chkconfig --list | egrep -w 'httpd|mysqld|radiusd'

Çıktı :

httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
radiusd         0:off   1:off   2:on    3:on    4:on    5:on    6:off

Yukarıdaki servislerimiz 2,3,4 ve 5 run levellerde çalışacağını görmüş olduk.Devam edelim.

Şuan sistemimize Apache,Radius,MySQL ve apache için php eklentilerinin kurulumlarını tamamladık. Apache yani web server’a dışarıdan erişemeyebiliriz.CentOS üzerindeki iptables’i kapatmak veya 80 portunu açmanız gerekebilir.

Eğer hiç uğraşmayalım kapatalım derseniz aşağıdaki komutu koşturunuz.

service iptables stop
service iptables save

veya yok abi ben Güvenlikçiyim!Çok pis security yaparım diyorsan aşağıdaki şekilde iptables’te port açabilirsin.(Aynı şekilde 1812 ve 1813 radius authentication ve accounting portlarınıda açmanız gerekir.)

iptables -A INPUT -p TCP --dport 80 -j ACCEPT
service iptables save
service iptables restart

Yeah!

Radius’un ayarlarını yapılandırmadan önce Ghost dosyalarını Web serverimizin Public dizinine indirelim.

wget -c http://sametyilmaz.com.tr/ghost.tar -P /var/www/html

İndirdiğimiz ghost.tar isimli dosyayı ayıklayalım. : )

tar -xvf /var/www/html/ghost.tar

Freeradius ve Ghost için mysql server üzerinde bir veritabanı ve kullanıcı oluşturalım.Bunun için bildiğiniz gibi MySQL komut satırına düşmemize gerekir.(mysql -u root -p) Unutmayın şifreyi demiştim aşağıdaki komutu koşturduktan sonra istyecek : )

mysql -u root -p
CREATE DATABASE radius;
GRANT ALL PRIVILEGES ON radius.* TO radius@localhost IDENTIFIED BY "radpass";
flush privileges;
exit

Veritabanımızı yukarıdaki oluşturduğumuz radius veritabanımıza import edelim. Yukarıda radius kullanıcısının şifresi “radpass” olarak belirlenmiştir.

mysql -u root -pradpass radius < /var/www/html/ghost.sql

Veritabanını import ettikten sonra ghost'un çalışıp çalışmadığını test etmek için aşağıdaki URL takip edilebilir.

http://192.168.1.16/index.php

Varsayılan Kullanıcı ve Şifresi : admin - ghost olarak giriş yapabiliyorsanız buraya kadar adımları başarıyla tamamlamışsınızdır.

Şimdi Freeradius'u ayarlarına göz atalım.

Öncelikle SQL ayarlarımızı yapılandırmak için sql.conf dosyamıza yukarıda oluşturduğumuz veritabanı bilgilerini girmemiz gerekiyor (Biz default kurulum yaptığımız için bir değişiklik söz konusu değil onun için bir değişiklik yapmayacağım. (Makeleyi a-z'ye copy paste ile giden arkadaşlara bilgi amaçlı : ) )) Linux vi editorünü kullanacağım siz dilerseniz nano vs kullanabilirsiniz.

vi /etc/raddb/sql.conf 

Komutu koşturduğunuzda aşağıdaki şekilde bir dosya açılacak.

  # Connection info:
        server = "localhost"
        #port = 3306
        login = "radius"
        password = "radpass"

        # Donnection info:
        server = "localhost"
        #port = 3306
        login = "radius"
        password = "radpass"

        radius_db = "radius"

Biz veritabanı bilgilerini makalede yukarıdaki şekilde yaptığımız için aynen bırakıyoruz.Siz değişiklik yaptıysanız değişiklikleri yapın.

Veritabanı bilgilerinizi girdikten sonra aynı dosya içersinde 100. satırda " readclients = yes " olarak belirtin ve başındaki # işaretini kaldırıp.Dosyayı kaydedin ve çıkın.

radiusd.conf dosyasında sql dosyamızı INCLUDE eden satır yorum satırı olarak geçilmiş.Malüm herkes freeradiusu illa mysql ile entegrasyon edip kullanacak değil ya.Biz bu satırın çalışması için # işaretini kaldırmamız gerekiyor onun için aşağıdaki dosyayı düzenleyin.

vi /etc/raddb/radiusd.conf

700. Satırda " # $INCLUDE sql.conf " en baştaki # işaretini kaldırın ve değişiklikleri kaydedip çıkın.

Kullanıcılarımız giriş yaparken ve logların mysql'de tutulması için aşağıdaki dosyayı düzenlememiz ve # sql geçen auth ve accounting alanlarındaki # işaretlerini kaldırmamız gerekiyor.

vi /etc/raddb/sites-enabled/default

authorize bölümünde 177. satırdaki #sql başındaki # işaretini kaldırın.
accounting bölümünde 405. satırdaki #sql başındaki # işaretini kaldırın.

177.Satır (Örnektir.)

#
#  Look in an SQL database.  The schema of the database
#  is meant to mirror the "users" file.
#
#  See "Authorization Queries" in sql.conf
sql

405.Satır (Örnektir.)

#
#  After authenticating the user, do another SQL query.
#
#  See "Authentication Logging Queries" in sql.conf
sql

İlgili değişikleri yaptıktan sonra aşağıdaki komutla radius servisini restart edin.

service radiusd restart

Radius Sunucumuzun çalışıp çalışmadığını test etmek için Ghost üzerinde birtane kullanıcı oluşturun ve aşağıdaki komutla test edin. Ben kullanıcı adı "samet" olan şifresi "123456" olan bir kullanıcı oluşturdum.

radtest samet 31233123 localhost 1812 testing123

Eğer aşağıdaki hatayı alırsanız ;

radclient:: Failed to find IP address for linux.sametyilmaz.com.tr
radclient: Nothing to send.

Sunucunuz üzerinde "hostname" komutu koşturup host dosyasınıza kendinizi gösterecke bir host kaydı girmeniz gerekir.Benim hostname adresim "linux.sametyilmaz.com.tr" olarak geçiyordu hata aldığım için aşağıdaki şekilde bir kayıt girerek testimi yaptım.

/etc/hosts içeri ;

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 localhost sametyilmaz.com.tr linux.sametyilmaz.com.tr

Eğer hata almaz aşağıdaki şekilde bir ekran karşılaşırsanız mysql ile haberleştiğinden emin olabilirsiniz.

Sending Access-Request of id 186 to 127.0.0.1 port 1812
        User-Name = "samet"
        User-Password = "31233123"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 1812
        Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=186, length=20

Son olarak Radius sunucumuzu kullanacak olan PfSense için birtane nas client eklememiz gerekiyor.Eğer eklemezseniz pfSense sunucunuz yapılandırmış olduğunuz radius sunucu ile haberleşemez. Client eklemek için aşağıdaki dosyayı açın.

vi /etc/raddb/clients.conf

Clients.conf dosyasını açtıktan sonra en alt satıra inin ve aşağıdaki içeriğin aynısını dosyanın en altına ekleyin.

client 192.168.1.13 {
secret = 123456
shortname = captiveportal
nastype = other
     }

client : 192.168.1.13 ip adresinden gelecek istekleri radius kabul edecek.
shortname : Firewall veya pfSense'de kullandığımız shortname ismi (servis ismi)
secret : 192.168.1.13 ip adresinin radius'a bağlanırken kullanacağı şifre.
nastype = other (pfsense için bir type olsaydı onu girebilirdik.Ama other diyerek geçiyoruz.)

Son olarak servisimi bir yeniden başlatalım.

service radiusd restart

Yukarıda oluşturduğumuz client bilgilerini pfSense sunucumuzda captiveportal radius ayarlarına giriyoruz.

auth1

 

Yukarıdaki resimde gördüğünüz gibi clients.conf dosyasında oluşturduğum bilgileri giriyoruz.

acct2

Accounting paketlerinide radius sunucumuza gondermek için resimdeki ayarları yapılandırıyoruz port olarak 1813 belirtiyoruz ve kaydedip çıkıyoruz.

Şimdi İstemcilerimizden biriyle karşılama ekranın'da kullanıcı adı şifre kısmına Ghost üzerinde oluşturduğumuz kullanıcı ile giriş yapmayı deneyin.
captive1Yukarıda resimde gördüğünüz gibi başarıyla giriş yaptım. Ghost'a bakalım.

ghost1

Tebrikler kurulumu başarıyla yaptınız. Biraz daha açıklayıcı olması için bu tarz radius nerelerde lazım olur.Örneğin Dmasoft satın alırsanız bir radius sunucu kurmanız gerekir ve dmasoftu yapılandırmanız gerekebilir. Fortigate veya herhangi bir firewall kullanıyorsunuzdur TC kimlik veya farklı authentication seçenekleriyle giriş yaptırmak isteyebilirsiniz. Burada Fortigate'e radius sunucusu olarak kurduğunuz Freeradius'u gösterirsiniz ve istediğiniz gibi Fortigate üzerinde hotspot'u özelleştirebilirsiniz.Fortigate örnek olarak verdim Watchguard,Mikrotik,pfSense vb herhangi bir firewall olabilir.Radius desteği olsun yeterli : )

Bir makalenin daha sonuna geldik.Yorum altında karşılacağınız sorunlar hakkında yardımcı olmaya çalışırım.Selametle...

Benzer Yazılar

Yorumlar

  • hasan ali , 01 Temmuz 2014 - 12:24

    hocam merhaba ghost kullanıcı adı şifre yanlış uyarısı veriyor . admin ghost kabul etmiyor . database hangi tablodan değiştirebilirim

    Cevapla
    • Samet YILMAZ , 01 Temmuz 2014 - 14:42

      Merhaba Admin tablosunda tutuluyor oradan değiştirebilirsiniz.Ama eğer veritabanı bilgilerini makaledeki gibi yapmadıysan inc altında db_settings.php dosyasını düzenlemeniz gerekir.

      Cevapla
  • Fatih Çiriş , 28 Ağustos 2014 - 09:36

    Merhaba,
    Öncelikle paylaşımlarınız için çok teşekkürler. Ben watchguarda makalanizden yararlanarak radius server tanımlamak istiyorum. Sanak makinada dediğiniz şekilde centos kurulumunu yaptım. Mysql server ve ghost kurulumuda tamam, fakat tarayıcıdan ghosta bağlandığımda “admin-ghost” kullanıcı adı yanlış diye bir hata alıyorum. Acaba veritabanımı haberleşmiyor. Sorun neden kaynaklı olabilir.Çok uğraştım ama problemi bir türlü çözemedim.

    Cevapla
    • Samet YILMAZ , 28 Ağustos 2014 - 16:34

      Merhaba,

      Kullanıcı Adı : admin , şifre : ghost denermisiniz.Tam olarak hatırlamıyorum ikiside ghost ghost olabilir.MySQL’e konsol’dan b,aglanıpta bakabilirsin veya Teamviewer 8 açarsanız uzaktan bağlanıp beraber bakabiliriz.

      Cevapla
  • Fatih , 29 Eylül 2014 - 07:34

    Sorunsuz bir şekilde kurulumu yaptım. Fakat kafama takılan birsey var. Pfsense üzerinden ghost hotspot makalenizde yaptığımız gibi Tc kimlik doğrulama ekranını nasıl getirip sorgulattırabiliriz? Mikrotik veya watchguard kullanacağım.

    Cevapla
    • Samet YILMAZ , 03 Ekim 2014 - 20:11

      Merhaba,

      TC Kimlik alanını bir register form haline getirmelisiniz.Watchguard ve Mikrotik’e bunu nasıl uygularsınız bilmiyorum ama sanırım şöyle yapılması gerekir.Hotspot karsılama ekranını duzenlerken (mikrotik ve watchguard) Kayıt ol linki koyup oraya tıklandığında Radius’un web sunucusundaki register formuna kayıt yaptırmalarını saglamak ve ardından tekrar karsılama ekranına donmelerini saglamak olurdu.

      Cevapla
  • Ahmet GNAY , 02 Ekim 2014 - 14:58

    Samet Bey Merhaba,

    Çalışmanız çok güzel olmuş. Kurulumu başarı ile yaptım ve VPN serverım üzerinden kullanıyorum.

    Bende Login olan kullancıların logları gelmiyor. Login olduklarını göremiyorum. Ayrıca RADIUS üzerinden gelenleri 1 oturumla kısıtlamak istiyorum. Bununla ilgili olarak yazdığınız makaleyi de uyguladım. başarılı olamadım. Nerde sorun olabilir ?

    Oluşturduğum kullanıcı hesapları ile login olabiliyorum. Attribute de tanımladım. Fakat olmadı. Yardımcı olabilirseniz sevinirim.

    Cevapla

Yorum Yazın

Su elementleri kullanabilirsiniz : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


+ bir = beş

Arama
RSS
Beni yukari isinla