Kurumsal Network Kurulumu

FortiGate Firewall Uygulama Kontrolü: Uygulama Engelleme

FortiGate Firewall uygulama kontrolü: misafir ağında izleme ve engelleme, DMZ'de port-protokol zorlaması ve eski imzaların tanımadığı uygulamalar.

İlker Pehlivan

FortiGate Firewall uygulama kontrolü, trafiği port numarasına göre değil, içinden geçen uygulamaya göre tanıyıp izleyen ya da engelleyen güvenlik profilidir. Kural “80 portuna izin ver” der; uygulama kontrolü o portun içinden geçenin Facebook mu, YouTube mu, sıradan bir web sayfası mı olduğunu söyler. Bunu cihazda duran bir imza veritabanıyla yapar.

Fortinet’in güvenlik profilleri sayfası uygulama kontrolüne iki yönde iki ayrı iş veriyor. Kullanıcının dışarı çıkan trafiğinde uygulamalar her portta izlenip süzülür. Dışarıdan gelen trafikte ise bir port yalnız kendi protokolüne açılır.

Bu yazı FortiGate Firewall ileri seviye rehberimizin 3. adımıdır. Lab’da misafir ağına önce izleyen, sonra engelleyen bir profil, DMZ web sunucusuna gelen kurala da port-protokol zorlaması koyuyorum. Lab cihazımın imzaları 2015 tarihli ve FortiGuard’dan güncellenmiyor: aboneliği bitmiş bir cihaz gibi.

Lab’da üç şey beklenenden farklı çıktı:

  1. Standart dışı port seçeneği hiçbir şeyi değiştirmedi. Seçenek açıkken 2222 portundaki istek yine geçti, çünkü eski imzalarda uygulamanın portu yazmıyor.
  2. Fortinet’in 8008 portu için verdiği ayar portu kapatmadı. Üstelik engellenen istek, engel sayfası yerine 6 saniye bekleyip boş döndü.
  3. TikTok sosyal medya engeline rağmen geçti. Cihazdaki 2.414 imzanın hiçbiri TikTok’a ait değil.

Örnekteki sınır kapısında görevli yükü hangi şeritten geldiğine göre değil, sandığın üstündeki işarete bakarak tanır; bunun için kulübenin duvarında işaretlerin asılı olduğu bir pano vardır. Pano eskiyse, sonradan çıkan bir işareti taşıyan sandık sıradan bir sandık gibi geçer. FortiGate’te sandık işareti uygulamanın trafikteki izi, pano da imza veritabanıdır.

Bu yazı, Kurumsal Network Kurulumu hizmetimizde misafir ve çalışan ağlarında hangi uygulamaların çalıştığını görüp gerekeni engellerken izlediğimiz sırayı anlatır.

FortiGate Firewall uygulama kontrolü benzetmesi: sınır kapısının inceleme alanında görevli, üzerinde sarmal işaret olan bir sandık kapağını kaldırıp kulübe duvarındaki işaret panosuyla karşılaştırıyor, panoda sarmal yok
Görevli yükü hangi şeritten geldiğine değil üzerindeki işarete bakarak tanır. Ama yalnız panosunda olan işaretleri tanıyabilir. FortiGate'in uygulama kontrolü de imza veritabanında olmayan uygulamayı sıradan web trafiği sayar.

FortiGate Uygulama Kontrolü Nasıl Olmalı?

Kullanıcının dışarı çıkan trafiğinde uygulama kontrolü önce izler. Misafir ağında eşler arası dosya paylaşımı (P2P) ve proxy uygulamaları engellenir, geri kalan her şey loglanır; çalışan ağında engeller bu logdan çıkarılır.

Dışarıdan gelen trafikte uygulama listesi yerine port-protokol zorlaması kullanılır: DMZ’deki web sunucusunun 80 portundan yalnız HTTP geçer. İmzalar güncel tutulur, engel sayfası açık kalır ve profilin açtığı port close-ports ile kapatılır.

