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 : [email protected]
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.
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.
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.
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
Osman bey , kullanıcı adı : admin şifre : ghost
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
Aynı sorunu bende yaşıyorum çözüm bulabildinizmi ?
Muzaffer bey merhaba, pfsense 2.3.2’den başlayıp 2.4.4’e kadar tüm sürümleri tek tek denedim. Anlatımınızda uyguladığınız testleri başarıyla geçiyor sistem fakat ne sms ne de tc kimlik doğrulamasını çalıştıramıyorum.
testlerinizde bunları deneyip olumlu sonuç aldınız mı? yoksa ghost artık çalışmıyor da boş yere mi kürek çekiyorum?
Cevaplamanız dileğiyle.
2.4.4 sürümü için bitbucket üzerindeki qhotspot ghost_2.4.4 branchını kurup üzerinde aşağıdaki adresteki ilgili captive portal dosyalarını yükleyerek tc kimlik doğrulaması yapabilirsiniz.
https://bulut.qtechnics.net/s/I2zT2xwmqPwPcOo
Muzaffer bey,
2.4.4 qhotspot ghost2.4.4 branchını kurdum.
linkteki captive portal dosyalarını nereye koyacağız?
File Manager ile yükledim, olmadı.
/usr/local/captiveportal icine kopyaladım, olmadı. (buradaki index.php yi sildim, default görmesin diye)
Yardımcı olursanız sevinirim.
Hocam elinize sağlık. Sık sık portal giriş sayfasının gelmeme gibi bir sorun yaşıyoruz. Bazende internet yok. Bağlanmaya çalıştığında you are connected diyor ama erişim vermiyor.
Muzaffer bey merhaba,
qhotspot ghost_2.4.4 branchı kurdum. captiveportal 2.44 dosyalarını QHOTSPOT file managerdan mı yüklüyoruz? o şekilde yapınca görmüyor. mevcut index.php yi de rename ettim. index.html görsün diye ama olmadı. Başka bir yolu var mıdır?
Teşekkürler
Hala proje üzerinde ilerliyormusunuz merak ediyorum ?
Bu halini kullanıyorum ama 5651 meselesi için hala bi çözüm bulabilmiş değilim
Proje devam etmekte fakat çok vakit bulamıyorum. Tek başıma ağır ilerliyor.
hocam merhaba öncelikle teşekkür ederim verdiğiniz bilgilerden dolayı bir sorum olacaktı ben 2.4.4 kurulu pfsense sizin verdiğiniz 2.4.4 tc kimlik dosyasını atıyorum fakat doğrulamıyor diyor bilgi verirseniz sevinirim teşekkürler şimdiden
hocam merhaba ya bişey rica edeceğim versiyon 2.4.4 tc kimlik ekliyorum ama doğrulama yapamıyor doğrulamıyor yardımcı olursanız çok sevinirim
Proje ne durumda hocam ilerleme var mı ?
Gerçek anlamda ihtiyaç olmaya başladı işletmem için.
VM imajı paylaşmanız mümkünmüdür?
kurulumda paketlerde değişikliklerden dolayı hata alıyorum paketler bulunamadı gibi
VM ESXI 6.7