QHotspot – pfSense için Captive Portal ve FreeRADIUS Yönetim Paneli

Bu makalemizde pfSense Açık Kaynak Firewall yazılımının Captive Portal yönetimini FreeRADIUS uzaktan kimlik doğrulama servisi kullanarak yönetmemizi sağlayan tarafımdan geliştirilmesi devam eden QHotspot projesini tanıtacağım.

Nedir pfSense ?

pfSense logo

pfSense projesi 2004 yılında m0n0wall isimli bir projeden Chris Buechler ve Scott Ullrich tarafından fork’lanarak başlamış ve 2006 yılında ilk sürümünü piyasaya sunmuş içerdiği packet-filtering yazılımı yüzünden “pf” önekini kullanan açık kaynak router firewall FreeBSD dağıtımıdır.

2014 yılında Electric Sheep Fencing LLC (ESF) tarafından satın alınan pfSense temmuz 2017 den beri Apache Lisansı 2.0 kapsamında lisanslanmıştır. 2004 yılından beri telif hakkı Rubicon Communications, LLC (Netgete) firmasındadır.

pfSense, güvenlik duvarı/yönlendirici olarak kullanılmak üzere fiziksel bir bilgisayara veya bir sanal makineye yüklenebilen, web tabanlı bir ara birim üzerinden yapılandırılabilen, güncellenebilen ve yönetmek için altta çalışan FreeBSD bilgisi gerektirmeyen genellikle güvenlik duvarı, yönlendirici, kablosuz erişim noktası (Hotspot), DHCP sunucusu, DNS sunucusu ve VPN çözümü olarak kullanılan son kullanıcı dostu bir yazılımdır. pfSense, Snort, Squid, SquidGuard vb. üçüncü taraf paketlerinin Paket Yöneticisi aracılığıyla yüklenmesini destekler.

Peki, Captive Portal’da Neyin Nesi ?

block photo

Captive Portal (Kısıtlama/Tutsak Portalı) pfSense’ye özgü bir oluşum değildir. Bir network tekniğidir. İstemcinin interneti normal olarak kullanmadan önce özel bir web sayfasına yönlendirilip yetki kontrolünden geçirilmesini ve gerekli yetki alınırsa interneti kullanmasına izin verilmesine yarayan tekniktir. Captive Portal üzerinden yetki kontrolü yapılmadan önce istemcinin port ve adresten bağımsız tüm paketleri engellenecektir. Bilinenin aksine Captive Portal sadece kablosuz ağda değil kablolu ağda da kullanılabilir.

pfSense üzerinde Services altında Captive Portal bağlantısından kullanılabilir.

pfSense üzerindeki Captive Portal’da yetkilendirme seçenekleri aşağıdaki gibidir;

  • Local User Manager (Yerel Kullanıcılar)
  • MAC Address (Fiziksel Adres)
  • IP Address (IP Adresi)
  • Vouchers (Kupon)
  • RADIUS Server (Uzaktan Kimlik Doğrulama Servisi)
  • LDAP (Basit İndeks Erişim Protokolü)

Biz makalemizde RADIUS yöntemini ele alacağız.

FreeRADIUS ?!

FreeRADIUS, kendini kanıtlamış GPL lisansılı uzaktan kimlik doğrulama servisidir. Ücretsiz olması ile gönüllerde taht kurmuştur. Ayriyeten pfSense üçüncü parti yazılımları içerisinde bulunup pfSense’ye kolaylıkla adapte olmaktadır.

Bizde bu sebepten Captive Portal’ın kimlik doğrulama işini FreeRADIUS’a vereceğiz.

QHotspot’un Amacı ?

pfSense çok geniş çözümler sağlayan bir yazılım olmasına rağmen gerek altyapısının gerekse proje önceliklerinin zorlamaları(1)pfSense 2.3 sürümü ile kaldırılan paketlerin listesi yüzünden Captive Portal ayarlamalarının yapılması biraz zor bir hal aldı. Daha önceden konu ile ilgili yazmış olduğum bu makalede de görebileceğiniz gibi tüm gereksinimleri bir arada kurmak fazlasıyla FreeBSD/SQL bilgisi gerektirmektedir.