Bu düzeni dört kaynak birlikte tarif ediyor:

  1. Fortinet FortiOS 7.0 Best Practices, Security profiles: sınırdaki bir FortiGate için verdiği örnek tabloda uygulama kontrolüne iki iş veriyor. Gelen trafikte belirli portlara yalnız belirli protokollerle erişilmesini sağlar: örneğin 22 portundan yalnız SSH trafiği gidip gelir. Giden trafikte uygulamaları hangi portta çalışırlarsa çalışsınlar izler ve süzer. Aynı sayfa, uygulama kontrolü bağlanan kuralın 8008 portunu açabileceğini yazıyor ve kapatmak için set app-replacemsg disable satırını veriyor.
  2. Fortinet FortiOS 7.0 Best Practices, Hardening: FortiGuard veritabanları (antispam, IPS ve antivirüs gibi) zamanında güncellenmeli, istenirse eskidiklerinde uyarı gönderilmeli. Uygulama imzaları da bu veritabanlarından biri ve cihazda Application Definitions adıyla duruyor.
  3. Fortinet yönetim kılavuzu, Configuring an application sensor: uygulama kontrolü IPS protokol çözücülerine dayanıyor ve her kategoriye dört eylemden biri verilir: Monitor (izle), Allow (izin ver), Block (engelle) ya da Quarantine (karantinaya al). Block applications detected on non-default ports (standart dışı portta görülen uygulamaları engelle) açıkken izlenen bir uygulama standart dışı bir portta görülürse engellenir. Standart port, FortiGuard’ın uygulama imzasında tanımlanan porttur. Fortinet Community’nin tarama sırası notuna göre önce tek uygulama satırları yukarıdan aşağı, sonra kategoriler değerlendirilir.
  4. NIST SP 800-41 Rev. 1, bölüm 2.1.3: uygulama firewall’u, uygulama katmanındaki trafiği üreticinin hazırladığı zararsız protokol davranışı profilleriyle karşılaştırır ve erişimi, uygulamanın ağ üzerinde nasıl çalıştığına bakarak verir ya da keser. NIST’in örneği, HTTP için kullanılan 80 portunun üstünden anlık mesajlaşma yapılıp yapılmadığının anlaşılmasıdır.

Üç trafik tipinde kararlar:

KararMisafir ağıÇalışan ağıDMZ’ye gelenDayanak
BaşlangıçP2P ve Proxy engelli, gerisi izleniyorÖnce yalnız izleme, engeller logdanKategori yok, port-protokol zorlamasıFortinet BP, fabrika profilleri
Tek uygulamaGerekirse Overrides satırıylaGerekirse Overrides satırıylaYokFortinet kılavuzu
Port-protokol zorlamasıKapalıKapalıAçık: 80 → HTTP, ihlalde BlockFortinet BP, lab ölçümü
Engel sayfasıAçıkAçıkYokLab ölçümü
Profilin açtığı 8008 portuclose-ports enableclose-ports enableYokFortinet BP, lab ölçümü
İmzalarGüncel, tarihine düzenli bakılırGüncel, tarihine düzenli bakılırGüncelFortinet Hardening
HTTPSSertifika denetimiKurum isterse derin denetimYokFortinet bulut uygulama belgesi

Misafir Ağında Neden P2P ve Proxy?

Fabrika profillerinden block-high-risk tam bu iki kategoriyi engelliyor ve geri kalan her uygulamayı geçirip logluyor. Misafir ağında başlangıç bu profilin mantığı:

  1. P2P (85 uygulama): misafirin paylaştığı dosya internete NAT ile kurumun dış IP adresinden çıkar. Dışarıdan bakan için o trafiğin sahibi kurumdur.
  2. Proxy (106 uygulama): misafir bir proxy uygulamasıyla çıkarsa FortiGate yalnız proxy’ye giden bağlantıyı görür. Web filtresi de uygulama kontrolü de asıl gidilen adresi göremez.

Sosyal medyayı ya da videoyu engellemek ise bir güvenlik kuralı değil, kurumun kararıdır. Lab’da aşağıda ikisini de engelliyorum, ama yalnız ölçüm için; ölçüm bitince misafir profili P2P ve Proxy engeline döndü.

FortiGate Uygulama Kontrolü Öncesi: İmzalar ve Fabrika Profilleri

Uygulama kontrolünün ne tanıyabileceğini imza veritabanı belirliyor; önce onun sürümüne baktım (diagnose autoupdate versions):

FortiGate CLI Çıktısı
Application Definitions
---------
Version: 6.00741
Contract Expiry Date: n/a
Last Updated using manual update on Tue Dec  1 02:30:00 2015
Last Update Attempt: n/a
Result: Updates Installed

İmzalar 1 Aralık 2015 tarihli ve hiç güncellenmemiş; değerlendirme lisansının FortiGuard aboneliği yok. Paketin içinde 2.414 uygulama var. Aynı sürüm, profil formunun sağındaki Application Control Signatures Package satırında da yazıyor; hemen üstündeki lisans satırı Not Supported diyor.

Security Profiles → Application Control ekranında fabrika ayarında dört profil duruyor:

  1. default: açıklaması Monitor all applications, yani bütün uygulamaları izle; her uygulamayı geçiriyor ve logluyor.
  2. block-high-risk: P2P ve Proxy kategorilerini engelliyor, gerisini geçirip logluyor.
  3. wifi-default: açıklaması Default configuration for offloading WiFi traffic, yani Wi-Fi trafiğinin aktarımı (offloading) için varsayılan yapılandırma; her uygulamayı geçiriyor.
  4. sniffer-profile: açıklaması default ile aynı, her uygulamayı geçiriyor; adı dinleme (sniffer) kipindeki arayüzlere işaret ediyor.

Kuralın tek başına uygulamayı ayırt edemediğini ve yeni nesil firewall’un port yerine uygulamaya bakmasını firewall nedir yazımızda anlattık.

FortiGate Uygulama Kontrolü İzleme Modu: Önce Ne Çalıştığını Görmek

