29 Haziran 2011 Çarşamba

Captive Portal Ek Özellikler

PfSense üzerinde gelen Captive Portal özelliği hot spot çözümü olarak kullanılabilecek güzel bir özelliktir. Captive Portal, kablosuz ağınıza dahil olan kullanıcıların tüm internet erişimlerini engeller ve web sayfalarına erişmek isteyen kullanıcılara bir karşılama ekranı getirerek oturum açmalarını ister.

İnternete erişmek isteyen kullanıcı, kendisine ait kullanıcı adı ve parolası ile oturum açarak internet erişimi sağlayabilir. Bu nedenler kafeler, oteller ve benzeri yerler ile misafirlerini kendi yerel ağlarına bağlamak istemeyen şirketler için oldukça güzel bir çözümdür. Ancak hali hazırda var olan özellikleriyle Captive Portal yeterince kullanışlı değildir.

Bu nedenle  PfSense üzerinde bir şeyler yazmam ve sistemi modifiye etmem gerekmişti. Bu çalışma sırasında aşağıdaki özellikler sisteme eklemiştim...
  • Captive Portal da kullanıcı hesapları açabilen ancak sistemin geri kalan ayarlarına ulaşamayan bir sınırlı kullanıcı hesabı.
  • Saat sınırlamalı kullanıcı hesabı açılabilmesi ve süresi dolan kullanıcının oturumunun sonlandırılarak hesabın devre dışı bırakılması.
  • Grup olarak toplu kullanıcı açılması.
  • Kullanıcının bir formdan kayıt olması ve hesap bilgilerinin SMS ile cep telefonuna gönderilmesi.
  • Kullanıcın bir form üzerinden kimlik bilgileriyle kayıt olması ve TC Kimlik Numarasının nvi.gov.tr den kontrol edildikten sonra hesabın otomatik olarak açılması.
  • SMS ve TC Kimlik no ile kimlik doğrulamanın birlikte kullanılması.
  • Kullanıcıların parola değiştirebilmesi ve ilk oturum açışlarında parola değiştirmeye zorlanması.
  • Parolamı Unuttum seçeneği ile parola sıfırlama ve yeni parolanın SMS ile cep telefonuna gönderilmesi.
  • Üçüncü parti yazılımların Captive Portal üzerinde kullanıcı hesabı açıp kapatabilmeleri için bir API.
  • Multiwan ağlarda kullanıcının hangi WAN üzerinden çıkacağının seçilebilmesi.
  • Ttarih, kullanıcı adı, ip, mac gibi bilgilerin olduğu özelleştirilmiş log tutma sistemi.
Karşılama Ekranı

Misafirleri yukarıdakine benzer bir karşılama ekranı karşılar. Kullanıcı "SMS ile Kayıt Ol" seçeneğini seçtiğinde karşısına SMS kayıt formu gelecektir. Bu ekrandaki butonlar parametrik olup yönetim arayüzünden yapılan ayarlara göre otomatik olarak görünür veya kaybolurlar.

SMS Kayıt Formu

Bu form doldurulduğunda; kimlik bilgileri nvi.gov.tr (Nüfus ve Vatandaşlık İşleri Genel Müdürlüğü) adresinden kontrol edilir ve bilgiler doğru ise bir kullanıcı hesabı yaratılır ve bu hesabın parolası SMS ile kullanıcının cep telefonuna gönderilir. Kimlik doğrulama özelliği istenirse kapatılabilir.


SMS Ayarları



Yönetim arayüzünden SMS ayarları kolaylıkla yapılabilir. Burada SMS modülünün açık veya kapalı olacağı, SMS ile kullanıcı kaydı sırasında kimlik bilgilerinin doğrulanıp doğrulanmayacağı, SMS göndermede kullanılacak servis sağlayıcı bilgileri, SMS olarak gidecek metin, üretilecek parolanın uzunluğu ve karmaşıklığı ve SMS ile açılan hesaplar için ön tanımlı zaman sınırı buradan ayarlanabilir.

Parola Sıfırlama
Bu özellik Kimlik bilgileri doğrulama ve SMS modülü ile birlikte çalışır. Kullanıcı, parola sıfırlama formunu doldurduğunda, yeni parolası sistemde kayıtlı olan cep telefonuna SMS olarak gönderilir. Bu özellik yönetim arayüzünden açılıp kapatılabilir.

 Çevrim İçi Kayıt Formu


Kullanıcı kayıt işleminin otomatize edilmesini istediğiniz durumlar için "Çevrim İçi  Kayıt Formu" yönetim arayüzünden aktif edileblir.

Kullanıcı bilgileri nvi.gov.tr adresinden doğrulanarak kullanıcı hesabı oluşturulur. İstenirse kimlik doğrulama özelliği kapatılabilir.