FreeRADIUS yetkilendirme kayıtlarını bir veritabanında tutmaktadır. Bu veritabanında kullanıcı adları, ip adresleri, mac adresleri, kota sınırlamaları, süre sınırlamaları gibi bilgiler bulunur. Bir çok veritabanı altyapısını kullanabildiği gibi LDAP sunucuları ile de entegre çalışabilmektedir. Bu sebeple bu veritabanı sunucusunun bir yere kurulması ve FreeRADIUS için gerekli tabloların açılması gerekmektedir. Farklı bir yere kurulabileceği gibi tek nokta çözümü olarak pfSense’nin kurulu olduğu makineye de kurulabilir.

QHotspot, pfSense üzerine MySQL veritabanı sunucusunu ve FreeRADIUS sunucusunu kurup gerekli ayarlarını yapmak, Captive Portal’da bir zone oluşturup bu zone’u FreeRADIUS’a bağlamak amacı ile başlayan bir proje idi.

Sonrasında gelen istekler doğrultusunda projeye, FreeRADIUS veritabanına kullanıcı yetkilerinin ayarlanmasını sağlayacak bir yönetim paneli, pfSense için Captive Portal kullanıcı karşılama ekranı ve bu ekran üzerinde standart olarak gelen yetkilendirme seçeneklerinden ek olarak T.C kimlik doğrulaması ve SMS ile doğrulama, detaylı kullanım raporlama araçları ve Captive Portal konusundan bağımsız 5651 sayılı kanun(2)5651 sayılı kanun gereği internet servis sağlayıcılarının ağları üzerinden yaşanacak bir kanunsuzluk durumunda resmi mercilere suçu işleyeni tespit edebilmelerini sağlayan kullanıcı kayıtlarının tutulması ve imzalanması özelliği de dahil olmuştur.

Projenin Durumu

QHotspot projesi tamamen açık kaynak olarak dünyaca ünlü Git Repository hizmeti veren BitBucket ve GitHub’taki repository’lerden kaynak kodlarına ulaşılabilecek şekilde geliştirilmektedir. Herhangi bir güvenlik şüphesi duyulmaması ve ticari kaygısı bulunmadığı için kaynak kodları açıktır.

Proje ile ilgili detaylar reposundaki README.md [English] [Türkçe] dosyasından görülebilir.

Proje Nerede ?

QHotspot – Master Branch BitBucket Repository

QHotspot – Master Branch Git Repository

QHotspot İlk mi ?

Hem evet, hem de hayır.

Yukarıda yazılan ve yapılması düşünülen işlemleri tek komut ile kurulumunu sağlaması konusunda ücretsiz ilk açık kaynak projedir.

Daha önceden sevgili dostum Samet YILMAZ önderliği ile hazırlanan, pfSense Capitve Portal ayarlamalarının, veritabanı kurulumunun ve FreeRADIUS sunucusu ayarlamalarının nasıl yapıldığına dair bir çok makale internet üzerinde bulunabilir. QHotspot bunlardan farklı olarak son kullanıcıyı zorlamadan her şeyi otomatik olarak kurup anahtar teslimi bırakmayı hedeflemiştir. Yeri gelmişken bu değerli arkadaşıma buradan teşekkürlerimi iletirim.

FreeRADIUS yönetim paneli konusunda dünya çapında bir çok ücretli ve ücretsiz çözüm bulunmaktadır. Ama pfSense ile özdeşlenen tek bir yerel çözüm var. O da Ghost Panel.
Ghost Panel, Samet YILMAZ, Uğur Demir, Serhat Sabuncu tarafından yazılmış PHP tabanlı bir FreeRADIUS yönetim panelidir. QHotspot’un doğmasına aracı olan başarılı bir paneldir.

Ghost panel varken neden QHotspot paneli yazmaya karar verdiğimi şu şekilde açıklayabilirim.

Ghost Panel hızlı yazılmış, daha çok günü kurtarsın, iş görsün diye düşünülmüş, son kullanıcı kullanımı bakımından zayıf kalan bir panel. Mevcut kodları pfSense’nin 2.3 sürümünden sonra yaptığı değişiklikler yüzünden PHP sürüm uyuşmazlığı yüzünden MySQL bağlantı yöntemi sorunları yaşamış ve bu sorunlar tarafımdan PDO ya çevrilerek ufak bir güncelleme yaşamıştır. Amacım bu panelin yaptığı işi daha stabil, responsive, kullanıcı dostu, belirli şablonlar oluşturulup kullanılabilecek bir yapıya getirmektir.