Engellemeye geçmeden önce ağda ne çalıştığını görmek gerekir; default profil tam bunu yapıyor. Misafir ağının internet çıkış kuralında (kural 11) Policy & Objects → Firewall Policy → kural formundaki Security Profiles bölümünde Application Control açılır ve default seçilir. Komut satırı karşılığı:

FortiGate CLI
config firewall policy
    edit 11
        set utm-status enable
        set ssl-ssh-profile "certificate-inspection"
        set application-list "default"
    next
end

Servis sağlayıcı tarafında gelen istekleri kaydeden bir web sunucusu çalıştırdım (203.0.113.70, 80 ve standart dışı 2222 portunda). Kurala da ölçüm için geçici bir TCP 2222 servisi ekledim. Misafir istemcisi www.facebook.com, www.youtube.com, www.tiktok.com ve test.example.com adlarını bu sunucuya çözüyordu. Dört istek gönderdim. Uygulama kontrolü logu (Log & Report → Application Control) her birini şöyle tanıdı:

FortiGate CLI Çıktısı
dstport=80 ... applist="default" action="pass" appcat="Social.Media" app="Facebook" hostname="www.facebook.com" ... url="/" ... apprisk="medium"
dstport=80 ... applist="default" action="pass" appcat="Video/Audio" app="YouTube_Video.Access" hostname="www.youtube.com" ... url="/watch?v=abc" ... apprisk="elevated"
dstport=80 ... applist="default" action="pass" appcat="Web.Client" app="HTTP.BROWSER" hostname="test.example.com" ... url="/" ... apprisk="medium"
dstport=2222 ... applist="default" action="pass" appcat="Web.Client" app="HTTP.BROWSER" hostname="test.example.com" ... url="/" ... apprisk="medium"

Dört satırdan iki sonuç çıkıyor:

  1. Tanıma içeriğe bakıyor. Dört isteğin hepsi aynı sunucuya gitti; Facebook ve YouTube, sunucunun adresinden değil HTTP isteğinin içindeki addan tanındı.
  2. Tanıma porta bakmıyor. Aynı web isteği 80 portunda da 2222 portunda da HTTP.BROWSER oldu. Bir uygulamayı alışılmadık bir porta taşımak onu gizlemiyor.

Her satırda uygulamanın kategorisi (appcat) ve risk seviyesi (apprisk) de var; engelleme kararını genellikle bu kategoriler üzerinden verirsiniz.

FortiGate Uygulama Engelleme: Kategori ve Tek Uygulama

İzleme logu ağda ne olduğunu gösterdi; şimdi istenmeyeni engelleyen bir profil. Security Profiles → Application Control → Create New ekranında:

  1. Name: misafir-uygulama.
  2. Comments: profilin ne yaptığı tek cümleyle; lab’da ölçüm sırasında Misafir: P2P, Proxy, sosyal medya ve YouTube engelli; gerisi izleniyor.
  3. Categories: P2P, Proxy ve Social.Media satırlarının yanındaki menüden Block; geri kalan kategoriler Monitor.
  4. Application and Filter Overrides → Create New: tek bir uygulama, lab’da YouTube_Video.Access, eylemi Block. Kategorinin tamamını engellemeden bir uygulamayı ayırmanın yolu bu.
  5. Options: fabrika ayarında bırakılır; ilk seçeneği aşağıda ayrıca ölçüyorum.
FortiGate Edit Application Sensor formunun üstü: '93 Cloud Applications require deep inspection' uyarısı, misafir-uygulama profili, kategoriler listesinde P2P, Proxy ve Social.Media satırları engelli olarak kırmızı çerçeveyle işaretli, bazı kategorilerin yanında bulut simgesi
P2P, Proxy ve Social.Media engelli. Kategorilerin yanındaki sayılar uygulama sayısı, bulut simgeli sayılar derin denetim isteyen uygulamalar.
FortiGate uygulama kontrol profilinin alt kısmı: Application and Filter Overrides tablosunda YouTube_Video.Access Block satırı, Options bölümünde kapalı 'Block applications detected on non-default ports' ve açık 'Replacement Messages for HTTP-based Applications' satırları kırmızı çerçeveyle işaretli; QUIC Block
Tek uygulama engeli Overrides tablosunda. Standart dışı port seçeneği kapalı, engel sayfası açık; ikisini de aşağıda ölçüyorum.

Komut satırında kategori satırları ile tek uygulama satırı aynı listede, entries altında durur. Satırlar yukarıdan aşağı değerlendirildiği için en alttaki koşulsuz pass satırı geri kalan her şeyi izler:

FortiGate CLI
config application list
    edit "misafir-uygulama"
        set comment "Misafir: P2P, Proxy, sosyal medya ve YouTube engelli; gerisi izleniyor"
        config entries
            edit 1
                set application 16420
                set action block
            next
            edit 2
                set category 2 6
                set action block
            next
            edit 3
                set category 23
                set action block
            next
            edit 4
                set action pass
            next
        end
    next
end

