Jan.01

pfSense 2.3.2 için Captive Portal ve Ghost

pfSense 2.3.2 için Captive Portal ve Ghost
Bu makale pfSense nin sürüm güncellemeleri sebebiyle bazı sistemlerde çalışmaz hale gelmektedir. MySQL, freeRADIUS, PHP ve gerekli paketlerin kurulumu ve Ghost panelin daha kullanıcı dostu bir arabirimle değiştirilmesini kapsayan bir proje yazmaya başladım. Siz değerli ziyaretçilerim buradan QHotspot projesine erişebilir, bilginiz var ise projeye katkıda bulunabilirsiniz. Şimdiden teşekkürler.
QHotspot projesi iş yoğunluğunda yavaş ilerlediği için mevcut ghost panelinde çalışmasını sağlamak adına projeye ghost adında bir branch oluşturdum. Sitede verilen yönergeleri takip etmeniz durumunda size sadece captive portal a index.html hata.html ve gerekli dosyaları eklemeniz kalıyor. Gerekli bilgilere buradan ulaşabilirsiniz.

Kurulum Videosu: https://youtu.be/VHfOwj6Ljn0

Merhabalar,

Bildiğiniz üzere pfSense 2.3 sürümü ile birlikte bir çok değişiklik meydana geldi. Bu değişiklikler ile çalışmakta olan captive portal TC Kimlik doğrulama sistemi ve Ghost Radius sistemi çalışmaz hale geldi.

Sebebi, hem ghost hem de captive portal kodlarının mysqli uyumlu olmaması idi.

Geçtiğimiz günlerde bende kullandığım bir kaç firmada pfSenseyi yükseltmek zorunda kaldım ve bu sorun yüzünden captive portalı kullanamaz oldum.
Captive portal’ın login ekranındaki bir kaç javascript sorunu zaten dikkatimi çekiyordu. Bahane ile onları da kapsayacak bir düzenleme yaptım.

Yapılan Değişiklikler;
  • Tüm kodlarda ki MySQL bağlantı metotları MySQLi’ye çevrildi,
  • Captive Portal login ve hata sayfalarında;
    • TC Kimlik No alanı 11 karakter sadece rakam sınırlaması ve mobil cihazlarda numerik klavye ile giriş yapılması,
    • Adınız ve Soyadınız alanlarına girilen veriler LostFocus durumunda TR karakterler göz önüne alınarak büyük harfe çevrilmesi,
    • Doğum Yılı alanı 4 karakter sadece rakam sınırlaması ve mobil cihazlarda numerik klavye ile giriş yapılması,
    • TC kimlik doğrulaması yapan php dosyada karakter düzenleme kodları

Önemli Uyarı : Ben sistemlerimde SMS ve Voucher kod kullanmadığım için kodlardan çıkarmıştım. Bu sebepten kullanacak arkadaşlar eski kodlardan ilgili yerleri ekleyebilirler.

İndirme Linki : http://goo.gl/X4ihPk

Ekleme (02.02.2017) :

Mysql Server’ın pfSense’ye yüklenmesi:

Mysql paketinin ve php nin mysql modüllerinin yüklenebilmesi için pfSense nin FreeBSD paketlerini aktif etmemiz gerekmekte.

Bunun için ;

/usr/local/etc/pkg/repos/FreeBSD.conf
/usr/local/etc/pkg/repos/pfSense.conf

dosyalarının içindeki

FreeBSD: { enabled: no }

satırlarını aşağıdaki gibi değiştirin.

FreeBSD: { enabled: yes }

İster sevdiğiniz bir metin editörü ile (vi,nano,pico vb.), isterseniz de pfSense Panelinden Diagnostics altından Edit File ile bu değişikliği yapabilirsiniz.

Değişiklikleri yaptıktan sonra ssh ile bağlanıp aşağıdaki komutlar ile paket kurulumlarını tamamlayın.

pkg update
pkg install nano git
pkg install mysql56-server
pkg install compat8x-amd64 # 64 Bit sistemler için
pkg install compat8x-i386 # 32 Bit sistemler için
pkg install php56-mysql
pkg install php56-mysqli
pkg install php56-soap

Paketlerin kurulumu bittikten sonra php’nin mysql paketlerini kullanmasını sağlamak için aşağıdaki komutları çalıştırın.

touch /etc/php_dynamodules/mysql
touch /etc/php_dynamodules/mysqli
touch /etc/php_dynamodules/php56-mysql
touch /etc/php_dynamodules/php56-mysqli
/etc/rc.php_ini_setup

Mysql’in her açılışta otomatik çalışmasını sağlamak için

echo 'mysql_enable="YES"' > /etc/rc.conf
mv /usr/local/etc/rc.d/mysql-server /usr/local/etc/rc.d/mysql-server.sh

Mysql’in 1 dakikada bir çalışıp çalışmadığını kontrol edip çalışmıyorsa başlatılmasını sağlayan kodlarda aşağıdaki gibidir;

nano /usr/local/bin/mysql_relaunch.sh #Dosyayı nano ile açıyoruz
#Dosya içeriği

#!/usr/bin/env sh
service /mysql-server.sh status > /dev/null
if [ $? != 0 ]; then
service mysql-server.sh start
fi
# Ctrl+x yapıp Y dediğimizde dosya kaydedilecektir.
# Dosyayı çalıştırılabilir hale getirelim
chmod +x /usr/local/bin/mysql_relaunch.sh