Yol Haritası ve Yapılanlar

QHotspot projesi gündelik işlerimden kalan zamanlarda vakit buldukça geliştirdiğim bir proje. Bu makale yazıldığı tarih itibariyle tek başına devam etmekteyim. Bu sebepten biraz ağır ilerlemekte.

Projeye dahil edilmesi düşünülen özellikler aşağıdaki gibidir;

  • pfSense üzerine MySQL Server 5.6 yüklenmesi [TAMAMLANDI]
  • pfSense üzerine PHP MySQL Extension’larının yüklenmesi [TAMAMLANDI]
  • pfSense üzerine FreeRADIUS3 Sunucusu kurulması [TAMAMLANDI]
  • FreeRADIUS3 Sunucusunun ayarlarının yapılması [TAMAMLANDI]
  • pfSense üzerinde Captive Portal ayalamalarının yapılması ve FreeRADIUS3 ile bağlanması [TAMAMLANDI]
  • FreeRADIUS3 veritabanına kullanıcı yetkilendirmelerini oluşturmak için bir web panel oluşturulması
  • 5651 sayılı yasa gereği kullanıcı bilgilerinin kayıt altına alınması ve imzalanması
  • Ubiquiti tarafından geliştirilen Unifi cihazlarının yönetimi için kullanılan Unifi Controller’ın kurulması [TAMAMLANDI]

Sizlerinde yukarıdakiler haricinde projede görmek istediğiniz istekleriniz var ise buradan bana bildirebilirsiniz.

Geliştirirken Neler Kullanılıyor ?

QHotspot projesi geliştirilirken aşağıdaki yazılım dilleri, uygulamalar, hizmetler ve kaynaklar kullanılmaktadır;

Peki bitene kadar bekleyecek miyiz ?

QHotspot ağır ilerliyor. Tamamlanması biraz zaman alacak. Bende bunun farkına varıp kendi kendime QHotspot’un otomatik kurma özelliklerine değerli arkadaşlarımın yazmış olduğu Ghost paneli neden eklemiyorum dedim. Ve ortaya QHotspot with Ghost Panel çıktı. Tek komut ile anahtar teslimi FreeRADIUS, MySQL, Captive Portal ve Ghost Paneli elde etmiş oluyoruz.

Nasıl Kuracağız ?

QHotspot’un bir branch’ı olan “ghost” branch’ını kullanarak sorunsuz bir şekilde sisteminize kurabilirsiniz. Bu makale bir kurulum anlatım makalesi olmadığından ve tek noktadan gerekli değişiklikleri yapabilmek adına sizi ilgili branch’ın sayfasına yönlendiriyorum.

QHotspot – Ghost Branch BitBucket Repository

QHotspot – Ghost Branch Git Repository

Bonus Video

pfSense 2.3.4 QHotspot Installation – VMware Ghost panel installation using QHotspot infrastructure

Beğendim… Bende yardım edebilir miyim ?

Tabi ki. Proje bu yüzden açık kaynak. Yukarıda belirtilen altyapıyı oluşturan özelliklerden anlıyorsan benimle iletişime geçip projeye dahil olabilir ve birlikte bu projeyi yükseltebiliriz. Ticari bir getiri beklemeden yardımların sana teşekkür olarak geri dönecektir.

İletişim için : muzaffer@akyil.net

Kaynaklar & Teşekkür

Dipnot   [ + ]