16420 YouTube_Video.Access’in, 2, 6 ve 23 de P2P, Proxy ve Social.Media kategorilerinin numarası. Yeni bir satır edit ile eklendiğinde listenin sonuna gider. Lab’da engel satırlarını sonradan ekleyince koşulsuz satırın altında kaldılar; move ile üstüne aldım.

Profili (misafir-uygulama) kurala verdim. Kural 11’in formunda (Policy & Objects → Firewall Policy, kurala çift tıklanır) iş Security Profiles bölümünde:

  1. Inspection Mode: Flow-based. Uygulama kontrolü akış kipinde çalışır, proxy kipi gerekmez.
  2. Application Control: açık ve default yerine misafir-uygulama.
  3. SSL Inspection: certificate-inspection, misafir kuralında zaten seçili.
FortiGate Edit Policy formu, Misafir internet cikisi: Security Profiles bölümünde Application Control satırı ve misafir-uygulama profili kırmızı çerçeveyle işaretli
Misafir kuralı web filtresinin yanına uygulama profilini de taşıyor; profil değiştirmek kuralın geri kalanına dokunmuyor.
FortiGate CLI
config firewall policy
    edit 11
        set name "Misafir internet cikisi"
        set application-list "misafir-uygulama"
    next
end

Aynı istekleri tekrarladım:

Çıktı
403 http://www.facebook.com:80/
403 http://www.youtube.com:80/watch?v=abc
200 http://www.tiktok.com:80/foryou
200 http://test.example.com:80/
200 http://test.example.com:2222/

Facebook ve YouTube engellendi; sayfanın başlığı Application Control Violation, yani uygulama kontrolü ihlali. Sunucunun kaydına baktım: bu iki istek sunucuya hiç ulaşmamıştı, yalnız TikTok ve kontrol adresi gelmişti. Log engellemeyi kategoriyle birlikte yazdı:

FortiGate CLI Çıktısı
hostname="www.facebook.com" incidentserialno=182452235 url="/" msg="Social.Media: Facebook" apprisk="medium"
hostname="www.youtube.com" incidentserialno=182452231 url="/watch?v=abc" msg="Video/Audio: YouTube_Video.Access" apprisk="elevated"

Bu ölçümün arka planında web filtresiyle önemli bir fark var. Aynı cihazda web filtresinin kategori bölümü, her siteyi FortiGuard’a soramadığı için bütün web’i engellemişti. Uygulama kontrolü ise FortiGuard’a hiç ulaşmadan çalıştı, çünkü imzalar cihazın içinde duruyor.

FortiGate Standart Dışı Port Seçeneği: İmzada Port Yoksa Etkisiz

Options bölümünün ilk satırı Block applications detected on non-default ports. Fortinet’in belgesine göre açıkken izlenen bir uygulama, imzasında yazan port dışında görülürse engellenir. 2222 portundaki istek tam bunu sınıyor: aynı uygulama (HTTP.BROWSER), alışılmadık bir port. Seçeneği açtım:

FortiGate CLI
config application list
    edit "misafir-uygulama"
        set enforce-default-app-port enable
    next
end

İstekleri tekrarladım:

Çıktı
403 http://www.facebook.com:80/
403 http://www.youtube.com:80/watch?v=abc
200 http://www.tiktok.com:80/foryou
200 http://test.example.com:80/
200 http://test.example.com:2222/

2222’deki istek yine geçti ve log onu izlenen trafik olarak yazdı:

FortiGate CLI Çıktısı
srcip=10.34.60.10 ... dstport=2222 ... applist="misafir-uygulama" action="pass" appcat="Web.Client" app="HTTP.BROWSER" hostname="test.example.com"

Sebep imza kaydında. get application name status çıktısında her uygulamanın kaydı şöyle:

FortiGate CLI Çıktısı
app-name: "Facebook"
id: 15832
category: "Social.Media"
cat-id: 23
popularity: 5.low
risk: 3.low
weight: 10
shaping: 0
protocol: 1.TCP, 9.HTTP, 26.SSL
vendor: 3.Facebook
technology: 1.Browser-Based
behavior: 
language: Multiple

Kayıtta uygulamanın kategorisi, riski, protokolü ve teknolojisi var, ama portu yok. 2.414 kaydın hiçbirinde port alanı bulunmuyor. Belgedeki “imzada yazan port” bu eski pakette hiç yazılmamış; seçeneğin karşılaştıracağı bir şey yok. Güncel imzalı bir cihazda seçeneği aynı denemeyle sınayın: bir uygulamayı alışılmadık bir portta çalıştırın ve logda eylemin değişip değişmediğine bakın. Lab’da seçenek kapalı kaldı.

FortiGate Uygulama Kontrolünde Engel Sayfası ve 8008 Portu

Web filtre yazımızda güvenlik profili bağlanan kuralın internetteki her adreste dört port açtığını ölçüp close-ports ile kapatmıştık. Uygulama kontrolünün payını ayırmak için ayarı kapattım, kuraldan web filtresini çıkardım ve misafir makinesinden hiçbir servis çalıştırmayan bir dış adresi (198.18.0.1) taradım:

Çıktı
8008/tcp open     http
8010/tcp filtered xmpp
8015/tcp filtered cfg-cloud
8020/tcp filtered intu-ec-svcdisc

Yalnız uygulama kontrolü bağlıyken açık görünen tek port 8008. Fortinet’in sayfası bu port için uygulama kontrolüne özel bir satır veriyor ve satır engel sayfasını kapatıyor. Uyguladım:

FortiGate CLI
config application list
    edit "misafir-uygulama"
        set app-replacemsg disable
    next
end

18 saniye bekleyip portu yeniden taradım ve engelli Facebook isteğini tekrarladım:

Çıktı
8008/tcp open  http
000 Operation timed out after 6002 milliseconds with 0 bytes received

Port açık kaldı. Değişen tek şey engellenen isteğin sonucu oldu: engel sayfası yerine bağlantı 6 saniye bekleyip boş döndü. Kullanıcı engellendiğini değil, sitenin çalışmadığını görür.

Engel sayfasını geri açtım (set app-replacemsg enable), close-ports ayarını ve web filtresini de geri koydum. Dört port yeniden kapandı:

Çıktı
8008/tcp filtered http
8010/tcp filtered xmpp
8015/tcp filtered cfg-cloud
8020/tcp filtered intu-ec-svcdisc

Engellenen istek de yine Application Control Violation sayfasını aldı. Lab’daki doğru eşleşme bu: engel sayfası açık, port close-ports ile kapalı. Fortinet’in verdiği satır bu sürümde portu kapatmadı; kendi cihazınızda port taramasıyla doğrulayın.

FortiGate Uygulama İmzaları Eskiyince: TikTok Sıradan Web Trafiği

İçerideki imzalar ise eskiyor. TikTok isteği yukarıda 200 aldı, sosyal medya engeline rağmen. İzleme logunda bu isteğin nasıl tanındığına baktım:

FortiGate CLI Çıktısı
action="pass" appcat="Web.Client" app="HTTP.BROWSER" hostname="www.tiktok.com" ... url="/foryou"

TikTok, sıradan web tarayıcısı trafiği olarak tanındı. Sebebi imza listesinde görmek için Security Profiles → Application Signatures ekranında arama kutusuna uygulamanın adı yazılır:

FortiGate Application Signatures ekranı: arama kutusunda tiktok yazıyor, tabloda No results, sağ alttaki sayaç 0/2,414; arama kutusu ve sayaç kırmızı çerçeveyle işaretli
2.414 imzada TikTok yok. Aynı aramada facebook 43 imza buluyor.

Komut satırında aynı listeyi get application name status veriyor. 2.414 uygulamada TikTok, ChatGPT, Discord ve Microsoft Teams için tek bir imza yok. 2015’ten sonra çıkan ya da trafiği değişen bir uygulama bu cihazın gözünde ya genel HTTP.BROWSER’dır ya da hiç tanınmaz.

Engeli kim alır, kim geçer:

İmzası panoda olan ve olmayan iki istek. Solda Facebook: misafir www.facebook.com adına bir HTTP isteği gönderir; FortiGate imzayı listesinde bulur, uygulamayı Social.Media kategorisine koyar ve kategorinin Block eylemini uygular. Misafir 403 engel sayfası alır, istek sunucuya ulaşmaz, log Social.Media: Facebook yazar. Sağda TikTok: aynı biçimde bir istek gelir, ama 2.414 imzanın hiçbiri TikTok değildir. İstek genel HTTP.BROWSER imzasına düşer, Web.Client kategorisinde izlenir ve geçer; sunucu 200 döner ve sosyal medya engeli uygulanmaz. İmzası panoda: Facebook misafir: www.facebook.com HTTP isteği, port 80 FortiGate: imza listede var Facebook → Social.Media → Block misafire 403 engel sayfası istek sunucuya ulaşmaz kategorinin eylemi uygulanır log: Social.Media: Facebook lab: Facebook ve YouTube 403 İmzası panoda yok: TikTok misafir: www.tiktok.com HTTP isteği, port 80 FortiGate: TikTok imzası yok genel imza: HTTP.BROWSER → izle sunucu 200 döner sıradan web trafiği gibi geçer sosyal medya engeli uygulanmaz log: Web.Client: HTTP.BROWSER lab: 2.414 imzada TikTok yok İmzası panoda olan ve olmayan iki istek. Solda Facebook: misafir www.facebook.com adına bir HTTP isteği gönderir; FortiGate imzayı listesinde bulur, uygulamayı Social.Media kategorisine koyar ve kategorinin Block eylemini uygular. Misafir 403 engel sayfası alır, istek sunucuya ulaşmaz, log Social.Media: Facebook yazar. Sağda TikTok: aynı biçimde bir istek gelir, ama 2.414 imzanın hiçbiri TikTok değildir. İstek genel HTTP.BROWSER imzasına düşer, Web.Client kategorisinde izlenir ve geçer; sunucu 200 döner ve sosyal medya engeli uygulanmaz. İmzası panoda: Facebook misafir: www.facebook.com HTTP isteği, port 80 FortiGate: imza listede var Facebook → Social.Media → Block misafire 403 engel sayfası istek sunucuya ulaşmaz kategorinin eylemi uygulanır log: Social.Media: Facebook lab: Facebook ve YouTube 403 İmzası panoda yok: TikTok misafir: www.tiktok.com HTTP isteği, port 80 FortiGate: TikTok imzası yok genel imza: HTTP.BROWSER → izle sunucu 200 döner sıradan web trafiği gibi geçer sosyal medya engeli uygulanmaz log: Web.Client: HTTP.BROWSER lab: 2.414 imzada TikTok yok
İmzası panoda olan istek kendi kategorisinin eylemini alır; imzası olmayan genel bir imzaya düşer ve o kategorinin eylemiyle geçer.

