SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
RATE LIMIT
Rate limit özeliği belirli bir zaman aralığında bir kaynağın kullanabileceği maksimum yükü
belirterek ağ ve onun kaynaklarının bir saldırgan tarafından istilaya uğramasını önler.
Örneğin ip temelli böcekler ve örümcekler (crawler/spider) tarafından ağ sunucularının aşırı
yüklenmesinin önlenmesine yarımdımcı olur.
Rate limit özelliği Citrix Netscaler üzerinde ki belirli bir network birimi veya virtual birim için
maksimum yükü tanımlamamıza olanak sağlar. Bu özellik bize bu birim ile bağlantılı trafik
oranını izlemek için Netscaler’i konfigüre etmemize ve trafik oranına göre gerçek zamanlı
önleyici eylemler almamıza olanak sağlar.
Bu özellik, Netscaler’a istekleri bir sel gibi gönderen bir saldırgan tarafından ağ saldırıya maruz
kaldığında özellikle kullanışlıdır. Böylelikle istemciler için kaynak uygunluğunu etkileyen riskleri
hafifletebilir ve Netscaler’ın yönettiği ağ kaynaklarını ve güvenirliğini iyileştirebilirsiniz.
Virtual server, URL, domain ve domain ve URL kombinasyonlarını içeren kullanıcı tanımlı ve
virtual birimlerle bağlantılı trafik oranlarını kontrol edebilir ve izleyebilirsiniz. Eğer trafik çok
yüksek ise trafik oranını kısabilir ve trafik oranını önceden belirlenen limitleri aştıysa trafiği belirli
bir virtual server’a yönlendirebilirsiniz. HTTP,TCP ve DNS istekleri için oran temelli İzleme
uygulanabilir.
Belirli senaryolar da trafik oranını izemek için bir “rate limit identifier” oluşturulmalıdır. “Rate limit
identifier” “Time Slice” olarak adlandırılan belirli bir zaman aralığında özel bir tipte ki
bağlantıların ve isteklerin maksimum değerleri gibi sayısal eşik değerlerini tanımlar.
İsteğe bağlı olarak “stream selector” olarak bilinen filitreler tanımlayabilir ve “rate limit identifier”
ayarlandığı esnada “stream selector” ‘leri “rate limit identifier” ile ilişkilendirebilirsiniz. Isteğe
bağlı “stream selector” leri oluşturup “limit identifier”’e bağladıktan sonra limit identifier’ı
tanımladığınız bir policy içinden çağırmalısınız.
Rate limit identifier’leri rewrite,responder, DNS ve integrated cache policy’lerinden çağırmanız
bazı senaryolarda çok kullanışlı olacaktır.
Rate limit kullanım senaryoları
DNS rate limit
Belirli bir DNS istemcisinin çok fazla DNS lookup isteği yapmasını önleyerek DNS base Dos
saldırlar önlenebilir.
Boot Limit
Belirli bir kaynaktan elverişli olduğundan daha hızlı sunulan istekleri önlemeye yardımcı olur.
Attack Prevention/Application Protection
İşlemci yükünü arttıran CGI saldırılarını önler.
Brute Force login girişimleri
Tek bir kaynaktan bir login sayfasına erişimi sınırlar.
Stream Selector Yapılandırma
Trafik Stream Selector erişimi kısmak istenilen bir birimi belirtmek için tanımlanan isteğe bağlı
bir filitredir. Selector isteğe ve yanıta uygulanır ve rate stream identifier tarafından analiz
edilecek olan veri noktalarını seçer. Bu veri noktaları hemen hemen IP adresi, subnet, domain
adı, TCP veya UDP identifier ve özel string veya URL’lerde ki uzantılar gibi karekteristik
özellikleri temel alabilir.
Bir stream selector birbirinden ayrı birleşik olmayan expression’lardan oluşur. Bir trafik stream
selector maksimum beş adet expression içerebilir. Her bir expression birbirine AND ile bağlıdır.
Örneğin aşağıda örneği incelersek top_client_url selector’ü birbirinden ayrı birleşik olmayan iki
ayrı expression içermektedir. Bu selector özetle aynı istemci ip’sinden aynı url’e olan istekler için
veri noktaları oluşturur.
Örnek;
HTTP.REQ.URL
CLIENT.IP.SRC
HTTP.RE.URL
CLIENT.IP.SRC
Netscaler CLI’dan trafik stream selector yapılandırmak için;
add stream selector <name> <rule> ...
Örnek
Primary> add stream selector top_client_url HTTP.REQ.URL CLIENT.IP.SRC
Netscaler GUI’den trafik stream selector yapılandırmak için;
1. AppExpert > Rate Limiting > Selectors’den Add butonuna tıklayalım.
HTTP.REQ.URL ve CLIENT.IP.SRC expression’larını Insert butonuna tıklayarak
ekledikten sonra Ok butonuna tıklayalım.
Trafik Rate Limit Identifier Tanımlama
Eğer stream selector ile ayarlanan trafik miktarı belirli bir zaman aralığında sayısal bir limiti
aşıyorsa rate limit identifier maktıksal TRUE değerini döner.
Netscaler CLI’dan traffic limit identifier tanımlama
add ns limitIdentifier <limitIdentifier> -threshold <positive_integer> -timeSlice
<positive_integer> -mode<mode> -limitType ( BURSTY | SMOOTH ) -selectorName
<string> -maxBandwidth <positive_integer> -trapsInTimeSlice <positive_integer>
SelectorName:Rate limit selector’ünün adıdır. Eğer bu alan NULL ise limit identifier’in virtual
server’a veya global olarak bağlı olup olmamasına göre, rate limiting, virtual server veya
Netscaler tarafından alınan bütün tafiğe herhangi bir filitre olmaksızın uygulanır.
Limit Modes: Request Rate
 Belirli bir zaman aralığında ki (time slice) istekleri izler.10 ms’nin katları olarak belirtilir.
 -limit Type SMOOTH:
Bir Leaky Bucket yaklaşımıdır. Kullanıcın sabit oranda yeni bağlantı kurduğu trafik
pattern’inde kullanışlıdır.Aralık boyunca eşit bir dağılım gösterir.(her on ms’de on istek
gibi). Netscaler istekleri 10/ms’de bir izler. Örneğin 200 ms başına 4 istek
belirtilmişseniz, Netscaler her 50 ms’de 1 istek oranını izler.
 -limitType BURST: TimeSlice ile belirtilen zaman aralığında herhangi bir zaman
istemcinin yaptığı istek sayısının istemciye tanımlanan kotayı doldurduğu Token Bucket
yaklaşımıdır. Trafiğin çoğu belirli bir aralıkta tek bir noktaya gelir.(Örneğin bir saniyelik
bir aralığın ilk 10 ms’si) .Kullanıcı eriştiğinde kısa ve şiddetli bir aktivite ve sonrasında
kullanıcı sayfayı okurken aktivitenin olmadığı durum burst (patlamalı) uygulamaya güzel
bir örnektir. Burda dikkat edilmesi gereken nokta TimeSlice olarak belirlediğimiz zaman
aralığının herhanangi bir noktasında threshold değeri aşıldığında aşılan saniyeden
TimeSlice süresinin sonuna kadar eğer responder action DROP seçilmişse
drop’lanacaktır. Örneğin Aynı client ip’sinden aynı URL’e gelen istek oraını 10 dakikada
1000 istek olarak ayardıysak ve Beşinci dakikada bu şart sağlandıysa ve responder
policy’de bu şart sağlandığında uygulanacak eylemi (action) bağlantıyı düşürmek
(DROP) olarak ayarladıysak client beşinci dakikadan onuncu dakikaya kadar
drop’lanacak ve onuncu dakikanın sonunda rate limit tekrar hesaplancaktır.
Limit Modes:Connection
 İstemci için aktif işlem’leri (transaction) izler ve limiti belirler. Daima -limitType
BURSTY için kullanılır.
 Web böcekleri ve örümcekleri gibi pek çok eş zamanlı bağlantı açan web HTTP
trafikleri için kullanışlıdır.
Limit Modes: -maxBandwitdh
 İstemcinin başına bantgenişliği (kbits/sec) kullanımı
Threshold: İstekler (Eğer mode REQUEST_RATE seçili ise) her bir zaman aralığı için
izlendiğinde belirlenen zaman aralığında izin verilen maksimum istek sayısıdır. Bağlantılar
(mode CONNECTION seçildiyse) izlendiği zaman izin verilen toplam bağlantı sayısıdır.
Time Slice:İsteklerin dip eşik değerini (threshold) aşıp aşmadığını kontrol etmek için
izlendiği süre boyunca on milisaniyenin katları olarak milisaniye zaman aralığı.
Maximum Bandwith:İzin verilen maksimum bantgenişliği (kbps)
Traps:Konfigüre edilen zaman aralığında (timeslice) gönderilecek traps sayısını belirler.
Eğer 0 ise trap disable edilir. Aşağıda rate limit’in oluşturduğu trap’lar görünmektedir.
Netscaler GUI’den
1. AppExpert > Rate Limiting > Limit Identifier’den Add butonuna tıklayalım. Selector
kutusundan daha önce oluşturduğumuz Top_Client_URL selector’ünü seçelim. Mode
kutusundan REQUEST_RATE’i ve Limit Type olarak BURSTY seçelim. Time Slice
kutucuğuna 60000 ms ve Threshold kutucuğuna 1000 yazarak bir dakikada aynı
client’dan aynı URL’e yapılan istek eşik değerini 1000 olarak belirtmiş oluyoruz.
Limit Identifier Policy
Uygun olan Netcaler özelliğinde (rewrite,responder, DNS ve integrated cache gibi) bu kuralın
ayarlanmasıyla rate temelli uygulama davranışı yürürlüğe konulur. Trafik oranını analiz etmek
için kural ifadesinde aşağıda ki ifade kulanılmalıdır.
sys.check_limit(<limit_identifier>)
limit identifier daha önce oluşturulan limit idenfier’ın adı olmalıdır.
Kural ifadesi en az iki komponent içeren birleşik bir ifade olmalıdır:
 Kural’da ki İlk komponent rate limit identifier’ın uygulandığı trafiği belirtmek için kullanılan
ifade olmaldır. Örneğin: http.req.url.contains("my_aspx.aspx")
 Kuralda ki ikinci komponent rate limit identifier’i belirten ifade olmalıdır.
