Önceki yazımda pfSense 2.4.5 kurulumundan bahsetmiştim. Yine Open Source materyaller kullanarak (MySQL, Freeradius ve Captive Portal) hotspot kurulumuna göz atalım. Yazı sonunda ister önceden tanımlanmış yerel kullanıcı ile isterseniz T.C. Kimlik Numarası ile kimlik doğrulama gerçekleştirip, kullanıcının internete çıkmasını sağlamış olacağız. Bu sayede misafir kullanıcıların yapmış olduğu erişimler 5651’e göre loglanmış olacaktır. İstendiği takdirde Session ve DHCP loglarını pfSense’ten SIEM’e syslog protokolü ile gönderilebilirsiniz.

 

Devam etmeden önce bu yazıdan sonra yayınlamış olduğum  Ghost Script ile pfSense Hotspot Yapılandırması  yazısına geçebilirsiniz.

 

Tavsiye
Sanallaştırma ile çalışıyorsanız, aşağıdaki adımlara geçmeden pfSense’in snapshot’unu almayı unutmayın. Yapılan yanlış bir işlemden doğabilecek sorunlar tekrar kurulum gerektirebilir.

İşlemler sırasında çok fazla kopyala yapıştır kullanıcağımızdan ve VMware konsolunda yapamayacağımızdan dolayı sshd servisi enable etmemizde fayda var. Hem de bu sayede daha efektif çalışmış olacağız.  (14 sonrasında y ile onaylıyoruz)

pfSense Enable SSHD

pfSense Enable SSHD

Artık SSH (Port 22) ile pfSense komut satırına geçiş yapabiliriz. Web Console’da giriş yaparken varsayılan kullanıcı admin olmasına karşın komut satırında root kullanıcısını kullanıyor olacağız. Şifre ise admin şifresi ile aynıdır. Giriş yaptıktan sonra 8 seçeneği ile komut satırına düşmemiz gerekmektedir.

PuTTY

pfSense SSH Login

pfSense SSH Login

 

 

FreeBSD Reposunun Aktif Edilmesi:

Dosya içeriğini düzenlerken “nano” kullanacağım ilk olarak aşağıdaki komutla kurulumunu gerçekleştiriyoruz.

pkg install nano

Sonrasında FreeBSD reposunu kullanabilmemiz için 2 dosyada düzenleme yapmamız gerekmektedir. Aşağıdaki dosyalarda  FreeBSD: { enabled: no }  parametresini  FreeBSD: { enabled: yes }  olarak değiştiriyoruz.

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

Bilmeyenler olabilir, nano ile düzenlemiş olduğumuz dosyayı CTRL + X tuş kombinasyonundan sonra Y ve son olarak Enter tuşu ile kayıt ediyoruz.

FreeBSD reposunu aktif ettiğimize göre repoyu  aşağıdaki komut ile güncelliyoruz:

pkg update

 

MySQL, Compact, MySQLi ve SOAP Kurulumu:

Aşağıdaki komutları sırayla çalıştırıyoruz:

pkg install mysql57-server
pkg install compat9x-amd64
pkg install php72-mysqli
pkg install php72-soap
pkg install openssl

 

Kurulumlar tamamlandıktan sonra pfSense reboot edildiğinde bile MySQL servisinin otomatik olarak başlaması için aşağıdaki komutu giriyoruz:

echo 'mysql_enable="YES"' > /etc/rc.conf

MySQL servisinin dosya uzantısı *.sh ile bitmeli bu yüzden mysql-server dosyasının adını mysql-server.sh ile değiştiriyoruz.

mv /usr/local/etc/rc.d/mysql-server /usr/local/etc/rc.d/mysql-server.sh

pfSense’i yeniden başlatıyoruz. Bu kısımı atlarsanız mysql_secure_installation çalışmayacaktır. pfSense ayağa kalktığında tekrar konsola bağlantı sağlıyoruz ve 8 ile yine komut satırına düşüyoruz. Aşağıdaki komut ile bizden MySQL root kullanıcısının şifresini değiştirip değiştirmek istemediğimizi soracaktır. y|Y ile değiştiriyoruz. Buraya verdiğiniz şifreyi not alın daha sonra kullanacağız. Geri kalan soruları Enter tuşu ile geçebilirsiniz.

/usr/local/bin/mysql_secure_installation

MySQL servisi çalışıyor mu konrol etmek için

service mysql-server.sh status

Şuna benzer bir çıktı ile karşılaşmalısınız, pid değişiklik gösterebilir.

mysql is running as pid 57047.

 

MySQL Veritabanı / Tablo oluşturma

Root kullanıcısı ile MySQL’e bağlanıyoruz. Bizden MySQL’deki root kullanıcsının şifresini isteyecek

mysql -u root -p