Bunun sahadaki karşılığı şu: uygulama kontrolü abonelik bittiğinde çalışmayı bırakmaz, sessizce eskir. Engellediğinizi sandığınız kategoriye yeni bir uygulama katıldığında FortiGate onu tanımaz ve geçirir; ekranda hiçbir uyarı da çıkmaz. Fortinet’in sıkılaştırma sayfası bu yüzden veritabanlarının zamanında güncellenmesini istiyor ve eskidiklerinde uyarı gönderilmesini öneriyor. Lisans satırı ve imza paketinin tarihi bu yüzden düzenli bakılacak yerler arasında.

Örnekteki görevlinin panosu da yenilenmezse, sonradan çıkan işaretleri taşıyan sandıklar sıradan yük gibi geçer.

FortiGate Port-Protokol Zorlaması: DMZ’nin 80 Portunda Yalnız HTTP

Fortinet’in tablosundaki öbür yön dışarıdan gelen trafik. Lab’da dışarıdan DMZ web sunucusuna giden kural 3 (v-dmz-web, 203.0.113.10:80 → 10.34.80.10:80) yalnız HTTP servisine izin veriyor. Ama servis nesnesi yalnız TCP 80 portu demek; içinden geçenin gerçekten HTTP olduğunu kural sınamıyor.

Önce bunu ölçtüm. Servis sağlayıcı tarafından aynı porta bir HTTP isteği ve bir SSH bağlantısının ilk satırını gönderdim:

Çıktı
200 HTTP
Message: Bad request syntax ('SSH-2.0-OpenSSH_8.9p1').</p>

İkinci satır, sunucunun döndürdüğü hata sayfasından. SSH satırı sunucuya ulaştı; sunucu onu bozuk bir HTTP isteği sanıp hata sayfasıyla cevap verdi. Port açık olduğu sürece içinden her protokol geçiyor. Yeni bir profil açtım; Security Profiles → Application Control → Create New ekranında:

  1. Name: dmz-protokol; Comments: DMZ: 80 portunda yalniz HTTP.
  2. Categories: fabrika ayarında bırakılır. DMZ kuralında amaç uygulamayı süzmek değil, portu korumak.
  3. Network Protocol Enforcement (ağ protokolü zorlaması) açılır ve Create New ile bir satır eklenir: Port 80, Enforce Protocols (zorlanacak protokol) HTTP, Violation Action (ihlalde yapılacak işlem) Block.
FortiGate dmz-protokol uygulama profili: Network Protocol Enforcement anahtarı açık, tabloda Port 80, Enforce Protocols HTTP, Violation Action Block satırı; anahtar ve satır kırmızı çerçeveyle işaretli
80 portunda yalnız HTTP; başka bir protokol görülürse bağlantı engellenir.

Profil, dışarıdan DMZ’deki web sunucusuna gelen kurala (3) aynı formdan bağlanır: Security Profiles bölümünde Application Control açılır ve dmz-protokol seçilir.

FortiGate Edit Policy formu, Disaridan DMZ web sunucusuna: Security Profiles bölümünde Application Control satırı ve dmz-protokol profili kırmızı çerçeveyle işaretli
Dışarıya açık sunucunun kuralında uygulama profili 80 portunu yalnız HTTP'ye bırakıyor.

Komut satırı karşılığı, profilin kurala bağlanmasıyla birlikte:

FortiGate CLI
config application list
    edit "dmz-protokol"
        set comment "DMZ: 80 portunda yalniz HTTP"
        set control-default-network-services enable
        config default-network-services
            edit 1
                set port 80
                set services http
                set violation-action block
            next
        end
    next
end
config firewall policy
    edit 3
        set utm-status enable
        set ssl-ssh-profile "certificate-inspection"
        set application-list "dmz-protokol"
    next
end

Aynı iki denemeyi tekrarladım:

Çıktı
200 HTTP
nc rc=0 bayt=0

HTTP isteği geçti; SSH satırına hiçbir cevap dönmedi. Log engellemenin sebebini yazdı:

FortiGate CLI Çıktısı
eventtype="protocol-violation" ... srcip=203.0.113.80 ... dstip=10.34.80.10 ... dstport=80 ... service="SSH" ... policyid=3 ... applist="dmz-protokol" action="block" ... msg="Protocol enforcement: service is not whitelisted on port 80"