Örneğin; sys.check_limit("Top_Client_Url_Limit_Identifier ") . Bu kural’daki son ifade
olmalıdır.
Netscaler CLI ile rate-based policy konfigurasyonu
add cache|dns|rewrite|responder policy <policy_name> -rule expression &&
sys.check_limit("<LimitIdentifierName>") [<feature-specific information>]
add responder policy rate_limit_responder_policy "HTTP.REQ.URL.CONTAINS("my_aspx.asp
x") && SYS.CHECK_LIMIT("Top_Client_Url_Limit_Identifier")" NOOP -logAction rate_limit_ms
g_act
Netcaler GUI ile rate-based policy konfigurasyonu
1. Rate limit’i entegre etmek istediğiniz Netscaler özelliğini (Örneğin Integrated Caching,
Rewrite veya Responder) açalım ve Policies’e tıklayalım.
2. Deyay panosu’ndan Add butonuna tıklayalım. Name alanına tanımlayacağımız kural için
bir isim yazalım
3. Expression alanine poicy rule’unu yazalım ve sys.check_limit’i içerdiğinden emin olalım.
Action alanina rate limit identifier gerçekleştiğinde alınması gereken aksiyonu seçelim.
Action kısmı DROP ve RESET olabileceği gibi herhang bir sayfaya yönlendirmede
olabilir. Bizim örneğimizde NOOP seçerek herhangi bir aksiyon almasını istemediğimiz
belirtiyoruz. Bu karşın Log Action alanında rate limit sağlandığında ns.log ve newnslog’a
loglanmasını custom message action ile ayarlıyoruz. Özetle bu rate limit sağlandığında
herhangi bir aksiyon almayacak ama Netscaler /var/log altında ki ns.log’a istemci ip ve
istekte bulunduğu URL’ı yazacak. İlk aşamada action’ı DROP moda almamalı ve
belirlenen bir süre (bir gün veya bir hafta gibi ) sadece log action’ın ns.log’a yazdığı
custom message action çıktısı incelenerek en uygun threshold ve timeslice değerleri
belirlenmelidir.
4. Hazırladığımız responder policy üzerine sağ tıklayıp Policy Manager’ı seçelim
5. Rate limit responder policy’sini atamak istediğimiz atama noktasını seçelim. Bu örnekte
Load balancing virtual server’u seçiyoruz. Protokol olarak HTTP ve virtual server olarak
load balancing virtual server’umuzu seçelim.
6. Bu kısımda hazırladığımız rate limit responder policy’i seçip Bind butonuna tıklamalıyız.
Netscaler CLI ile Auditing Message Action ayarlanması
add audit messageaction rate_limit_msg_act ALERT ""Max request attempts detected from " +
CLIENT.IP.SRC + " to " + HTTP.REQ.URL + " within a 60 sec period. Possible brute force atta
ck
Netscaler GUI ile Auditing Message Action ayarlanması
1. Auditing>Message Action’a tıklayalım.Yeni bir message action eklemek için Add
butonuna tıklayalım. Log level kutusundan log ALERT’i seçelim. Expression alanına rate
limit sağlandığında ns.log’a yazılmasını istediğimiz mesaj’ı yazalım ve Create butonuna
tıklayalım.
Trafik Oranını Görmek
Eğer bir veya daha fazla virtual server üzerinden akan trafik rate-based policy’ye match
ediyorsa bu trafik oranını görebiliriz. Rate istatistik bilgileri rate-based policy içinde
kullandığımız limit identifier içinde bulunmaktadır.
Netscaler CLI ile trafik oranını görüntülemek
show ns limitSessions <limitIdentifier>
Primary> sh ns limitsessions Top_Client_Url_Limit_Identifier
1) Time Remaining: 109 secs Hits: 2 Action Taken: 0
Total Hash: 23768 Hash String: /common.js
IPs gathered:
1) 192.168.3.251
Active Transactions: 0
2) Time Remaining: 108 secs Hits: 2 Action Taken: 0
Total Hash: 656362 Hash String: /
IPs gathered:
1) 192.168.3.251
Active Transactions: 0
3) Time Remaining: 109 secs Hits: 2 Action Taken: 0
Total Hash: 664527 Hash String: /images/Green_citrixlogo.jpg
IPs gathered:
1) 192.168.3.251
Active Transactions: 0
Done
Netscaler GUI ile trafik oranını görüntülemek
1. AppExpert > Rate Limiting > Limit Identifiers gidelim ve trafik oranını görüntülemek
istediğimiz limit identifier’ı seçip mouse ile üzerinde sağ tıkladığımızda çıkan menüden
Show Sessions’ı seçelim.
Rate Limit’i Message Audit Action’dan görüntülemek,
Rate limit’in tetiklenip tetiklenmediğini ns.log dosyasından custom message action
oluşturuken kullandığımız "brute force attack" kelime dizisini grep’leyerek görebiliriz. Burda
hangi client ip’den hangi URL’e limit identifier’de belirlediğimiz limiti aştığını görebiliriz.
Dikkat edilmesi gereken önemli bir nokta ise şube bazlı çalışan müşteri ortamlarında NAT
üzerinden çıkan istemcilerin oluşturulan rate limit’i tetikleyebileceğidir. Bu nedenle şubelerin
internet çıkış ipleri ve merkez ofis internet çıkış ip’si özellikle false positive olduğu
düşünülerek responder rate-based policy’de rate limit dışında bırakılmalıdır.
root@ns# cd /var/log
root@ns# cat ns.log | grep "brute force attack"
Jan 5 22:50:50 <local0.alert> 127.0.0.2 01/05/2016:20:50:50 GMT 0-PPE-0 : default
RESPONDER Message 1856947 0 : "Max request attempts detected from 192.168.3.251
to / within a 60 sec period. Possible brute force attack"
Jan 5 22:50:50 <local0.alert> 127.0.0.2 01/05/2016:20:50:50 GMT 0-PPE-0 : default
RESPONDER Message 1856950 0 : "Max request attempts detected from 192.168.3.251
to /css/defaultstyles.css within a 60 sec period. Possible brute force attack"
Jan 5 22:50:50 <local0.alert> 127.0.0.2 01/05/2016:20:50:50 GMT 0-PPE-0 : default
RESPONDER Message 1856952 0 : "Max request attempts detected from 192.168.3.251
to /common.js within a 60 sec period. Possible brute force attack"
Jan 5 22:50:50 <local0.alert> 127.0.0.2 01/05/2016:20:50:50 GMT 0-PPE-0 : default
RESPONDER Message 1856954 0 : "Max request attempts detected from 192.168.3.251
to /images/index.jpg within a 60 sec period. Possible brute force attack"
Rate-Based Policy Örnekleri
 Bir URL’den saniye başına isteklerin sayısının sınırlanması
