Site icon Muzaffer AKYIL (Victorious)

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

QHotspot Logo

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;

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.

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;

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

Exit mobile version