Bu rehber, FortiGate güvenlik duvarı üzerinde misafir ağı (guest network) için RADIUS tabanlı captive portal doğrulamasının uçtan uca nasıl yapılandırılacağını adım adım açıklar. Yapılandırma dört adımdan oluşur: (1) RADIUS sunucusunun FortiGate’e tanımlanması, (2) misafir kullanıcıları için User Group (Guest_Group) oluşturulması, (3) misafir arabirimi üzerinde captive portal ayarlarının yapılması ve (4) misafir erişimini yöneten firewall policy’lerinin yazılması. Ekran görüntülerinde IP adresleri, secret ve benzeri hassas veriler gizlilik amacıyla maskelenmiştir. Yapılandırma adımları FortiOS 7.6 sürümü esas alınarak hazırlanmıştır.
RADIUS Sunucusunun FortiGate’e Tanımlanması
Misafir kullanıcıların captive portal üzerinden doğrulanabilmesi için FortiGate’in kimlik doğrulama isteklerini yönlendireceği bir RADIUS sunucusu tanımlanmalıdır. Bu tanım, User & Authentication > RADIUS Servers menüsünden yapılır. Yeni bir sunucu eklemek için “Create new” düğmesine tıklayın; mevcut bir sunucuyu düzenlemek için listeden seçip “Edit” düğmesini kullanın. Açılan formda aşağıdaki alanlar doldurulur:
Name: RADIUS sunucusu için tanımlayıcı bir ad (örn. guest-radius). Bu ad, sonraki adımlarda user group ve captive portal ayarlarında referans alınır.
Authentication method: Doğrulama yöntemi. Default seçeneği FortiGate’in desteklenen yöntemleri otomatik denemesini sağlar; Specify ile PAP, CHAP, MS-CHAP veya MS-CHAP-v2 el ile seçilebilir.
NAS IP: FortiGate’in RADIUS isteklerinde kaynak (NAS) IP olarak kullanacağı adres. Boş bırakılırsa çıkış arabiriminin IP’si kullanılır. RADIUS sunucusunda istemci (client) tanımı bu IP ile eşleşmelidir.
Include in every user group: Etkinleştirilirse bu sunucu tüm kullanıcı gruplarına otomatik dahil edilir. Misafir senaryosunda genellikle kapalı bırakılır.
Primary Server – IP/Name: Birincil RADIUS sunucusunun IP adresi veya FQDN’i. Captive portal doğrulama istekleri öncelikle bu sunucuya gönderilir.
Primary Server – Secret: FortiGate ile RADIUS sunucusu arasında paylaşılan gizli anahtar (shared secret). İki tarafta da birebir aynı olmalıdır.
Connection status / Test Connectivity / Test User Credentials: Sunucuya erişimi ve örnek bir kullanıcının doğrulamasını sınamak için kullanılır. Başarılı bağlantıda “Successful” görünür.
Secondary Server (opsiyonel): Yedeklilik için ikinci bir RADIUS sunucusu. Birincil sunucuya ulaşılamazsa istekler buraya yönlendirilir.

Şekil 1 – FortiGate RADIUS sunucu tanımlama ekranı (IP ve secret maskelenmiştir).
Misafir Kullanıcıları İçin User Group (Guest_Group) Oluşturma
RADIUS sunucusu tanımlandıktan sonra, captive portal doğrulamasında hangi kullanıcıların yetkilendirileceğini belirleyen bir User Group (kullanıcı grubu) oluşturulur. Bu grup, hem captive portal ayarında hem de firewall policy’de referans olarak kullanılacağı için captive portal adımından ÖNCE hazırlanmalıdır. Grup, User & Authentication > User Groups menüsünden “Create new” ile oluşturulur. Bu ortamda grubun adı Guest_Group’tur. Açılan formda aşağıdaki alanlar doldurulur:
Name: Grubun adı (bu ortamda Guest_Group). Bu ad, captive portal ve firewall policy ayarlarında referans olarak seçilir.
Type: Grup tipi. Misafir/captive portal senaryosunda Firewall tipi seçilir; bu tip, firewall policy’lerde ve arabirim doğrulamasında kullanılabilen gruptur.
Members (yerel üyeler): Yerel olarak tanımlı kullanıcılar buraya eklenir. Bu ortamda doğrulama RADIUS üzerinden yapıldığından yerel üye eklenmez; alan boş bırakılır.
Remote Groups: Grubu RADIUS sunucusuna bağlayan ZORUNLU alandır. Add ile bir satır eklenir; Remote Server olarak daha önce tanımlanan RADIUS sunucusu (bu ortamda testess) seçilir, Group Name olarak da RADIUS tarafından dönen grup adı (Guest_Group) girilir. Böylece RADIUS’ta doğrulanan kullanıcı, dönen grup bilgisiyle bu gruba eşlenir.