add stream selector ipStreamSelector http.req.url "client.ip.src"
add ns limitIdentifier ipLimitIdentifier -threshold 4 -timeSlice 1000
-mode request_rate -limitType smooth -selectorName ipStreamSelector
add responder action myWebSiteRedirectAction redirect
""http://www.mycompany.com/""
add responder policy ipLimitResponderPolicy "http.req.url.contains("myasp.asp")
&& sys.check_limit("ipLimitIdentifier")" myWebSiteRedirectAction
bind responder global ipLimitResponderPolicy 100 END -type default
-----------------------------------------------------------------------------------------------------------------
 Eğer istekte bulunan URL 20000 ms başına 5’i geçiyorsa response’un
cache’lenmesi
add stream selector cacheStreamSelector http.req.url
add ns limitidentifier cacheRateLimitIdentifier -threshold 5 -timeSlice 2000
-selectorName cacheStreamSelector
add cache policy cacheRateLimitPolicy -rule "http.req.method.eq(get)
&& sys.check_limit("cacheRateLimitIdentifier")" -action cache
bind cache global cacheRateLimitPolicy -priority 10
--------------------------------------------------------------------------------------------------------------------
 Eğer istekler rate limiti aşıyorsa www.yourcompany.com ‘dan isteklerde alınan
cookie’yi baz alarak bağlantının DROP’lanması.
add stream selector reqCookieStreamSelector "http.req.cookie
.value("mycookie")" "client.ip.src.subnet(24)"
add ns limitIdentifier myLimitIdentifier -Threshold 2 -timeSlice 3000
-selectorName reqCookieStreamSelector
add responder action sendRedirectUrl redirect '"http://www.mycompany.com"
+ http.req.url' -bypassSafetyCheck YES
add responder policy rateLimitCookiePolicy
"http.req.url.contains("www.yourcompany.com")
&& sys.check_limit("myLimitIdentifier")" sendRedirectUrl
----------------------------------------------------------------------------------------------------------------------
 Belirli bir istemci ip’si ve DNS alanadından istekler rate limiti aşıyorsa bir DNS
paketinin DROP’lanması
add stream selector dropDNSStreamSelector client.udp.dns.domain client.ip.src
add ns limitIdentifier dropDNSRateIdentifier -timeslice 20000 -mode request_rate
-selectorName dropDNSStreamSelector -maxBandwidth 1 -trapsintimeslice 20
add dns policy dnsDropOnClientRatePolicy "sys.check_limit
("dropDNSRateIdentifier")" -drop yes
------------------------------------------------------------------------------------------------------------------------
 Aynı subnet’ten (32 subnet mask) aynı hedef IP adresine gelen HTTP istek
sayısının limitlenmesi.
add stream selector ipv6_sel "CLIENT.IPv6.src.subnet(32)" CLIENT.IPv6.dst Q.URL
add ns limitIdentifier ipv6_id -imeSlice 20000 -selectorName ipv6_sel
add lb vserver ipv6_vip HTTP 3ffe::209 80 -persistenceType NONE -cltTimeout 180
add responder action redirect_page redirect ""http://redirectpage.com/""
add responder policy ipv6_resp_pol "SYS.CHECK_LIMIT("ipv6_id")" redirect_page
bind responder global ipv6_resp_pol 5 END -type DEFAULT

Weitere ähnliche Inhalte

Was ist angesagt?

Transport Layer Security (TLS)
Transport Layer Security (TLS)Transport Layer Security (TLS)
Transport Layer Security (TLS)Arun Shukla
 
Secure Socket Layer
Secure Socket LayerSecure Socket Layer
Secure Socket LayerNaveen Kumar
 
Transport layer security (tls)
Transport layer security (tls)Transport layer security (tls)
Transport layer security (tls)Kalpesh Kalekar
 
WiFi 6 - Usher in the Era of Next-Generation Connectivity
WiFi 6 - Usher in the Era of Next-Generation ConnectivityWiFi 6 - Usher in the Era of Next-Generation Connectivity
WiFi 6 - Usher in the Era of Next-Generation ConnectivityHughes Systique Corporation
 
Huawei Switch How To - Configuring a basic DHCP server
Huawei Switch How To - Configuring a basic DHCP serverHuawei Switch How To - Configuring a basic DHCP server
Huawei Switch How To - Configuring a basic DHCP serverIPMAX s.r.l.
 
Security in GSM(2G) and UMTS(3G) Networks
Security in GSM(2G) and UMTS(3G) NetworksSecurity in GSM(2G) and UMTS(3G) Networks
Security in GSM(2G) and UMTS(3G) NetworksNaveen Kumar
 
Intelligent networks, camel_services_and_applications_v1
Intelligent networks, camel_services_and_applications_v1Intelligent networks, camel_services_and_applications_v1
Intelligent networks, camel_services_and_applications_v1Tinniam V Ganesh (TV)
 
Wi fi and it’s applications
Wi fi and it’s applicationsWi fi and it’s applications
Wi fi and it’s applicationsSaad Mazhar
 
What is SSL ? The Secure Sockets Layer (SSL) Protocol
What is SSL ? The Secure Sockets Layer (SSL) ProtocolWhat is SSL ? The Secure Sockets Layer (SSL) Protocol
What is SSL ? The Secure Sockets Layer (SSL) ProtocolMohammed Adam
 
Transport Layer Security
Transport Layer SecurityTransport Layer Security
Transport Layer SecurityHuda Seyam
 
Avaya VoIP on Cisco Best Practices by PacketBase
Avaya VoIP on Cisco Best Practices by PacketBaseAvaya VoIP on Cisco Best Practices by PacketBase
Avaya VoIP on Cisco Best Practices by PacketBasePacketBase, Inc.
 

Was ist angesagt? (20)

Transport Layer Security (TLS)
Transport Layer Security (TLS)Transport Layer Security (TLS)
Transport Layer Security (TLS)
 