Bu arada unutmadan root şifresi password policy’e takılıp expire olabiliyor. MySQL sunucusuna bağlantı sağlanamayınca FreeRadius servisi çalışmıyor. Sorun çıkarmaması adına aşağıdaki SQL sorgusunu çalıştırıyoruz.  ‘Şifreniz’  alanı MySQL root kullanıcısının şifresi ile değişmeli.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Şifreniz',
       'root'@'localhost' PASSWORD EXPIRE NEVER;

Sonrasında radius adında bir veritabanı oluşturuyoruz ve çıkıyoruz.

CREATE DATABASE radius;

exit

Buradaki sql uzantılı dosyayı WinSCP tarzı bir programla pfSense’e gönderdikten sonra, aşağıdaki komutla önceden oluşturmuş olduğumuz radius veritabanına import ediyoruz. Yine root kullanıcımızın şifresini girmemiz gerekecek.

mysql -u root -p radius < radius.sql

 

Önemli !
FreeRadius kurulumuna geçmeden önce, değişiklik yapmış olduğumuz dosyaları eski haline getiriyoruz.  FreeBSD: { enabled: yes }  parametresini  FreeBSD: { enabled: no}  olarak değiştiriyoruz.
nano /usr/local/etc/pkg/repos/pfSense.conf
nano /usr/local/etc/pkg/repos/FreeBSD.conf

 

 

FreeRadius Kurulumu ve Yapılandırması:

Bundan sonraki işlemleri Web Console’dan yapacağız. Admin kullanıcımız ve şifremiz ile login oluyorz.

pfSense Web Console

pfSense Web Console

 

 

System > Package Manager > Available Packages kısmından freeradius3 paketini install butonu sonrasında Confirm butonu ile kuruyoruz. Kurulum esnasında sayfayı yenilemeyin ya da sayfadan ayrılmayın. Aşağıdaki gibi bir çıktı ile karşılaştığınızda kurulum tamamlanmış demektir.

Please visit Services > FreeRADIUS menu to configure the package.

EAP certificate configuration is required before using the package.
Visit System > Cert. Manager and create a CA and a server certificate.
After that, visit Services > FreeRADIUS > EAP tab and complete
the 'Certificates for TLS' section (and, optionally, also the 'EAP-TLS' section.)
>>> Cleaning up cache... done.
Success

 

FreeRadius Nas / Clients

Sonra Services > FreeRadius sekmesine gidiyoruz Nas/Clients kısmını aşağıdaki gibi ayarlıyoruz. Client Shared Secret’i not alın sonra bunu kullanıyor olacağız.

FreeRadius Nas Clients

FreeRadius Nas Clients

 

 

FreeRadius Interfaces

Bu kısımda Authentication ve Accounting Interface’leri tanımlayacağız. 1812 ve 1813 port’undan veri alış verişi olacak.

Services > FreeRadius sekmesinden Interfaces bölümüne geçiyoruz. Add butonu ile aşağıdaki gibi interface’lerimizi yapılandırıyoruz.

 

Authentication

FreeRadius Authentication

FreeRadius Authentication

 

 

Accounting

FreeRadius Accounting

FreeRadius Accounting

 

FreeRadius Interface kısmının son hali aşağıdaki gibi olmalıdır. Son kez Save butonuna basarak kayıt ediyoruz.

Interface Son Görünüm

Interface Son Görünüm

 

 

FreeRadius SQL

Services > FreeRadius > SQL bölümüne geçiyoruz. Yapılandırma aşağıdaki gibi olmalıdır. Database Username root kullanacağız zaten yukarıdaki adımda root için bir şifre tanımlamıştık.

FreeRadius SQL 1

FreeRadius SQL

Aşağıda kalan varsayılan değerler bizim için yeterli başka birşey değiştirmeye gerek yok. En altta bulunan Save butonu ile ayarlarımızı kayıt ediyoruz.

 

 

Authentication Servers Yapılandırması:

System > User Manager > Authentication Servers yolu izlendikten sonra Add butonu ile Radius ile otantikasyon metodunu ekliyoruz.

Radius Kimlik Doğrulama Sunucusu

Radius Kimlik Doğrulama Sunucusu

 

Bu kısımda yine unutulmaması gereken Shared Secret yerine FreeRadius’ta NAS / Client yapılandırması yaparken kullanmış olduğumuz Secret Key’i girmemiz gerekmektedir. Sonrasında Save butonu ile ayarlarımızı kayıt ediyoruz.

 

 

Captive Portal Yapılandırması:

Services > Captive Portal alanından Add butonu ile ilk Captive Portal’ımızı oluşturmaya başlayabiliriz.

Captive Portal 1

Captive Portal 1

 

 

Save & Continue dedikten sonra Enable Captive Portal kutucuğunu işaretliyoruz.

Captive Portal 2

Captive Portal 2

 

 

HTML Page Contents kısmına kadar ki seçeneklere dokunmuyorum. İstendiği takdirde değiştirilebilir. Örn: Kullanıcı giriş yaptıktan sonra hangi sayfaya yönlendirilecek gibi.