Captive Portal İçin Kısıtlı Kullanıcı
Captive Portal için kullanıcı hesabı açıp kapatacak ancak sistemin diğer ayarlarına müdahale edemeyecek bir kullanıcı hesabı oluşturulmuştur. Böylece misafirlerinize hesap açacak personelin diğer ayarları değiştirme ihtimali ortadan kaldırılmıştır.

Kullanıcı Grubu Eklemek
Otel ve benzeri yerlerde gelen kafileler için otomatize edilmiş şekilde kullanıcı hesabı açılabilir. Yönetim arayüzünden grubun adını, gruptaki kişi sayısını ve süreyi seçmek yeterlidir. Çok sayıda kullanıcı hesabı otomatik olarak üretilir. Süresi dolan gruplar ve gruba üye hesaplar otomatik olarak silinir.



Zaman Sınırlı Kullanıcılar
Standart olarak kullanıcı hesaplar günlük olarak açılabiliyordu. Biraz kodlarla uğraştıktan sonra, kullanıcı hesapları gün, saat, dakika, sn gibi zaman sınırları olmaksızın açılabilir hale geldi.



Biraz uğraşırsanız özgür yazılımların size pek çok nimet sunduğunu ama bu nimetlerin her zaman hazır olarak önünüze konmayacağını hatırlamak gerekiyor.

Özetle; elleriniz kirletmekten korkmuyorsanız pek çok şeyi yapmanız mümkün olabilir...