FortiGate, 80 portuna gelen bağlantının HTTP değil SSH olduğunu ilk satırından tanıdı. NIST’in örneğindeki “80 portunun üstünden başka bir uygulama” tam bu. Örnekteki sınır kapısında şeridin tabelası “yalnız gıda” diyor; görevli o şeritten gelen sandığın işaretine bakıp gıda olmayanı geri çeviriyor. Kural 3’te profil açık kaldı: DMZ’nin web sunucusuna dışarıdan yalnız HTTP geçiyor.

FortiGate Uygulama Kontrolü ve HTTPS: Derin Denetim Gereği

Ölçümlerin hepsi HTTP üzerinde. Gerçek uygulamaların neredeyse hepsi HTTPS kullanıyor ve uygulama kontrolü şifreli bir bağlantıda yalnız bağlantının başında açık giden bilgilere bakabilir. Profil ekranı bunun sınırını kendisi söylüyor: lab cihazımda 93 Cloud Applications require deep inspection, yani 93 bulut uygulaması derin denetim istiyor.

Fortinet’in bulut uygulama belgesine göre Facebook, Gmail ve YouTube derin denetim olmadan da tanınıyor; Gmail eki gibi bağlantının içindeki bir işlem ise derin denetim istiyor.

NGFW’nin şifreli trafiğin içini nasıl gördüğünü firewall nedir yazımızda anlattık. Misafir ağında derin denetim yapılmaz: derin denetim istemcinin kurumun sertifikasına güvenmesini ister ve misafirin cihazına bu sertifika yüklenmez. Değerlendirme lisanslı cihazımda derin denetim kullanıcıya 512 bitlik anahtarlı bir sertifika veriyor ve güncel istemciler bununla bağlanmıyor (FortiGate SSL inspection yazımızda ölçtük). Bu yüzden uygulama kontrolünün HTTPS tarafını burada ölçmedim.

Profilin Options bölümünde bu konuyla ilgili bir fabrika ayarı da var: QUIC Block. QUIC, bazı tarayıcıların HTTPS için kullandığı UDP tabanlı bir protokol. Fortinet’in belgesine göre engellendiğinde Chrome HTTP/2 ve TLS 1.2’ye döner, izin verildiğinde FortiGate QUIC başlığını arayıp loglar. Bu ayarı lab’da ölçmedim, ama fabrika değeri olarak durduğunu bilmek, “QUIC’i kim kapattı” sorusunun cevabını verir.

Doğrulama: FortiGate Uygulama Kontrolü Doğru Kuruldu mu?

  1. İmzalar güncel: diagnose autoupdate versions çıktısında Application Definitions tarihi yakın, lisans satırı geçerli.
  2. Misafir kuralı misafir-uygulama ile çalışıyor; P2P ve Proxy engelli, gerisi izleniyor.
  3. Log: Log & Report → Application Control satırlarında doğru profil adı, kategori ve eylem görünüyor.
  4. Engel sayfası: engellenen bir istek Application Control Violation sayfası alıyor, zaman aşımına düşmüyor.
  5. Portlar: misafir ağından internetteki bir adres tarandığında 8008 açık görünmüyor (close-ports enable).
  6. DMZ kuralı: dışarıdan 80 portuna HTTP geçiyor, başka bir protokol protocol-violation logu ile engelleniyor.

Sonuç: FortiGate Uygulama Kontrolü İçeriğe Bakar, İmzası Kadar Görür

FortiGate uygulama kontrolü trafiği porta değil içeriğe bakarak tanıyor ve FortiGuard’a ulaşamasa da cihazdaki imzalarla çalışıyor. Lab’dan çıkan kurallar:

  1. Önce izleyin. default profil her uygulamayı logluyor; engelleme kararını o logdaki kategorilerden verin. Misafir ağında başlangıç P2P ve Proxy engeli.
  2. Port değiştirmek gizlemez. Aynı istek 80’de de 2222’de de aynı uygulama olarak tanındı; standart dışı port seçeneği ise imzada port yazmadığı için hiçbir şeyi değiştirmedi.
  3. Engel sayfası açık, port kapalı. Fortinet’in 8008 için verdiği satır portu kapatmadı ve engeli zaman aşımına çevirdi; portu close-ports kapattı.
  4. Gelen trafikte portu protokole bağlayın. DMZ’nin 80 portunda yalnız HTTP geçiyor, SSH engellendi.
  5. İmzalar eskir, uyarı vermez. 2015 imzaları TikTok’u tanımadı ve geçirdi. Abonelik ve imza tarihi düzenli kontrol edilir.

Lab’daki son hâl: misafir kuralında misafir-uygulama (P2P ve Proxy engelli, gerisi izleniyor), DMZ kuralında dmz-protokol. Ölçüm için eklenen sosyal medya ve YouTube satırları ile geçici 2222 servisi kaldırıldı.

