pfSense Hotspot 5651 Kurulumu: Adım Adım Kılavuz
18 June 2026 11 Dk Okuma

pfSense Hotspot 5651 Kurulumu: Adım Adım Kılavuz

pfSense ile 5651 Uyumlu Hotspot Altyapısı: Yasal Zorunluluk ve Teknik Gerçeklik

Türkiye'de misafir WiFi hizmeti sunan her işletme, 5651 sayılı Kanun'un 6. maddesi ve BTK'nın 2014/DK-İYS/488 sayılı kararı gereğince kullanıcı erişim kayıtlarını en az bir yıl süreyle saklamakla yükümlüdür. pfSense gibi açık kaynak güvenlik duvarı platformları, doğru yapılandırıldığında hem captive portal (hotspot) hem de yasal loglama gereksinimlerini karşılayabilir. Ancak çoğu işletme, pfSense'in yerleşik Captive Portal modülünün varsayılan yapılandırmasının 5651 şartlarını tam karşılamadığını deneyimleyerek öğrenir.

Bu kılavuz, pfSense üzerinde 5651 uyumlu hotspot kurulumunu adım adım ele alırken, yasal gerekliliklerin teknik karşılıklarını somut örneklerle açıklayacak. Otel, AVM, kafe veya kamu kurumu fark etmez: misafir ağınızda kimlik doğrulama, zaman damgalı kayıt, IP-MAC eşleşmesi ve güvenli saklama olmadan yasal sorumluluktan kurtulamazsınız. 2024 itibarıyla BTK denetimlerinde eksik/hatalı log tutma nedeniyle işletmelere 50.000-500.000 TL arası idari para cezaları kesildiği bilinmektedir.

pfSense Captive Portal Modülünün Sınırları ve 5651 Gereksinimleri

pfSense'in Captive Portal özelliği, kullanıcıları giriş sayfasına yönlendirme ve temel kimlik doğrulama konusunda güçlüdür. Ancak 5651 uyumluluğu için gerekli olan detaylı log formatı, otomatik saklama süresi yönetimi ve KVKK kapsamında veri güvenliği standartlarını varsayılan haliyle sağlamaz. İşte yasal gereksinimlerin teknik karşılıkları:

  • Kimlik Doğrulama: Kullanıcının ad-soyad, TC kimlik numarası veya pasaport bilgisi, cep telefonu numarası gibi en az bir kimlik verisi alınmalı. pfSense'de bu, RADIUS entegrasyonu veya özel HTML giriş formu ile sağlanır.
  • Zaman Damgası: Her oturum başlangıç ve bitiş zamanı saniye hassasiyetinde kaydedilmeli. pfSense log'ları varsayılan olarak Unix timestamp formatında tutar, ancak bu verilerin dışa aktarılabilir ve sorgulanabilir formatta saklanması gerekir.
  • IP ve MAC Adresi: Kullanıcıya atanan iç IP (DHCP lease) ve cihazın MAC adresi eşleştirilmeli. pfSense DHCP logları ile Captive Portal logları ayrı tutulduğundan, bu verilerin birleştirilmesi ek script veya harici log sunucusu gerektirir.
  • Erişilen Kaynaklar: Kullanıcının hangi domain/IP'lere eriştiği (DNS sorguları, HTTP/HTTPS trafiği) kaydedilmeli. pfSense'de bu, Squid Proxy veya harici syslog sunucusuna yönlendirilen firewall logları ile mümkündür.
  • Saklama Süresi ve Güvenlik: Kayıtlar en az bir yıl, yetkisiz erişime karşı korumalı ortamda saklanmalı. pfSense'in yerel disk kapasitesi sınırlıdır; uzun süreli saklama için harici syslog sunucusu veya bulut tabanlı loglama çözümü şarttır.

Bu gereksinimlerin tamamını pfSense'in yerleşik özellikleriyle karşılamak mümkün ancak ileri düzey sistem yönetimi bilgisi ve sürekli bakım gerektirir. Birçok işletme, bu karmaşıklık nedeniyle turnkey hotspot çözümlerine yönelir.

Adım 1: pfSense Captive Portal Temel Kurulumu