5 thoughts to “QHotspot – pfSense için Captive Portal ve FreeRADIUS Yönetim Paneli”

  1. Merhaba Muzaffer Bey; Öncelikle Yapmış olduğunuz proje için emeğinize sağlık çok güzel ve herkes için faydalı olabilecek güzel bir hotspot olmuş sormak istediğim otel veri tabanındaki misafir bilgilerini nasıl hotspot üzerine gönderebilirim. Yani pfsense tarafından otel yazılımındaki sqlserver veri tabanındaki misafir bilgilerini nasıl çekebiliriz.
    bu konuda yardımcı olabilirmisiniz.

  2. Muzaffer Bey Merhaba;

    Öncelikle çalışmalarınızdan dolayı teşekkür ederim. Yol haritasında ki adımlardan;

    – FreeRADIUS3 veri tabanına kullanıcı yetkilendirmeler ini oluşturmak için bir web panel oluşturulması
    – 5651 sayılı yasa gereği kullanıcı bilgilerinin kayıt altına alınması ve imzalanması

    aşamalarında son durum nedir? Tahmini olarak ne zaman QHotspot kullanmaya başlayabiliriz? Bizi bilgilendirirseniz sevinirim. Tekrar Teşekkürler.

    1. Merhabalar,
      Öncelikle rica ederim. Üzülerek belirtmeliyim ki iş yoğunluğundan dolayı proje ile ilgilenemiyorum. Fırsat bulduğum ilk zamanda proje yol haritası üzerine yoğunlaşacağım. Teşekkürler.

  3. Muzaffer Bey;
    yaptığınız install dosyası sayesinde kurulum basit bir şekilde tamamlandı. qhotspot 192.168.1.1:81/login sayfasının default kullanıcı adı ve şifresi nedir
    teşekkürler

  4. merhabalar.
    geçen haftaya kadar kurulumda hiç bir sorun yaşamıyordum fakat dünden beri kurulum yapılamıyor.

    /root/install.sh: git: not found
    cd: /usr/local/qhotspot: No such file or directory
    mv: rename .env.example to .env: No such file or directory
    cd: /usr/local/qhotspot/install: No such file or directory
    mv: rename /usr/local/etc/rc.d/mysql-server to /usr/local/etc/rc.d/mysql-server. sh: No such file or directory
    sed: /usr/local/etc/rc.d/mysql-server.sh: No such file or directory
    mysql-server.sh does not exist in /etc/rc.d or the local startup
    directories (/usr/local/etc/rc.d)
    mysqladmin: connect to server at ‘localhost’ failed
    error: ‘Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2) ‘
    Check that mysqld is running and that the socket: ‘/tmp/mysql.sock’ exists!
    /root/install.sh: cannot create /usr/local/qhotspot/install/client.cnf: No such file or directory
    sed: /usr/local/qhotspot/.env: No such file or directory
    sed: /usr/local/qhotspot/.env: No such file or directory
    sed: /usr/local/qhotspot/.env: No such file or directory
    sed: /usr/local/qhotspot/install/qhotspot.sql: No such file or directory
    sed: /usr/local/qhotspot/install/qhotspot.sql: No such file or directory
    sed: /usr/local/qhotspot/install/qhotspot.sql: No such file or directory
    sed: /usr/local/qhotspot/install/qhotspot.sql: No such file or directory
    /root/install.sh: cannot open /usr/local/qhotspot/install/qhotspot.sql: No such file or directory
    cp: /usr/local/qhotspot/install/qhotspot.sh: No such file or directory
    chmod: /usr/local/etc/rc.d/qhotspot.sh: No such file or directory
    sed: /usr/local/qhotspot/install/nginx-QHotspot.conf: No such file or directory
    freeradius3-0.15.5_2 A free implementation of the RADIUS protocol. Sessions available for playback are:
    changepassword disablecarp disablecarpmaint disabledhcpd disablereferercheck ena bleallowallwan enablecarp enablecarpmaint enablesshd externalconfiglocator gatew aystatus generateguicert gitsync installpkg listpkg pfanchordrill pftabledrill r emovepkgconfig removeshaper resetwebgui restartdhcpd restartipsec svc uninstallp kg

    ==> end of list.
    cd: /usr/local/qhotspot: No such file or directory
    Could not open input file: /usr/local/bin/composer.phar
    Could not open input file: artisan
    Could not open input file: artisan
    Unifi Controller kurulsun mu ? (yes/no?): Sistem yeniden başlatılsın mı ? (yes/n o?): cd: /usr/local/qhotspot: No such file or directory

    loglar bunlar.

    2.3.4 ve en son versiyon dahil 2 versiyon da da bu hataları alıyorum

Bir Cevap Yazın