EN
EN

Automation Stitches ile Başarısız SSL VPN Denemesi Yapan IP'leri Bloklama


Bu makalemizde, başarısız VPN giriş denemeleri yapan IP adreslerinin Automation Stitches ile nasıl tespit edilip otomatik olarak engellendiğini adım adım anlatacağım; örnek konfigürasyonlar, tetikleyici (event-based) kuralları ve adres gruplarının kullanımıyla firewall’unuza uygulayacağınız bu tanımlamalar sayesinde aynı kaynak IP’lerden gelen kötü amaçlı trafiği ister tümüyle anında bloke edebilir, ister yalnızca belirlediğiniz süre boyunca SSL VPN denemelerini engelleyecek şekilde sınırlandırabilirsiniz.

Adım 1: Adres Grubu Oluşturma:

Bunu grafik arayüzde yapmak için:

Policy&Objects->Addresses’e gidin, ardından Create new->Address Group’u seçin. 7.4 ve üst versiyonlarında sayfanın üst kısmındaki Adres Grubu düğmesini seçin, ardından Create New butonuna basın.

Yeni Adres Grubu nesnesi için bir Ad belirleyin. Bu makalede, örnek Adres Grubu ‘VPN_Failed_Login’ olarak adlandırılacaktır.

Yapılandırmayı tamamlamak için Tamam düğmesini seçin.

Dipnot: 7.2 ve üst versiyonlarda Members içermeyen address group objesi oluşturulabiliyorken 7.0 ve alt versiyonlarda bu mümkün değildir. Bu kısmı aşmak için predefined olan ‘none’ objesini atayabilirsiniz.

CLI aracılığıyla yapmak için aşağıdaki komutu çalıştırabilirsiniz.

7.2 ve üst versiyonlar için;

config firewall addrgrp

edit VPN_Failed_Login2

end

7.x ve alt versiyonlar için;

config firewall addrgrp

edit VPN_Failed_Login2

set member none

end

Adım 2: Automation Stitches Oluşturma:

Security Fabric->Automation->Stitch Create new butonuna basin. Automation stitches için isim belirleyin. Bu makalede isim olarak ‘SSL_VPN_Login_Block’ kullanılacaktır.

Ardından Add Trigger butonuna basın ve ardından sağ tarafta açılan menüden Create butonuna basın.

FortiOS Event Log’u seçin.

Açılan menüde Trigger’a isim verin. Bu makalede 'SSL_Login_Fail' ismi kullanılacaktır. Ardından Aşağıda bulunan Event kısmındaki "+" butonuna basıp açılan menüde event ismi (SSL VPN login fail) veya id (ID 39426) aratarak bulabilirsiniz. OK butonuna basıp Automation Trigger’ı oluşturuyoruz.

Ardından oluşturduğumuz objeyi seçiyoruz ve Apply butonuna basıyoruz.

Buraya kadar işlemleri yaptığınızda aşağıdaki gibi bir obje elde edeceksiniz.

Şimdiki aşamada trigger tetiklendiğinde alacağı aksiyonu belirleyeceğiz. Add Action butonuna basıyoruz. Sağ tarafta açılan menüden Create butonuna basıyoruz.

Cli Script’ı seçiyoruz.

Açılan menüde isim vermeniz gerekmektedir. Bu makalede “BAN-SSLVPN-IP” kullanılacaktır. Ardından aşağıdaki scripti ekliyoruz ve admin profili seçtikten sonra objeyi oluşturuyoruz.

Kullandığım scripti aşağıda bulabilirsiniz.

config firewall address

edit SSLVPN-Block-%%log.remip%%

set color 6

set subnet %%log.remip%%/32

end

config firewall addrgrp

edit VPN_Failed_Login

append member SSLVPN-Block-%%log.remip%%

end

Oluşturduğumuz objeyi seçip Apply butonuna basıyoruz.

Buraya kadar geldiğinizde aşağıdaki gibi görünmelidir.

Bu işlemleri grafik arayüzden yapmak istemeyenler için Cli komutları sırasıyla aşağıdaki gibidir:

config system automation-trigger

    edit "SSL_Login_Fail"

        set event-type event-log

        set logid 39426

    next

end

config system automation-action
    edit "BAN-SSLVPN-IP"
        set action-type cli-script
        set script "config firewall address
edit SSLVPN-Block-%%log.remip%%
set color 6
set subnet %%log.remip%%/32
end
config firewall addrgrp
edit VPN_Failed_Login
append member SSLVPN-Block-%%log.remip%%
end"
        set accprofile "super_admin"
    next
end

config system automation-stitch
    edit "SSL_VPN_Login_Block"
        set trigger "SSL_Login_Fail"
        config actions
            edit 1
                set action "BAN-SSLVPN-IP"
                set required enable
            next
        end
    next
end

Bu çözüm, başarısız oturum açma (failed login) olayları üreten tüm IP adreslerini engellenen IP adres grubuna ekleyeceği için, şifresini yanlış giren legal kullanıcılar da bu gruba dahil edilecektir. Ancak, bu kullanıcıların belirli bir zaman aralığı içinde başarısız girişten sonra başarılı bir oturum açmaları durumunda IP adreslerinin otomatik olarak bu gruptan çıkarılmasını sağlamak için ikinci bir Automation Stitch tetiklenmelidir.
Engelleme işlemi için ayarlanan delay, engeli kaldırma işlemi için tanımlanan gecikmeyle birebir aynı olmalıdır. Aksi takdirde kurallar arasında senkronizasyon bozulabilir.