pfSense paketlerinden Cron yüklü değilse yükleyin. Services altından Cron’a girin. Add diyip ;

Minute: */1
Hour: *
Day of the Month: *
Month of the Year: *
Day of the Week: *
User: root
Command: /usr/local/bin/mysql_relaunch.sh

kaydedin.
Sistemi yeniden başlatın. Yeniden başlatma sonrasında ssh ile tekrar bağlanın ve mysql in kurulumunu tamamlayın

/usr/local/bin/mysql_secure_installation

Bu komutu verdikten sonra bizden root password girmemiz istenecek. enterla geçiyoruz.
Set root password sorusuna Y diyoruz
Yeni root şifremizi 2 defa giriyoruz. Sonraki 2 soruya Y diyip işlemi tamamlıyoruz.

İşlemlerin en başında açtığımız freebsd repolarını no diyerek tekrar kapatıyoruz.

Şimdi mysql’ e radius kullanıcısını ekleyip bu kullanıcıya yetkiler verelim.

mysql -u root -p
# Bizden belirlediğimiz root password isteniyor
-- radius veritabanını oluşturalım
CREATE DATABASE radius;
-- radius kullanıcısını oluşturalım
CREATE USER `radius`@`localhost`;
-- radius kullanıcısına şifre tanımlıyalım. sifre yazan yere istediğiniz şifreyi verebilirsiniz.
SET PASSWORD FOR `radius`@`localhost` = PASSWORD('sifre');
-- radius kullanıcısına radius veritabanına tam yetki veriyoruz
GRANT ALL ON radius.* TO `radius`@`localhost`;
-- radius kullanıcısı ile heryerden bağlanılabilmesi için izin veriyoruz.
-- sifre yine raidus kullanıcısını için belirlediğiniz şifre olmalı
GRANT ALL ON radius.* TO `radius`@`%` IDENTIFIED BY 'sifre';

Mysql kurulumu ve radius veritabanı ve kullanıcısı tanımlamaları burada sona erdi. Şimdi herhangi bir mysql istemci ile yukarıdaki paylaştığım dosya içindeki ghost.sql dosyasını bu veritabanına yüklemeniz gerekmekte. Bunun için HeidiSQL yada MySQL-Front gibi opensource bir mysql clienti kullanabilirsiniz.

Önemli Not: Bazı sistemlerde radius veritabanındaki radcheck tablosunda bulunan telefon, tcno, adsoyad, tarih, sifre, dtarih alanları NOT NULL olarak işaretli gelebiliyor. Bu sebepten kayıtlarda sıkıntı olabiliyor. Bu alanların NULL izinli olarak ayarlamanız gerekebilir.

pfSense
Share this Story:
  • facebook
  • twitter
  • gplus

About Muzaffer Ali AKYIL

Merhabalar, Adım Muzaffer Akyıl, Bilgi teknolojileri ile içli dışlı, teknolojiyi yakından takip eden, web ve masaüstü programlama ile uğraşıp, saatlerce kastığı şeyleri hiç bir karşılık beklemeden paylaşmayı amaç eden biriyim.

Yorumlar(9)

  1. faysal
    259 days önce

    üstad
    touch /etc/php_dynamodules/mysql komutu giriyorum aşagıdaki hatayı alıyorum
    touch: /etc/php_dynamodules/mysql: No such file or directory

  2. ferdi
    258 days önce

    süper olmuş elinize sağlık

  3. Ertugrul
    258 days önce

    @faysal bende de aynı sorun var. sen düzeltebildin mi?

  4. Muzaffer Ali AKYIL
    258 days önce

    mkdir /etc/php_dynamodules/
    diyip sonra touch komutunu işletin.

  5. Osman
    257 days önce

    pkg install mysql56-server komutunu koşturdugumda aşagıdaki hatayı alıyorum. Creating users Using existing user ‘mysql’.install: not found pkg: PRE-INSTALL script failed

  6. Mehmet Demir
    255 days önce

    Bu bug duzeltmek için bu konutu uygulayın sonra mysqli kurun
    tar xv -C / -f /usr/local/share/pfSense/base.txz ./usr/bin/install
    Cevabı için Osman Özere teşekkürler.

  7. yusuf
    255 days önce

    Muzaffer bey
    Tüm kurulumlar başarılı olmasına rağmen TC kimliği de doğruluyor giriş yapamıyoır Bu arada kurulumu başaran varmı aranızda ? bilgi verirseniz seviniriz
    yusuf1981@yahoo.com

  8. Ercan
    236 days önce

    pkg install mysql56-server komutu çalışmıyor. pkg: No packages available to install matching ‘mysql56-server’ have been found in the repositories diye hata veriyor bu problemi nasıl giderebilirim.

  9. Mustafa CANPOLAT
    224 days önce

    /usr/local/bin dizininde mysql_relaunch.sh dosyasını bulamıyorum.Bende çıkmıyor.
    Yanlış yere mi bakıyorum acaba ? Edit file ile dediklerinizi yapıcam nano yerine ama dizinde o sh dosyasını bulamadım

Bir yorum bırak

 

Comment