Örnekteki sınır kapısında görevli sandığı işaretinden tanır ve yalnız panosundaki işaretleri bilir; FortiGate’te pano imza veritabanıdır ve yenilenmedikçe yeni uygulama sıradan web trafiği olarak geçer. Sıradaki adım rehberin 4. adımı, saldırı önleme (IPS); orada da imzalar aynı yaşta.

FortiGate Firewall Uygulama Kontrolü Hakkında Sık Sorulan Sorular

Çalışıyor, ama imzaları güncellenmiyor. Uygulama imzaları cihazda duruyor; FortiGuard'a hiç ulaşamayan lab cihazım 2015 tarihli imzalarla Facebook ve YouTube isteklerini tanıyıp engelledi. Web filtresinin kategori bölümü ise her siteyi FortiGuard'a sorduğu için aynı cihazda bütün siteleri engellemişti. Abonelik yoksa uygulama kontrolü çalışmaya devam eder, ama yeni çıkan uygulamaları tanımaz.
Lab'da atlatmadı. Uygulama kontrolü trafiği port numarasına göre değil içeriğe göre tanıyor: aynı web isteği 80 portunda da standart dışı 2222 portunda da HTTP.BROWSER olarak tanındı. Ters yönde de çalışıyor: DMZ kuralında 80 portuna yalnız HTTP izni verince aynı porttan gönderilen SSH bağlantısı engellendi ve log servisi SSH olarak yazdı.
Lab cihazımdaki imza paketi 6.00741, 1 Aralık 2015 tarihli ve 2.414 uygulama içeriyor. Application Signatures ekranında tiktok araması 2.414 kaydın hiçbirini bulmuyor; ChatGPT, Discord ve Microsoft Teams için de imza yok. TikTok adına giden istek genel HTTP.BROWSER olarak tanındı ve sosyal medya engeli varken bile geçti. Uygulama kontrolüne güveniyorsanız imzaların güncel olması şart.
Web tabanlı uygulamada Application Control Violation başlıklı bir uyarı sayfası. Lab'da engellenen Facebook ve YouTube istekleri 403 kodu ve bu sayfayı aldı, sunucuya hiç ulaşmadı. Engel sayfası kapatılınca (app-replacemsg disable) sayfa yerine bağlantı 6 saniye bekleyip boş döndü; kullanıcı engellendiğini değil, sitenin çalışmadığını görür. Bu yüzden sayfa açık kalır.
Bir kısmı için gerekir. Profil ekranı lab cihazımda 93 bulut uygulamasının derin denetim istediğini yazıyor; kategori listesinde bu uygulamalar bulut simgesiyle işaretli. Değerlendirme lisanslı cihazımda derin denetim ölçülemediği için HTTPS tarafını burada ölçmedim; ölçümler HTTP üzerinde.
İlker Pehlivan
Yazan

BT Danışmanı | Ağ, Sistem ve Güvenlik Yönetimi

İlker Pehlivan, karmaşık BT altyapılarını ölçeklenebilir ve güvenli sistemlere dönüştürür. Buradaki rehberleri kendi laboratuvarında kurup ölçerek yazar.

LinkedIn

Benzer Makaleler

FortiGate Firewall İleri Seviye Rehberi: VPN, SD-WAN ve BGP

FortiGate Firewall ileri seviye rehberi: güvenlik profilleri, Active Directory, VPN, SD-WAN, BGP ve HA; 13 adımın sırası, kimde gerektiği ve fabrika hâli.

20 dk okuma

Kurumsal Firewall Kurulumu, Yönetimi ve Danışmanlığı

Kurumsal firewall kurulumu, yönetimi ve danışmanlığı: Fortinet, Palo Alto ve pfSense ile kural yönetimi, IPS/IDS, VPN ve sürekli izleme hizmeti sunuyoruz.

8 dk okuma

FortiGate Firewall Active Directory Entegrasyonu: LDAP

FortiGate Firewall Active Directory entegrasyonu: LDAPS ile domain controller'a bağlanın, AD grubunu kurala yazın; yanıltıcı LDAP testini ve atlanan kimlik sorusunu çözün.

27 dk okuma

FortiGate Firewall Antivirüs Profili: Flow ve Proxy Farkı

FortiGate Firewall antivirüs profili: EICAR testiyle flow ve proxy kipinin farkı, HTTPS'te sertifika denetiminin körlüğü ve 10 MB sınırı lab'da ölçüldü.

22 dk okuma

FortiGate Firewall Bant Genişliği Sınırlama: Traffic Shaping

FortiGate Firewall bant genişliği sınırlama: misafire toplam 30, kişi başı 20 Mbit/s. Ters yön, iki yönü birleştiren shaper ve kişi başı toplam ölçüldü.

38 dk okuma

FortiGate Firewall BGP Yapılandırması: Komşuluk ve Duyuru

FortiGate Firewall BGP yapılandırması: parolalı komşuluk, network ile duyuru, giriş süzgeci ve önek sınırı; BFD ile 127 saniyelik kesintinin 1 saniyeye inmesi.

21 dk okuma
Kurumsal Network Kurulumu altındaki diğer 114 makale