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 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 ?
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ı[ref]pfSense 2.3 sürümü ile kaldırılan paketlerin listesi[/ref] 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[ref]5651 sayılı kanun[/ref] 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.
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ı (QLogSign) [TAMAMLANDI]
- 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;
- PHPStorm – Best PHP IDE
- Git – Versioning System
- GitKraken – Best Git GUI
- Composer – PHP Package Manager
- Larevel – A PHP Framework For Web Artisans
- InfyOm AdminLTE – AdminLTE templates for InfyOm Laravel Generator
- InfyOm Laravel Generator – API, Scaffold, CRUD Laravel Generator
- Defender – Defender is a Access Control List (ACL) Solution for Laravel 5.*
- Laravel Localization – Easy localization for Laravel 5.*
- pfSense Shell – pfSense PHP Shell
- unifi-pfSense – UniFi Controller software on pfSense and other FreeBSD systems
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