Aşağıdaki adıma geçmeden önce buradan Captive Portal Karşılama Sayfası dosyalarını indirmelisiniz. Sıkıştırılmış dosyayı bir yere çıkardıktan sonra captiveportal-tc.php dosyasını editlememiz gerekiyor. Sayfanın başında aşağıdaki DB’e bağlanması için gerekli bilgileri doğru bir şekilde girmemiz gerekmektedir. Değişiklikleri kayıt ediyoruz.

DEFINE("DEBUG", false);
DEFINE("DBHOST", "localhost");
DEFINE("DBUSER", "root");
DEFINE("DBPASS", "sifreniz");
DEFINE("DBNAME", "radius");

 

 

Kaldığımız yerden devam ediyoruz. Use custom captive portal login page kutucuğunu işaretledikten sonra rar dosyasından çıkarmış olduğumuz index.html’i Portal page contents kısmından Choose file diyerek seçiyoruz. Auth error page contents kısmından da choose file dedikten sonra hata.html seçilmelidir. Diğer dosyaları ilerde File Manager kısmından upload ediyor olacağız.

Captive Portal 3

Captive Portal 3

 

 

Authentication kısmına indiğimizde ilk authentication sunucumuz FreeRadius ki T.C Kimlik için kullanacağız, ikincisini de yerel kullanıcılar ile login olmak istersem Local Database olarak seçebiliriz.

Captive Portal 4

Captive Portal 4

 

 

Geri kalan ayarları aşağıdaki gibi yaptıktan sonra Save butonuna basıyoruz.

Captive Portal 5

 

 

captiveportal-files.rar ile gelen dosyaları index.html ve hata.html hariç çünkü onları az önce import ettik. Geri kalan diğer dosyaları aşağıdan (File Manager) upload ediyoruz.

Captive Portal File Manager 1

Captive Portal File Manager 1

 

 

Son durum aşağıdaki gibi olmalı, özellikle captiveportal-tc.php dosyasının veritabanı ile alakalı kısmını kendinize göre düzenlemeden upload etmeyiniz.

Captive Portal File Manager 2

Captive Portal File Manager 2

 

 

pfSense’i son bir kez daha  reboot  ediyorum. pfSense ayağa kalktığında Services > Status sekmesinden radiusd servisini kontrol ediyorum.

Radiusd OK

Radiusd OK

 

 

Her ihtimale karşın System > Package Manager Available Packages kısmından Service_Watchdog 1.8.6 isimli paketi kuruyorum.

Sonrasında Service > Service Watcdog kısmından freeradius servisini ekliyoruz ve kayıt ediyoruz. Bu sayede belirli aralıklarla FreeRadius servisinin çalışıp – çalışmadığını kontrol ediyor olacak. Servis durduğunda otomatik olarak başlatacaktır.

Watchdog

Watchdog

 

Sonuç:

Bir aksilik çıkmaz ise, artık misafir kullanıcılarınız internete erişmek istediğinde karşılama sayfası ile karşılaşacaklar. TC KIMLIK NO, AD, SOYAD, DOGUMYILI isterlerinden 1 tanesi bile yanlış ise doğrulama tamamlanamayacağı için internete çıkış yapamayacaklardır. İlk başta yanlış bilgilerle internete çıkmayı deneyebilirsiniz. Ayrıca yukarıdaki işlemler LAN bacağına uygulandı siz misafir için ayrıca bir interface tanımlayıp bu işlemleri ilgili interface için tanımlayabilirsiniz.

 

 

Captive Portal Status’tan kontrol ettiğimde login olabildiğimi görüyorum.

Captive Portal Status

Captive Portal Status

 

 

Veritabanın’daki  reg_users  tablosunu incelediğimde,

Kayıtlı Kullanıcılar

Kayıtlı Kullanıcılar

 

 

Yapılandırmalar pfSense 2.4.5 ile yapılmıştır. İlerde güncel sürümlerde çalışır mı garantisi olmadığından dolayı sisteminizi ya da paketlerinizi upgrade etmeden önce bir yedeğinin alınmasında fayda olacaktır.

 

 

 Linkler güncellendi, hata.html sayfası eklendi. TCKN otantikasyonundaki bug fixlendi. TCKN ile üye olan kullanıcılar artık giriş yap kısmından Kullanıcı Adı: TCKN Şifre: Doğum Yılı olacak şekilde giriş yapabilecekler, tekrar tekrar kayıt olmalarına gerek yoktur. Giriş sonrası yapılan ilk yönlendirme yavaşlığı giderildi. 

 

 

 

pfsense.org

 


Abone ol
Bildir
guest
73 Yorum
Eskiler
En Yeniler Beğenilenler
Satır İçi Geri Bildirimler
Tüm yorumları görüntüle