pfSense web arayüzüne (genellikle https://192.168.1.1) erişin ve Services > Captive Portal menüsüne gidin. Yeni bir captive portal zone oluşturmak için Add butonuna tıklayın. Zone adını örneğin "MisafirWiFi" olarak belirleyin ve şu temel ayarları yapın:

  • Interface: Misafir ağınızın bağlı olduğu interface'i seçin (örneğin OPT1 veya GUEST_VLAN).
  • Maximum concurrent connections: Eşzamanlı kullanıcı sayısı sınırı. Orta ölçekli bir kafe için 50-100, otel için 200-500 gibi değerler tipiktir.
  • Idle timeout: Kullanıcı belirli süre aktif değilse oturumu sonlandır. 5651 açısından oturum bitiş zamanı kaydı için önemli; 30 dakika önerilir.
  • Hard timeout: Maksimum oturum süresi. Günlük kullanım için 480 dakika (8 saat) makul bir limittir.
  • Logout popup window: Devre dışı bırakın; kullanıcı deneyimi için gereksiz.
  • Pre-authentication redirect URL: Kullanıcıyı başarılı girişten sonra yönlendireceğiniz sayfa. Boş bırakılırsa kullanıcı ilk istediği sayfaya gider.

Bu aşamada Authentication sekmesine geçin. Varsayılan "No Authentication" seçeneği 5651 için yetersizdir. En az aşağıdaki yöntemlerden birini kullanmalısınız:

Kimlik Doğrulama Yöntemi 5651 Uygunluğu Uygulama Zorluğu Tipik Kullanım Senaryosu
RADIUS (FreeRADIUS entegrasyonu) Yüksek (kullanıcı veritabanı merkezi) Orta-Yüksek Otel (PMS entegrasyonu), kurumsal kampüs
Local User Manager Düşük (manuel kullanıcı ekleme) Düşük Küçük ofis, sınırlı kullanıcı sayısı
Voucher (kupon sistemi) Orta (kupon-kullanıcı eşleşmesi gerekli) Orta Kafe, restoran (tek seferlik erişim)
SMS Doğrulama (harici API) Yüksek (GSM numarası kimlik verisi) Yüksek (özel geliştirme) AVM, havalimanı (anonim kullanıcı kitlesi)

Önerilen yaklaşım: Orta-büyük işletmeler için FreeRADIUS + MySQL backend kullanımı. Bu yapıda kullanıcı bilgileri (ad, soyad, telefon, e-posta) veritabanında saklanır ve pfSense her oturum açma isteğinde RADIUS sunucusunu sorgular. Küçük işletmeler için SMS doğrulama ile basitleştirilmiş form yeterli olabilir; ancak bu durumda SMS API entegrasyonu ve log birleştirme script'i gerekir.

Adım 2: Özel HTML Giriş Sayfası ve Kimlik Bilgisi Toplama

pfSense Captive Portal, özel HTML sayfası yüklemenize izin verir. Services > Captive Portal > [Zone Adı] > HTML Page Contents bölümüne giderek kendi giriş formunuzu oluşturabilirsiniz. 5651 uyumluluğu için formda şu alanlar zorunlu olmalıdır:

  • Ad Soyad: <input type="text" name="auth_user" required>
  • TC Kimlik No veya Pasaport No: <input type="text" name="auth_pass" required pattern="[0-9]{11}"> (TC için 11 haneli sayısal kontrol)
  • Cep Telefonu: <input type="tel" name="phone" required pattern="[0-9]{10}">
  • KVKK Onay Checkbox: <input type="checkbox" name="kvkk_consent" required> — Kişisel verilerin işlenmesi için açık rıza.

Form submit edildiğinde pfSense, auth_user ve auth_pass alanlarını RADIUS sunucusuna veya Local User Manager'a gönderir. Ancak ek alanlar (telefon, KVKK onayı) pfSense tarafından otomatik loglanmaz. Bu verileri kaydetmek için iki yöntem vardır:

  1. Harici PHP/Python script: Form verilerini önce kendi web sunucunuza gönderin, veritabanına kaydedin, ardından pfSense'in captive portal endpoint'ine yönlendirin. Bu, en esnek ve 5651 uyumlu yöntemdir.
  2. pfSense Custom PHP (pfBlockerNG veya FreeRADIUS rlm_exec modülü): İleri düzey; RADIUS sunucusunda özel script çalıştırarak ek alanları MySQL'e yazabilirsiniz.

Örnek akış: Kullanıcı formu doldurur → Veriler https://sizin-sunucu.com/hotspot_kayit.php adresine POST edilir → Script MySQL'e kaydeder → Kullanıcı pfSense captive portal'a yönlendirilir (örneğin https://192.168.100.1:8002/index.php?zone=MisafirWiFi) → pfSense kullanıcıyı doğrular ve internete açar.

Adım 3: Detaylı Log Toplama ve Syslog Entegrasyonu

pfSense'in yerleşik log sistemi (Status > System Logs > Authentication) captive portal oturum açma/kapama olaylarını kaydeder. Ancak bu loglar:

  • Varsayılan olarak sadece 500-1000 satır tutar (disk alanına bağlı).
  • Kullanıcının eriştiği web sitelerini içermez (sadece authentication olayları).
  • Uzun süreli saklama için uygun değildir (pfSense yeniden başlatıldığında veya log rotasyonunda eski kayıtlar silinir).

5651 uyumlu loglama için harici syslog sunucusu şarttır. pfSense'de Status > System Logs > Settings menüsünden "Enable Remote Logging" seçeneğini aktif edin ve şu ayarları yapın:

  • Remote log servers: Syslog sunucunuzun IP adresi (örneğin 192.168.1.50:514).
  • Remote Syslog Contents: En azından "Authentication", "DHCP", "Firewall" seçeneklerini işaretleyin. Eğer Squid Proxy kullanıyorsanız "Squid" seçeneğini de ekleyin.
  • Log Message Format: RFC 5424 (yapılandırılmış syslog) tercih edin; log parsing işlemlerini kolaylaştırır.

Syslog sunucusu olarak rsyslog (Linux), Graylog, Splunk veya NextLog5651 gibi bulut tabanlı 5651 loglama platformları kullanılabilir. NextLog5651 özelinde, pfSense syslog çıktısı otomatik parse edilerek kullanıcı-IP-MAC-zaman eşleşmesi yapılır ve KVKK uyumlu şifreli depolama sağlanır. Böylece BTK denetiminde istenen raporlar (örneğin "15 Mart 2024, 14:30-15:00 arası 192.168.100.25 IP'sini kullanan kişi kimdir?") saniyeler içinde üretilebilir.

Adım 4: DHCP ve Firewall Log Birleştirme

5651 denetimlerinde sıkça sorulan soru: "Belirli bir tarih-saatte belirli bir IP adresini hangi cihaz (MAC adresi) kullanıyordu?" pfSense'de bu bilgi iki ayrı log kaynağında bulunur:

  • DHCP Leases Log: Hangi MAC adresine hangi IP'nin ne zaman atandığı (Status > DHCP Leases veya /var/dhcpd/var/db/dhcpd.leases dosyası).
  • Captive Portal Log: Hangi kullanıcının (username) ne zaman giriş yaptığı ve hangi IP'yi aldığı.

Bu iki veriyi birleştirmek için syslog sunucunuzda correlation rule yazmanız veya günlük bir script çalıştırmanız gerekir. Örnek Python pseudo-code:

# Her gece 02:00'de çalışan cron job
dhcp_logs = parse_syslog(filter="dhcpd")
captive_logs = parse_syslog(filter="captiveportal")

for session in captive_logs:
    ip = session['assigned_ip']
    timestamp = session['login_time']
    # DHCP log'unda aynı IP ve zaman aralığına düşen MAC'i bul
    mac = find_mac_by_ip_and_time(dhcp_logs, ip, timestamp)
    # Birleştirilmiş kaydı veritabanına yaz
    db.insert({
        'user': session['username'],
        'ip': ip,
        'mac': mac,
        'login': timestamp,
        'logout': session['logout_time']
    })

Bu işlem manuel yapıldığında hata riski yüksektir. NextLog5651 gibi entegre hotspot çözümleri, pfSense/MikroTik/FortiGate gibi platformlardan gelen syslog akışını otomatik parse ederek bu birleştirmeyi gerçek zamanlı yapar.

Adım 5: Web Trafiği (HTTP/HTTPS) Loglama ve Squid Proxy Entegrasyonu

5651'in 6. maddesi, kullanıcının hangi içeriklere eriştiğinin kaydedilmesini gerektirir. pfSense'de bu, Squid Proxy veya firewall log'larındaki destination IP/port kayıtları ile sağlanır. İki yöntemin karşılaştırması:

Yöntem Kayıt Detayı Performans Etkisi Kurulum Zorluğu
Squid Proxy (Transparent Mode) Tam URL, domain, HTTP method, user-agent Orta-Yüksek (SSL inspection aktifse yüksek) Orta
Firewall Log (Destination IP/Port) Sadece hedef IP ve port (domain çözülemeyebilir) Düşük Düşük
DNS Query Log (Unbound/Bind) Hangi domain'lerin sorgulandığı (erişim değil, sorgu) Çok Düşük Düşük

Önerilen hibrid yaklaşım: Firewall log'ları (tüm trafik için IP/port) + DNS query log'ları (domain çözümlemesi için). Squid Proxy, özellikle HTTPS trafiğinin içeriğini görmek isterseniz (SSL Bump) gereklidir, ancak bu KVKK açısından hassas bir konudur — kullanıcıya açık bilgilendirme ve onay almadan SSL inspection yapılamaz.

Squid kurulumu: System > Package Manager > Available Packages menüsünden "squid" paketini yükleyin. Ardından Services > Squid Proxy Server > General bölümünde:

  • Enable Squid Proxy: İşaretleyin.
  • Proxy Interface: Misafir ağ interface'ini seçin.
  • Transparent HTTP Proxy: Aktif edin (kullanıcılar proxy ayarı yapmadan trafik yönlendirilir).
  • Log Settings: "Enable Access Logging" işaretleyin; log formatı olarak "squid" (varsayılan) yeterlidir.

Squid logları /var/squid/logs/access.log dosyasında tutulur. Bu dosyayı syslog sunucusuna göndermek için cron job ile logrotate + scp veya syslog-ng ile dosya takibi yapılandırabilirsiniz. NextLog5651 entegrasyonunda, Squid access.log formatı otomatik tanınır ve kullanıcı-URL eşleşmesi yapılır.

Adım 6: Voucher (Kupon) Sistemi ile Anonim Kullanıcı Yönetimi

Kafe, restoran veya etkinlik alanlarında her kullanıcıdan kimlik bilgisi almak pratik olmayabilir. Bu durumda voucher (kupon) sistemi kullanılır: Kullanıcıya benzersiz bir kod verilir, bu kod ile giriş yapar. 5651 uyumluluğu için kuponu alan kişinin kimliği kaydedilmelidir (örneğin kafe kasiyeri, kuponu verirken müşterinin adını not eder).

pfSense'de voucher sistemi: Services > Captive Portal > [Zone] > Vouchers sekmesine gidin ve "Enable Vouchers" seçeneğini aktif edin. Şu ayarları yapın:

  • Voucher Rolls: Kupon grupları (örneğin "Ocak2024_Kafe"). Her roll'da belirli sayıda kupon üretilir.
  • Voucher Validity: Kuponun geçerlilik süresi (örneğin 1 gün, 7 gün).
  • Max. concurrent connections per voucher: Bir kupon ile kaç cihaz bağlanabilir (genellikle 1).

Kuponları oluşturduktan sonra CSV veya PDF formatında dışa aktarın. Önemli: Kupon kodları kime, ne zaman verildiğini ayrı bir kayıt defterinde (fiziksel veya dijital) tutmalısınız. BTK denetiminde "X kuponu ile Y tarihinde giriş yapan kişi kimdir?" sorusuna cevap verebilmelisiniz. Bu kayıt, 5651'in "kullanıcı kimliği" şartını karşılar.

MikroTik Captive Portal ile Karşılaştırma: Hangisi Daha Uygun?

Sıkça sorulan soru: "pfSense mi, MikroTik mi?" İşte somut karşılaştırma:

Bu Makaleyi Paylaşın:

Sık Sorulan Sorular

5651 loglama ve hotspot hakkında en çok sorulan konular.

pfSense hotspot için 5651 loglama zorunlu mu?
Evet, internet erişimi sağlayan tüm işletmeler 5651 sayılı kanun gereği kullanıcı giriş-çıkış kayıtlarını, IP atamalarını ve bağlantı loglarını en az 2 yıl saklamak zorundadır. pfSense captive portal bu kayıtları otomatik oluşturur.
pfSense captive portal logları nerede saklanır?
pfSense captive portal logları varsayılan olarak /var/log/portalauth.log dosyasında tutulur. Ancak 5651 uyumluluğu için bu logların harici bir sunucuya (syslog) veya NextLog gibi bulut tabanlı bir sisteme aktarılması önerilir.
MikroTik yerine pfSense hotspot kullanmanın avantajları nelerdir?
pfSense açık kaynak, ücretsiz ve kurumsal düzeyde güvenlik özellikleri sunar. Captive portal yapılandırması daha esnek, VLAN desteği güçlü ve firewall kuralları detaylıdır. MikroTik captive portal log yönetimi daha basit olsa da pfSense ölçeklenebilirlik açısından öne çıkar.
NextLog ile pfSense hotspot entegrasyonu nasıl yapılır?
pfSense'de Status > System Logs > Settings bölümünden 'Remote Logging' aktif edilir, NextLog sunucu IP'si ve portu (514 UDP) girilir. NextLog panelinden pfSense cihazı tanımlanır ve loglar otomatik olarak bulutta KVKK uyumlu şekilde saklanmaya başlar.
pfSense hotspot kurulumu için minimum donanım gereksinimleri nelerdir?
50-100 kullanıcılı bir hotspot için minimum 2 CPU çekirdeği, 4GB RAM ve 20GB SSD yeterlidir. Ancak 500+ kullanıcı için 4+ çekirdek, 8GB RAM ve gigabit network kartları önerilir. Sanal makine (VM) olarak da çalıştırılabilir.

Ağınızın Güvenliğini Şansa Bırakmayın

NextLog 5651 Loglama ve Hotspot sistemleriyle işletmenizi yasal risklerden koruyun.

Müşteri Temsilcisi

Genelde anında yanıt · 0312 945 36 42

Yazıyor...
Kriter pfSense MikroTik (RouterOS)
Lisans Maliyeti Ücretsiz (donanım maliyeti var) Düşük (örn. hAP ac² ~€60, CCR serisi €500+)
Captive Portal Esnekliği