Şekil 2 – Guest_Group kullanıcı grubu ve RADIUS remote group eşlemesi (Remote Server = testess).
Misafir Interface Üzerinde Captive Portal Ayarı
Misafir kullanıcıların ağa bağlandıklarında önce bir oturum açma (portal) sayfasına yönlendirilip doğrulanması için, misafir trafiğinin geçtiği arabirim üzerinde captive portal etkinleştirilir. Captive portal, kablolu bir VLAN/fiziksel interface üzerinde de, bir WiFi SSID üzerinde de tanımlanabilir. Bu ortamda misafir trafiği “Misafir” adlı VLAN arabirimi (VLAN ID 11, LAN üzerinde) üzerinden akmaktadır ve captive portal ayarları doğrudan bu arabirimin düzenleme ekranındaki Network bölümünde yapılır. Aşağıdaki alanlar yapılandırılır (zorunlu alanlar ayrıca belirtilmiştir):
Security mode: Arabirimin güvenlik modu. Captive portal doğrulamasını başlatmak için bu alanın Captive Portal seçilmesi ZORUNLUDUR. Bu değer seçilmeden diğer captive portal alanları görünmez.
Authentication portal: Kullanıcıların yönlendirileceği oturum açma sayfasının nerede barındırıldığını belirler. Local, FortiGate’in kendi portal sayfasını kullanır; External ise harici bir portal adresini kullanır. Bu ortamda External seçilidir ve alana SignLogger üzerinde oluşturulan PORTAL URL girilir (örn. http://10.xxx.xxx.xxx:8080/FGT_Guest…). Yani SignLogger portal ekranında üretilen adres tam olarak buraya yazılır.
User access: Doğrulanan kullanıcıların yetkilendirme kapsamını belirler. Restricted to Groups yalnızca seçilen kullanıcı gruplarına izin verir; Allow all tüm doğrulanmış kullanıcılara izin verir. Misafir erişimini kontrol altında tutmak için Restricted to Groups önerilir.
User groups: Restricted to Groups seçildiğinde bu alanın doldurulması zorunlu bir seçenek değildir. Misafir kullanıcılarının üye olduğu grup (bu ortamda Guest_Group) buraya eklenir. Böylece yalnızca bu gruba ait doğrulanan kullanıcıların trafiği geçer.
Redirect after Captive Portal: Başarılı doğrulama sonrası kullanıcının nereye yönlendirileceğini belirler. Original Request kullanıcıyı ilk gitmek istediği adrese gönderir; Specific URL sabit bir adrese yönlendirir.
Network Exemptions (Muafiyetler): Doğrulama yapılmadan önce erişilmesine izin verilecek hedefleri tanımlar. Kullanıcının portal sayfasını görüp giriş yapabilmesi için SignLogger portal sunucusunun (örn. SignLogger-New-Hotspot adres nesnesi) ve DNS servisinin muaf tutulması gerekir. Bu muafiyetler olmadan kullanıcı portal sayfasına dahi ulaşamaz; bu nedenle pratikte ZORUNLU kabul edilmelidir.
FortiAP (kablosuz) kullanılan sistemlerde captive portalın nerede yapılandırılacağı, SSID’nin çalışma moduna göre değişir. Kritik kural şudur: SSID tünel (tunnel) modda çalışıyorsa arabirim ile SSID aynı olur; yani captive portal ayarları doğrudan bu SSID/arabirim üzerinde yapılır ve kablosuz trafik CAPWAP tüneli ile FortiGate’e taşındığı için politika denetimi güçlüdür. SSID bridge (köprü) modda çalışıyorsa arabirim ile SSID farklı olur; FortiAP’nin kablolu ve kablosuz arabirimleri aynı alt ağda köprülenir, trafik yerel olarak anahtarlanır ve captive portal genellikle SSID güvenlik ayarlarında (çoğunlukla harici portal ile) tanımlanır. Bu makaledeki örnek kablolu bir VLAN arabirimi (Misafir) üzerinden anlatılmıştır; kablosuz bir kurulumda alanların içerikleri benzer olsa da yapılandırmanın yapılacağı yer (SSID mi yoksa arabirim mi) tünel/bridge mod seçimine göre belirlenmelidir.

Şekil 3 – Misafir arabirimi üzerinde captive portal ayarları (Security mode, Authentication portal ve User groups; IP maskelenmiştir).

Şekil 4 – Network Exemptions ve doğrulama grubu (Guest_Group, SignLogger portalı ve DNS muafiyetleri).
Misafir Erişimi İçin Firewall Policy Yazımı
Misafir kullanıcıların internete çıkabilmesi ve captive portal doğrulamasına tabi tutulması için, misafir arabiriminden çıkış (WAN) yönüne bir güvenlik duvarı policy’si tanımlanır. Policy, doğrulanması gereken kullanıcı grubunu içerdiğinde FortiGate trafiği captive portal’a yönlendirir. Policy & Objects > Firewall Policy sayfasında “Create new” ile açılan formda aşağıdaki alanlar doldurulur:
Name: Policy için açıklayıcı bir ad (örn. Misafir-İnternet).
Incoming interface: Misafir trafiğinin geldiği arabirim (örn. misafir WiFi SSID veya misafir LAN interface’i).
Outgoing interface: Trafiğin çıkacağı arabirim (genellikle WAN ya da SD-WAN/virtual-wan-link).
Source: Kaynak adres nesnesi. Tüm misafir ağı için genellikle all veya misafir alt ağına karşılık gelen bir adres nesnesi seçilir.
User/group: Captive portal doğrulamasını tetikleyen kritik alandır. RADIUS sunucusuna bağlı misafir kullanıcı grubu buraya eklenir; böylece trafik ancak başarılı doğrulama sonrası geçer.
Destination: Hedef adres. İnternet erişimi için genellikle all seçilir; gerekirse belirli hedeflerle sınırlandırılabilir.
Schedule / Service: Policy’nin geçerli olduğu zaman (örn. always) ve izin verilen servisler (örn. ALL veya HTTP/HTTPS/DNS).
Action: Trafiğe uygulanacak eylem. Misafir erişimine izin vermek için ACCEPT seçilir.
NAT: Misafir ağı özel IP kullandığından internete çıkış için NAT genellikle etkinleştirilir (Use Outgoing Interface Address).
Bu ortamda misafir erişimi, Interface Pair View’de iki yönde tanımlanmış üç kural ile sağlanır. Bu kuralların mantığı, captive portal akışıyla birebir uyumludur: kullanıcı doğrulanmadan önce yalnızca portal ve DNS’e erişebilir, doğrulandıktan sonra Guest_Group üzerinden internete çıkabilir.
MISAFIR → LOCAL (Policy 28): Kaynak all, hedef SignLogger-New-Hotspot, servis HTTP/Port-8080/RADIUS, Action ACCEPT, NAT kapalı. Bu kural doğrulama ÖNCESİ misafirin SignLogger portal sayfasına (HTTP ve 8080) ve RADIUS’a ulaşmasını sağlar; User/group boştur çünkü henüz kimlik doğrulanmamıştır.
MISAFIR → virtual-wan-link (Policy 57): Kaynak all, hedef all, servis DNS, Action ACCEPT, NAT açık. Bu kural doğrulama ÖNCESİ DNS çözümlemesine izin verir; kullanıcı portal adresine ancak DNS çalışırsa ulaşabilir. Arabirimdeki DNS Network Exemption ile aynı amaca hizmet eder.
MISAFIR → virtual-wan-link (Policy 52): Kaynak all, User/group Guest_Group, hedef all, servis ALL, Action ACCEPT, NAT açık. Bu kural doğrulama SONRASI internet erişimini sağlar. User/group alanına Guest_Group eklendiği için trafik yalnızca captive portal üzerinden başarıyla doğrulanmış ve bu gruba düşen kullanıcılara açılır.
Security Profiles: Gerekirse AntiVirus, Web Filter, Application Control gibi profiller uygulanarak misafir trafiği denetlenir.

Şekil 5 – FortiGate firewall policy oluşturma ekranı ve User/group alanı.
Özet ve İpuçları
Bu rehberde FortiGate üzerinde misafir captive portal çözümünün dört temel bileşeni ele alındı: RADIUS sunucusunun tanımlanması, misafir kullanıcıları için User Group (Guest_Group) oluşturulması, misafir arabiriminde captive portal etkinleştirilmesi ve misafir erişimini yöneten firewall policy’lerinin yazılması. Yapılandırmayı tamamlarken aşağıdaki noktalara dikkat edilmesi önerilir:
RADIUS shared secret’ın FortiGate ile RADIUS sunucusunda birebir aynı olduğundan ve NAS IP’nin sunucudaki istemci tanımıyla eşleştiğinden emin olun.
Test Connectivity ve Test User Credentials düğmeleriyle RADIUS bağlantısını ve örnek bir kullanıcı doğrulamasını policy yazmadan önce doğrulayın.
Firewall policy’de User/group alanına misafir kullanıcı grubunu eklemeyi unutmayın; bu alan boş bırakılırsa captive portal doğrulaması tetiklenmez.
Harici portal kullanılıyorsa (örn. SignLogger), portal URL’sinin ve oluşan yönlendirmenin doğru girildiğinden emin olun.
Değişiklikleri uygulamadan önce ilgili ekranlarda OK/Kaydet ile onaylayın ve yapılandırmayı bir test istemcisiyle doğrulayın.
Captive portal ayarında Security mode = Captive Portal, User groups (Restricted to Groups seçiliyse) ve portal ile DNS için Network Exemptions alanları zorunludur; bu alanlar eksikse kullanıcılar portal sayfasına ulaşamaz veya doğrulama tamamlanamaz.
FortiAP kullanılan kurulumlarda captive portalın SSID’nin tunnel veya bridge moduna göre farklı yapılandırıldığını unutmayın; ayarları doğru yere (SSID veya arabirim) uygulayın.