Son olarak gelinen nokta aşağıdaki gibi olmalıdır.

Adım 3: Trafiği Blocklamak için yöntem belirleme:

1. Yöntem; SSL VPN ayarlarında source address negate

VPN->SSL VPN Settings menüsünden Restrict Access->Limit access to specific hosts seçeneğine tıklayıp açılan Hosts menüsündeki +’ya basıp oluşturduğumuz adres grup objesini seçiyoruz. Ardından Cli’ı açıp aşağıdaki komutu çalıştırıyoruz.

config vpn ssl settings

set source-address-negate enable

end

Not: 'VPN_Failed_Login' adres grubuna başlangıçta dummy (sahte) bir adres eklediğinizden emin olun; çünkü grup boş olursa çalışmayacaktır. Örneğin 0.0.0.1/32 gibi bir obje ekleyebilirsiniz.

2. Yöntem: Local-In Policy ile trafiği blocklama

Local-In Policy sadece CLI’dan oluşturulabildiği için aşağıdaki komutları çalıştırarak trafiği blocklayabilirsiniz.

config firewall local-in-policy

edit 0

set intf <SSL_VPN_Listening_interface> <-- bu interface SSL VPN settings’teki listen interface ile aynı olmalıdır.
set srcaddr 'VPN_Failed_Login'
set srcaddr-negate disable
set dstaddr 'all'
set dstaddr-negate disable
set action deny
set service 'ALL'
set service-negate disable
set schedule 'always'
set status enable
next
end

Sonuç:

Bu stitch, ilk başarısız bağlantı denemesinden sonra kullanıcının kaynak IP adresini engellenen Address Group'a ekleyecektir.
Eğer bu bağlantı legal bir bağlantı ise, kullanıcının yeniden bağlanabilmesi için IP adresinin Address Group’tan manuel veya automation stitches ile otomatik olarak çıkarılması gerekmektedir.
Bundan sonraki aşamada bir veya birden fazla hatalı deneme yapan ancak sonrasında başarılı bağlantı yapan VPN kullanıcılarının objesini “VPN_Failed_Login” adres grubundan çıkarılması için gerekli konfigürasyonu anlatacağım.

Security Fabric->Automation menüsüne girip Create New butonuna basıyoruz. Ardından açılan sayfada otomasyona isim veriyoruz. Bu makalede isim 'SSL_VPN_Login_Unblock' olacak.

Add Trigger butonuna basıyoruz ve sağ tarafta açılan menüde Create butonuna basıyoruz. FortiOS Event’i seçiyoruz. Trigger objemize isim veriyoruz. Bu makalede ismi “SSL_Login_Success” olacak. Ardından event ismi (SSL VPN tunnel up) veya id (ID 39424) olarak aratıyoruz ve seçip kaydediyoruz. Oluşturduktan sonra objeyi seçip Apply ediyoruz.

Şu ana kadar yapılan işlemler ile görüntü bu şekilde olmalıdır.

AddAction butonuna basıyoruz ve açılan menüde Create butonuna basıp CLI Script’i seçiyoruz. İsim veriyoruz ve aşağıdaki scripti ekleyip admin profili seçip kaydediyoruz. Bu makalede “Remove-SSLVPN-IP” ismi kullanılacaktır. Script kısmına aşağıda paylaştığım komutları ekleyin. Ardından kaydedin ve seçip Apply edin.

config firewall addrgrp
edit VPN_Failed_Login
unselect member SSLVPN-Block-%%log.remip%%
end
config firewall address
delete SSLVPN-Block-%%log.remip%%
end

Yukarıdaki işlemleri yaptıktan sonra 120 saniyelik delay ekliyoruz ve son olarak görüntü aşağıdaki gibi olmalıdır.

Bu işlemleri grafik arayüz yerine komutlar ile yapmak isteyenler için CLI komutları aşağıdadır:

config system automation-trigger
edit 'SSL_Login_Success'
set event-type event-log
set logid 39424
next
end

config system automation-action

edit 'Remove-SSLVPN-IP'

set action-type cli-script

set script 'config firewall addrgrp

edit VPN_Failed_Login<----- Oluşturduğunuz adres grubunun ismiyle aynı olmalı

unselect member SSLVPN-Block-%%log.remip%%<----- “BAN-SSLVPN-IP” scriptindeki isim syntaxı ile aynı olmalı.

end

config firewall address 

delete SSLVPN-Block-%%log.remip%%   <------ “BAN-SSLVPN-IP” scriptindeki isim syntaxı ile aynı olmalı.

end'

set accprofile 'super_admin'

next

end

config system automation-stitch

edit 'SSL_VPN_Login_Unblock'

set trigger 'SSL_Login_Success'
config actions

edit 1

set action 'Remove-SSLVPN-IP'
set delay 120
set required enable

next

end

next

end

Yazar: Halit ŞAHİN/Ağ ve Ağ Güvenliği Kıdemli Uzmanı