18 yorum:

  1. Merhaba Harun Bey,
    Öncelikle çok güzel çalışmalar yapmışsınız. Tebrik ederim. Bu yaptığınız çalışmalar ticari değilse alabilirmiyiz??
    İyi Çalışmalar.

    YanıtlaSil
  2. Merhabalar Yılmaz Bey,
    Bir süre önce kodların dağıtım hakkını, açık kaynak kodlu yazılımlar ile çözümler üreten bir firmaya devrettiğim için paylaşamıyorum. Bu özellikler ticari çözümler haline getirildi. Eğer ilgileniyorsanız sizi ilgili firmaya yönlendirebilirim.

    YanıtlaSil
  3. Gerçekten güzel bir uygulamaymış. Keşke açık kaynak kodlu dagıtılsaymış

    YanıtlaSil
  4. Nurettin Bey, Kodların özgür olarak dağıtılmasını bende isterdim ama pratikte yaşam Richard Stallman üstadın zihnindeki "ideal dünya" gibi işlemiyor. Hepimizin yapmak zorunda olduğu gibi bende evime ekmek götürmek ve faturalarımı ödemek zorundayım. :)

    Malesef ülkemizde "Özgür Yazılım" kavramı "Beleş Yazılım" şeklinde algılandığından, yazılıma emek veren insanların, emeklerinin karşılığını sofralarında yemek olarak görebilmeleri için ticari düşünmeleri veya ticari düşünen işletmelerle işbirliği yapmaları gerekiyor...

    YanıtlaSil
  5. MerhabAa Harun bey Benim proje dersimbu konu üzerinede mailinizi verirseniz size bir kaç sorum olacakta.

    YanıtlaSil
  6. @Ahmet, "İletişim" linkinden veya "Hakkımda" linkinden bana ulaşabileceğiniz iletişim bilgilerini bulabilirsiniz. e-Posta adresim ve diğer alternatif iletişim seçenekleri "İletişim" sayfasında yer alıyor :)

    YanıtlaSil
  7. selamlar harun hocam elinize sağlık çok güzel düşünmüşsünüz...
    bende sizden pfsense hakkında bir kaç bilgi almak isityordum uygun bulursanız tabiki..
    captive portal da kullanıcı eklerken bunları pfsense dosyalarında hangi yoladaki dosyalara kayıt ediyor?
    - dhcp sunucuda static ip veriyoruz yapılan bu işlem pfsensede hangi dosyada yapılan değişikle oluyor bunları öğrenerek sizin yaptığınız gibi birşey yapmak isityorum sizin ki kadar karmaşık bişey olmasada ağımıza ekliyeceğimiz kullanıcalara static ve aptive portal kullanıcısı tanımlamak isityorum mümkün mü acaba ?
    teşekkürler

    YanıtlaSil
  8. Pfsense bütün ayarları /cf/conf/config.xml içerisinde tutmaktadır. Eğer sistem üzerinde bir şeyleri değiştirmek isterseniz bu dosya üzerinde çalışmanız gerekir...

    Bahsettiğiniz şey teorik olarak mümkün görünüyor. Programlama beceriniz ve azminiz pratikte mümkün olup olmadığını belirleyecektir :)

    YanıtlaSil
  9. hocam static bir dhcp ekledim baslık bilgisine harun yazdım winscp ile bütün dosyaları pc me çektim dosyalarda harun kelimesini aradım iki dosyada harun geçiyor birisi sizind ediğiniz gibi config.xml diğeride tmp/config.cache
    sadece config.xml de değişiklik yaptığımda web arayüzünde değişiklik uygulanmıyor aynı zamanda tmp/config.cache dosyasındada değişiklik yapmam gerekiyor oradada yaptım (çok karişik bir yapısı var gözünü seveyim xml'in:) )

    config.cache de aşağıdaki şekilde bilgiyi formatlıyor buradaki "s" değerleri ne oluyor çözemedim bir fikriniz varmı acaba :)
    {


    i:0;a:5:{s:3:"mac";s:17:"00:1a:7e:a6:29:2e";s:6:"ipaddr";s:12:"10.10.200.20";s:8:"hostname";s:0:"";s:5:"descr";s:5:"kinan";s:11:"netbootfile";s:0:"";}
    i:1;a:5:{s:3:"mac";s:17:"00:1a:7e:a6:29:99";s:6:"ipaddr";s:12:"10.10.200.29";s:8:"hostname";s:0:"";s:5:"descr";s:5:"hacer";s:11:"netbootfile";s:0:"";}}

    YanıtlaSil
  10. @Adsız, son yorum spam olarak algılanmış, bende bir süre spamlarda neler var diye kontrol etmemişim. Şimdi fark ettim...

    Doğrudan config.xml üzerinde değişiklik yapmanız işe yaramayacaktır. İlk cebelleşmeye başladığımda bende çok sinir olmuştum. :)

    Öncelikle config.xml dosyasının parse edilip hafızada bir dizi olarak kullanılması gerekiyor. Daha sonra gerekli ayarlamalar pfSensein okuduğu bu dizi değişken üzerinden yapılıp daha sonra xml olarak yazılıyor. pfSense içerisinde ayar yapan her hangi bir dosyayı incelerseniz bunun nasıl yapıldığını kolaylıkla bulabilirsiniz sanıyorum.

    Siz config.cache dosyasına müdahale ederek aslında kulağınızı tersten tutmak suretiyle hafızadaki config.xml dizisine müdahale etmiş oluyorsunuz. Hafızam beni yanıtlmıyorsa config.cache dosyası, config.xml dosyasının hafızdaki dizi halinin "serialize" edilmiş şekli...

    YanıtlaSil
  11. Dolaradius tavsiye edebilirim.Open Source

    YanıtlaSil
  12. Harun Bey merhaba captive üzerinden bir sorum olacak size kurumum bunyesınde kablosuz internet hizmetini captive üzerinden veriyorum fakat bazı kullanıcıların bılgısayarlarında ınternet dns adresı elle girilmiş oldugundan logın ekranı gelmıyor buna bır cozumumuz varmıdır acaba ?

    YanıtlaSil
  13. Faik Bey, Captive Portal uygulamasının çalışma şeklinden dolayı bahsettiğiniz durum için bir çözüm malesef mümkün değil. Ancak sık kullanılan dns sunucu adreslerini izinli adreslere girerek bu sorunu kısmen çözebilirsiniz. Önemli ölçüde çözüm olacaktır diye düşünüyorum...

    YanıtlaSil
    Yanıtlar
    1. Harun Hocam pfsense'te kullandığım dns adresleri kullanıcıda manuel olarak girili olsa dahi izin vermiyor malesef. yinede düşündüğünüz için tşkler.

      ekran görüntüleri ile dns adreslerini nasıl otomatik yapacaklarını anlatan bir yazı hazırladım umarım yardımcı olur.

      Sil
    2. aslında teorik olarak disari giden tüm dns sorgularini pfsense uzerinde calisan (var mi bilmyirum yoksa kurmak gerekir) dns-cache e yönlendirilebilir. Bu sayede DNS sunucusu olarak ne kullanırsa kullansın sorgular pf uzerine yonlendirildigi icin cevab pfsende'den gelecektir.

      linux firewall (iptables) ile benzer sekilde yonlendirme ile calistirmistim. Pfsense'de bunu denemedim dolayisiyle bu bilgi teorik kaliyor.

      Sil
  14. Harun hocam merhaba, pfsense'te sarg ile raporlama yaparken , captive portal dan giriş yapan freeradius userlarının loglarını user bazlı nasıl kayedebilirim ? IP bazlı yapabiliyorum.

    YanıtlaSil
  15. Merhablar Adsız,
    Sarg kullanmadığım için ne desem yalan olur diyorum. Malesef sorunuzun cevabını bilmiyorum...

    YanıtlaSil
  16. Captive portal için iyi fikirler edinilecek bir yazı olmuş teşekkürler harun hocam

    YanıtlaSil