Transport layer security
Transport layer securityTransport layer security
Transport layer security
 
Cryptography
CryptographyCryptography
Cryptography
 
Secure Socket Layer
Secure Socket LayerSecure Socket Layer
Secure Socket Layer
 
Transport layer security (tls)
Transport layer security (tls)Transport layer security (tls)
Transport layer security (tls)
 
Cloud Security
Cloud SecurityCloud Security
Cloud Security
 
WiFi 6 - Usher in the Era of Next-Generation Connectivity
WiFi 6 - Usher in the Era of Next-Generation ConnectivityWiFi 6 - Usher in the Era of Next-Generation Connectivity
WiFi 6 - Usher in the Era of Next-Generation Connectivity
 
XML Encryption
XML EncryptionXML Encryption
XML Encryption
 
Huawei Switch How To - Configuring a basic DHCP server
Huawei Switch How To - Configuring a basic DHCP serverHuawei Switch How To - Configuring a basic DHCP server
Huawei Switch How To - Configuring a basic DHCP server
 
Network security at_osi_layers
Network security at_osi_layersNetwork security at_osi_layers
Network security at_osi_layers
 
Security in GSM(2G) and UMTS(3G) Networks
Security in GSM(2G) and UMTS(3G) NetworksSecurity in GSM(2G) and UMTS(3G) Networks
Security in GSM(2G) and UMTS(3G) Networks
 
Ch02...1
Ch02...1Ch02...1
Ch02...1
 
Intelligent networks, camel_services_and_applications_v1
Intelligent networks, camel_services_and_applications_v1Intelligent networks, camel_services_and_applications_v1
Intelligent networks, camel_services_and_applications_v1
 
Wi fi and it’s applications
Wi fi and it’s applicationsWi fi and it’s applications
Wi fi and it’s applications
 
What is SSL ? The Secure Sockets Layer (SSL) Protocol
What is SSL ? The Secure Sockets Layer (SSL) ProtocolWhat is SSL ? The Secure Sockets Layer (SSL) Protocol
What is SSL ? The Secure Sockets Layer (SSL) Protocol
 
Nokia 5529 SDC 9.4.pptx
Nokia 5529 SDC 9.4.pptxNokia 5529 SDC 9.4.pptx
Nokia 5529 SDC 9.4.pptx
 
Transport Layer Security
Transport Layer SecurityTransport Layer Security
Transport Layer Security
 
WiFi - IEEE 802.11
WiFi - IEEE 802.11WiFi - IEEE 802.11
WiFi - IEEE 802.11
 
Avaya VoIP on Cisco Best Practices by PacketBase
Avaya VoIP on Cisco Best Practices by PacketBaseAvaya VoIP on Cisco Best Practices by PacketBase
Avaya VoIP on Cisco Best Practices by PacketBase
 
SSL
SSLSSL
SSL
 

Netscaler Rate limit

  • 1. RATE LIMIT Rate limit özeliği belirli bir zaman aralığında bir kaynağın kullanabileceği maksimum yükü belirterek ağ ve onun kaynaklarının bir saldırgan tarafından istilaya uğramasını önler. Örneğin ip temelli böcekler ve örümcekler (crawler/spider) tarafından ağ sunucularının aşırı yüklenmesinin önlenmesine yarımdımcı olur. Rate limit özelliği Citrix Netscaler üzerinde ki belirli bir network birimi veya virtual birim için maksimum yükü tanımlamamıza olanak sağlar. Bu özellik bize bu birim ile bağlantılı trafik oranını izlemek için Netscaler’i konfigüre etmemize ve trafik oranına göre gerçek zamanlı önleyici eylemler almamıza olanak sağlar. Bu özellik, Netscaler’a istekleri bir sel gibi gönderen bir saldırgan tarafından ağ saldırıya maruz kaldığında özellikle kullanışlıdır. Böylelikle istemciler için kaynak uygunluğunu etkileyen riskleri hafifletebilir ve Netscaler’ın yönettiği ağ kaynaklarını ve güvenirliğini iyileştirebilirsiniz. Virtual server, URL, domain ve domain ve URL kombinasyonlarını içeren kullanıcı tanımlı ve virtual birimlerle bağlantılı trafik oranlarını kontrol edebilir ve izleyebilirsiniz. Eğer trafik çok yüksek ise trafik oranını kısabilir ve trafik oranını önceden belirlenen limitleri aştıysa trafiği belirli bir virtual server’a yönlendirebilirsiniz. HTTP,TCP ve DNS istekleri için oran temelli İzleme uygulanabilir. Belirli senaryolar da trafik oranını izemek için bir “rate limit identifier” oluşturulmalıdır. “Rate limit identifier” “Time Slice” olarak adlandırılan belirli bir zaman aralığında özel bir tipte ki bağlantıların ve isteklerin maksimum değerleri gibi sayısal eşik değerlerini tanımlar.
  • 2. İsteğe bağlı olarak “stream selector” olarak bilinen filitreler tanımlayabilir ve “rate limit identifier” ayarlandığı esnada “stream selector” ‘leri “rate limit identifier” ile ilişkilendirebilirsiniz. Isteğe bağlı “stream selector” leri oluşturup “limit identifier”’e bağladıktan sonra limit identifier’ı tanımladığınız bir policy içinden çağırmalısınız. Rate limit identifier’leri rewrite,responder, DNS ve integrated cache policy’lerinden çağırmanız bazı senaryolarda çok kullanışlı olacaktır. Rate limit kullanım senaryoları DNS rate limit Belirli bir DNS istemcisinin çok fazla DNS lookup isteği yapmasını önleyerek DNS base Dos saldırlar önlenebilir. Boot Limit Belirli bir kaynaktan elverişli olduğundan daha hızlı sunulan istekleri önlemeye yardımcı olur. Attack Prevention/Application Protection İşlemci yükünü arttıran CGI saldırılarını önler. Brute Force login girişimleri Tek bir kaynaktan bir login sayfasına erişimi sınırlar. Stream Selector Yapılandırma Trafik Stream Selector erişimi kısmak istenilen bir birimi belirtmek için tanımlanan isteğe bağlı bir filitredir. Selector isteğe ve yanıta uygulanır ve rate stream identifier tarafından analiz edilecek olan veri noktalarını seçer. Bu veri noktaları hemen hemen IP adresi, subnet, domain adı, TCP veya UDP identifier ve özel string veya URL’lerde ki uzantılar gibi karekteristik özellikleri temel alabilir. Bir stream selector birbirinden ayrı birleşik olmayan expression’lardan oluşur. Bir trafik stream selector maksimum beş adet expression içerebilir. Her bir expression birbirine AND ile bağlıdır. Örneğin aşağıda örneği incelersek top_client_url selector’ü birbirinden ayrı birleşik olmayan iki ayrı expression içermektedir. Bu selector özetle aynı istemci ip’sinden aynı url’e olan istekler için veri noktaları oluşturur. Örnek; HTTP.REQ.URL CLIENT.IP.SRC HTTP.RE.URL CLIENT.IP.SRC
  • 3. Netscaler CLI’dan trafik stream selector yapılandırmak için; add stream selector <name> <rule> ... Örnek Primary> add stream selector top_client_url HTTP.REQ.URL CLIENT.IP.SRC Netscaler GUI’den trafik stream selector yapılandırmak için; 1. AppExpert > Rate Limiting > Selectors’den Add butonuna tıklayalım. HTTP.REQ.URL ve CLIENT.IP.SRC expression’larını Insert butonuna tıklayarak ekledikten sonra Ok butonuna tıklayalım. Trafik Rate Limit Identifier Tanımlama Eğer stream selector ile ayarlanan trafik miktarı belirli bir zaman aralığında sayısal bir limiti aşıyorsa rate limit identifier maktıksal TRUE değerini döner. Netscaler CLI’dan traffic limit identifier tanımlama add ns limitIdentifier <limitIdentifier> -threshold <positive_integer> -timeSlice <positive_integer> -mode<mode> -limitType ( BURSTY | SMOOTH ) -selectorName <string> -maxBandwidth <positive_integer> -trapsInTimeSlice <positive_integer> SelectorName:Rate limit selector’ünün adıdır. Eğer bu alan NULL ise limit identifier’in virtual server’a veya global olarak bağlı olup olmamasına göre, rate limiting, virtual server veya Netscaler tarafından alınan bütün tafiğe herhangi bir filitre olmaksızın uygulanır. Limit Modes: Request Rate  Belirli bir zaman aralığında ki (time slice) istekleri izler.10 ms’nin katları olarak belirtilir.  -limit Type SMOOTH:
  • 4. Bir Leaky Bucket yaklaşımıdır. Kullanıcın sabit oranda yeni bağlantı kurduğu trafik pattern’inde kullanışlıdır.Aralık boyunca eşit bir dağılım gösterir.(her on ms’de on istek gibi). Netscaler istekleri 10/ms’de bir izler. Örneğin 200 ms başına 4 istek belirtilmişseniz, Netscaler her 50 ms’de 1 istek oranını izler.  -limitType BURST: TimeSlice ile belirtilen zaman aralığında herhangi bir zaman istemcinin yaptığı istek sayısının istemciye tanımlanan kotayı doldurduğu Token Bucket yaklaşımıdır. Trafiğin çoğu belirli bir aralıkta tek bir noktaya gelir.(Örneğin bir saniyelik bir aralığın ilk 10 ms’si) .Kullanıcı eriştiğinde kısa ve şiddetli bir aktivite ve sonrasında kullanıcı sayfayı okurken aktivitenin olmadığı durum burst (patlamalı) uygulamaya güzel bir örnektir. Burda dikkat edilmesi gereken nokta TimeSlice olarak belirlediğimiz zaman aralığının herhanangi bir noktasında threshold değeri aşıldığında aşılan saniyeden TimeSlice süresinin sonuna kadar eğer responder action DROP seçilmişse drop’lanacaktır. Örneğin Aynı client ip’sinden aynı URL’e gelen istek oraını 10 dakikada 1000 istek olarak ayardıysak ve Beşinci dakikada bu şart sağlandıysa ve responder policy’de bu şart sağlandığında uygulanacak eylemi (action) bağlantıyı düşürmek (DROP) olarak ayarladıysak client beşinci dakikadan onuncu dakikaya kadar drop’lanacak ve onuncu dakikanın sonunda rate limit tekrar hesaplancaktır. Limit Modes:Connection  İstemci için aktif işlem’leri (transaction) izler ve limiti belirler. Daima -limitType BURSTY için kullanılır.  Web böcekleri ve örümcekleri gibi pek çok eş zamanlı bağlantı açan web HTTP trafikleri için kullanışlıdır. Limit Modes: -maxBandwitdh  İstemcinin başına bantgenişliği (kbits/sec) kullanımı Threshold: İstekler (Eğer mode REQUEST_RATE seçili ise) her bir zaman aralığı için izlendiğinde belirlenen zaman aralığında izin verilen maksimum istek sayısıdır. Bağlantılar (mode CONNECTION seçildiyse) izlendiği zaman izin verilen toplam bağlantı sayısıdır. Time Slice:İsteklerin dip eşik değerini (threshold) aşıp aşmadığını kontrol etmek için izlendiği süre boyunca on milisaniyenin katları olarak milisaniye zaman aralığı. Maximum Bandwith:İzin verilen maksimum bantgenişliği (kbps) Traps:Konfigüre edilen zaman aralığında (timeslice) gönderilecek traps sayısını belirler. Eğer 0 ise trap disable edilir. Aşağıda rate limit’in oluşturduğu trap’lar görünmektedir.
  • 5. Netscaler GUI’den 1. AppExpert > Rate Limiting > Limit Identifier’den Add butonuna tıklayalım. Selector kutusundan daha önce oluşturduğumuz Top_Client_URL selector’ünü seçelim. Mode kutusundan REQUEST_RATE’i ve Limit Type olarak BURSTY seçelim. Time Slice kutucuğuna 60000 ms ve Threshold kutucuğuna 1000 yazarak bir dakikada aynı client’dan aynı URL’e yapılan istek eşik değerini 1000 olarak belirtmiş oluyoruz.
  • 6. Limit Identifier Policy Uygun olan Netcaler özelliğinde (rewrite,responder, DNS ve integrated cache gibi) bu kuralın ayarlanmasıyla rate temelli uygulama davranışı yürürlüğe konulur. Trafik oranını analiz etmek için kural ifadesinde aşağıda ki ifade kulanılmalıdır. sys.check_limit(<limit_identifier>) limit identifier daha önce oluşturulan limit idenfier’ın adı olmalıdır.
  • 7. Kural ifadesi en az iki komponent içeren birleşik bir ifade olmalıdır:  Kural’da ki İlk komponent rate limit identifier’ın uygulandığı trafiği belirtmek için kullanılan ifade olmaldır. Örneğin: http.req.url.contains("my_aspx.aspx")  Kuralda ki ikinci komponent rate limit identifier’i belirten ifade olmalıdır. Örneğin; sys.check_limit("Top_Client_Url_Limit_Identifier ") . Bu kural’daki son ifade olmalıdır. Netscaler CLI ile rate-based policy konfigurasyonu add cache|dns|rewrite|responder policy <policy_name> -rule expression && sys.check_limit("<LimitIdentifierName>") [<feature-specific information>] add responder policy rate_limit_responder_policy "HTTP.REQ.URL.CONTAINS("my_aspx.asp x") && SYS.CHECK_LIMIT("Top_Client_Url_Limit_Identifier")" NOOP -logAction rate_limit_ms g_act Netcaler GUI ile rate-based policy konfigurasyonu 1. Rate limit’i entegre etmek istediğiniz Netscaler özelliğini (Örneğin Integrated Caching, Rewrite veya Responder) açalım ve Policies’e tıklayalım. 2. Deyay panosu’ndan Add butonuna tıklayalım. Name alanına tanımlayacağımız kural için bir isim yazalım 3. Expression alanine poicy rule’unu yazalım ve sys.check_limit’i içerdiğinden emin olalım. Action alanina rate limit identifier gerçekleştiğinde alınması gereken aksiyonu seçelim. Action kısmı DROP ve RESET olabileceği gibi herhang bir sayfaya yönlendirmede olabilir. Bizim örneğimizde NOOP seçerek herhangi bir aksiyon almasını istemediğimiz belirtiyoruz. Bu karşın Log Action alanında rate limit sağlandığında ns.log ve newnslog’a loglanmasını custom message action ile ayarlıyoruz. Özetle bu rate limit sağlandığında herhangi bir aksiyon almayacak ama Netscaler /var/log altında ki ns.log’a istemci ip ve istekte bulunduğu URL’ı yazacak. İlk aşamada action’ı DROP moda almamalı ve belirlenen bir süre (bir gün veya bir hafta gibi ) sadece log action’ın ns.log’a yazdığı custom message action çıktısı incelenerek en uygun threshold ve timeslice değerleri belirlenmelidir.
  • 8. 4. Hazırladığımız responder policy üzerine sağ tıklayıp Policy Manager’ı seçelim 5. Rate limit responder policy’sini atamak istediğimiz atama noktasını seçelim. Bu örnekte Load balancing virtual server’u seçiyoruz. Protokol olarak HTTP ve virtual server olarak load balancing virtual server’umuzu seçelim.
  • 9. 6. Bu kısımda hazırladığımız rate limit responder policy’i seçip Bind butonuna tıklamalıyız.
  • 10.
  • 11. Netscaler CLI ile Auditing Message Action ayarlanması add audit messageaction rate_limit_msg_act ALERT ""Max request attempts detected from " + CLIENT.IP.SRC + " to " + HTTP.REQ.URL + " within a 60 sec period. Possible brute force atta ck Netscaler GUI ile Auditing Message Action ayarlanması 1. Auditing>Message Action’a tıklayalım.Yeni bir message action eklemek için Add butonuna tıklayalım. Log level kutusundan log ALERT’i seçelim. Expression alanına rate limit sağlandığında ns.log’a yazılmasını istediğimiz mesaj’ı yazalım ve Create butonuna tıklayalım. Trafik Oranını Görmek Eğer bir veya daha fazla virtual server üzerinden akan trafik rate-based policy’ye match ediyorsa bu trafik oranını görebiliriz. Rate istatistik bilgileri rate-based policy içinde kullandığımız limit identifier içinde bulunmaktadır. Netscaler CLI ile trafik oranını görüntülemek show ns limitSessions <limitIdentifier> Primary> sh ns limitsessions Top_Client_Url_Limit_Identifier 1) Time Remaining: 109 secs Hits: 2 Action Taken: 0 Total Hash: 23768 Hash String: /common.js IPs gathered:
  • 12. 1) 192.168.3.251 Active Transactions: 0 2) Time Remaining: 108 secs Hits: 2 Action Taken: 0 Total Hash: 656362 Hash String: / IPs gathered: 1) 192.168.3.251 Active Transactions: 0 3) Time Remaining: 109 secs Hits: 2 Action Taken: 0 Total Hash: 664527 Hash String: /images/Green_citrixlogo.jpg IPs gathered: 1) 192.168.3.251 Active Transactions: 0 Done Netscaler GUI ile trafik oranını görüntülemek 1. AppExpert > Rate Limiting > Limit Identifiers gidelim ve trafik oranını görüntülemek istediğimiz limit identifier’ı seçip mouse ile üzerinde sağ tıkladığımızda çıkan menüden Show Sessions’ı seçelim.
  • 13. Rate Limit’i Message Audit Action’dan görüntülemek, Rate limit’in tetiklenip tetiklenmediğini ns.log dosyasından custom message action oluşturuken kullandığımız "brute force attack" kelime dizisini grep’leyerek görebiliriz. Burda hangi client ip’den hangi URL’e limit identifier’de belirlediğimiz limiti aştığını görebiliriz. Dikkat edilmesi gereken önemli bir nokta ise şube bazlı çalışan müşteri ortamlarında NAT üzerinden çıkan istemcilerin oluşturulan rate limit’i tetikleyebileceğidir. Bu nedenle şubelerin internet çıkış ipleri ve merkez ofis internet çıkış ip’si özellikle false positive olduğu düşünülerek responder rate-based policy’de rate limit dışında bırakılmalıdır. root@ns# cd /var/log root@ns# cat ns.log | grep "brute force attack" Jan 5 22:50:50 <local0.alert> 127.0.0.2 01/05/2016:20:50:50 GMT 0-PPE-0 : default RESPONDER Message 1856947 0 : "Max request attempts detected from 192.168.3.251 to / within a 60 sec period. Possible brute force attack" Jan 5 22:50:50 <local0.alert> 127.0.0.2 01/05/2016:20:50:50 GMT 0-PPE-0 : default RESPONDER Message 1856950 0 : "Max request attempts detected from 192.168.3.251 to /css/defaultstyles.css within a 60 sec period. Possible brute force attack" Jan 5 22:50:50 <local0.alert> 127.0.0.2 01/05/2016:20:50:50 GMT 0-PPE-0 : default RESPONDER Message 1856952 0 : "Max request attempts detected from 192.168.3.251 to /common.js within a 60 sec period. Possible brute force attack" Jan 5 22:50:50 <local0.alert> 127.0.0.2 01/05/2016:20:50:50 GMT 0-PPE-0 : default RESPONDER Message 1856954 0 : "Max request attempts detected from 192.168.3.251 to /images/index.jpg within a 60 sec period. Possible brute force attack" Rate-Based Policy Örnekleri  Bir URL’den saniye başına isteklerin sayısının sınırlanması add stream selector ipStreamSelector http.req.url "client.ip.src" add ns limitIdentifier ipLimitIdentifier -threshold 4 -timeSlice 1000 -mode request_rate -limitType smooth -selectorName ipStreamSelector add responder action myWebSiteRedirectAction redirect ""http://www.mycompany.com/"" add responder policy ipLimitResponderPolicy "http.req.url.contains("myasp.asp") && sys.check_limit("ipLimitIdentifier")" myWebSiteRedirectAction bind responder global ipLimitResponderPolicy 100 END -type default -----------------------------------------------------------------------------------------------------------------  Eğer istekte bulunan URL 20000 ms başına 5’i geçiyorsa response’un cache’lenmesi add stream selector cacheStreamSelector http.req.url add ns limitidentifier cacheRateLimitIdentifier -threshold 5 -timeSlice 2000 -selectorName cacheStreamSelector
  • 14. add cache policy cacheRateLimitPolicy -rule "http.req.method.eq(get) && sys.check_limit("cacheRateLimitIdentifier")" -action cache bind cache global cacheRateLimitPolicy -priority 10 --------------------------------------------------------------------------------------------------------------------  Eğer istekler rate limiti aşıyorsa www.yourcompany.com ‘dan isteklerde alınan cookie’yi baz alarak bağlantının DROP’lanması. add stream selector reqCookieStreamSelector "http.req.cookie .value("mycookie")" "client.ip.src.subnet(24)" add ns limitIdentifier myLimitIdentifier -Threshold 2 -timeSlice 3000 -selectorName reqCookieStreamSelector add responder action sendRedirectUrl redirect '"http://www.mycompany.com" + http.req.url' -bypassSafetyCheck YES add responder policy rateLimitCookiePolicy "http.req.url.contains("www.yourcompany.com") && sys.check_limit("myLimitIdentifier")" sendRedirectUrl ----------------------------------------------------------------------------------------------------------------------  Belirli bir istemci ip’si ve DNS alanadından istekler rate limiti aşıyorsa bir DNS paketinin DROP’lanması add stream selector dropDNSStreamSelector client.udp.dns.domain client.ip.src add ns limitIdentifier dropDNSRateIdentifier -timeslice 20000 -mode request_rate -selectorName dropDNSStreamSelector -maxBandwidth 1 -trapsintimeslice 20 add dns policy dnsDropOnClientRatePolicy "sys.check_limit ("dropDNSRateIdentifier")" -drop yes ------------------------------------------------------------------------------------------------------------------------  Aynı subnet’ten (32 subnet mask) aynı hedef IP adresine gelen HTTP istek sayısının limitlenmesi. add stream selector ipv6_sel "CLIENT.IPv6.src.subnet(32)" CLIENT.IPv6.dst Q.URL add ns limitIdentifier ipv6_id -imeSlice 20000 -selectorName ipv6_sel add lb vserver ipv6_vip HTTP 3ffe::209 80 -persistenceType NONE -cltTimeout 180 add responder action redirect_page redirect ""http://redirectpage.com/"" add responder policy ipv6_resp_pol "SYS.CHECK_LIMIT("ipv6_id")" redirect_page bind responder global ipv6_resp_pol 5 END -type DEFAULT