Amaç:
www.tnetshop.com adresine Farklı Location’ lardan (Hindistan, Rusya, Amerika, Çin gibi farklı Ülkelerden) gelen istekleri Citrix ADC (Netscaler) cihazının üzerinde bloklanmasını talep ediyoruz.
Bu işlemi Citrix ADC (Netscaler) cihazında bloklamak için GeoIP2 database’i yükleyebiliriz. Citrix ADC (Netscaler) cihazı eskiden Maxmind’ın Geoip formatını (yeni ismi ile GeoIP Legacy) desteklemekteydi ancak Maxmind firması şuan GeoIP Legacy yerine GeoIP2 formatını desteklemektedir.
Bilgi:
Statik proximity veri tabanına sahip UNIX tabanlı bir ASCII dosyasıdır. Bu veritabanına bir konum dosyasından eklenen girişlere statik girişler denir. Citrix ADC (Netscaler) cihazına sadece bir adet konum dosyası yüklenebilmektedir.
Varolan dosyanın üzerine yeni bir dosya eklerseniz bir öncekini geçersiz kılacaktır.
Bu database dosyaları Citrix ADC (Netscaler) cihazı tarafından desteklenen bir formatta / var / netscaler / inbuilt_db dizininde bulunmaktadır.
Citrix ADC (Netscaler) cihazı GeoIP2 database’ini netscaler formatına dönüştürebilmesi için bir Converter Tool kullanmanız gerekmektedir.
Maxmind firmasını hem ücretli hem de ücretsiz versiyonu bulunmaktadır. Ücretsiz versiyonda kullanılabilir ancak ücretli versiyon daha sık güncellenmekte ve daha güvenilirdir.
Ücretsiz Versiyon: GeoLite2 database
Ücretli Versiyon: GeoIP2 database
Bu makaleyi hazırlarken ben GeoLite2 database’ ini kullanarak yazdım.
Talimatlar:
1) Maxmind’ dan GeoIP2’yi indirdirme
Maxmind gibi GeoIP2 database indirebileceğimiz firmalardan da bulup indirebilirsiniz ancak ben testlerimi Maxmind’ dan GeoIP2 database’ ini indirerek yaptım. Link aşağıda mevcuttur.
GeoIP2 yi indirirken GeoLite2 Country ve CSV formatında indirmemiz gerekmektedir.
1.1) İndirme işlemini tamamladıktan sonra WinSCP programını kullanarak indirmiş olduğumuz dosyayı;
- /var/netscaler/locdb dizisinin içine yüklüyoruz.

2) Citrix ADC (Netscaler) Cihazına Converter Tool’ u indirme.
Citrix ADC (Netscaler) cihazının GeoIP2’ yi kendi formatında çalıştırabilmesi için Sıkript’e yani Converter tool’ a ihtiyacı vardır.
Converter Tool’ u indirmek için aşağıdaki link’ i kullanabilirsiniz.
https://github.com/citrix/MaxMind-GeoIP-Database-Conversion-Citrix-ADC-Format
2.1) Converter Tool’ u indirme işlemini yaptıktan sonra, Converter Tool’u :
- /var/netscaler/locdb dizisinin içine yüklüyoruz.

3) Converter Tool’ u Çalıştırma
Converter Tool’ u /var/netscaler/locdb klasörünün içine yükledikten sonra ssh il Converter Tool’u çalıştırıyoruz.
SSH’ la bağlandıktan sonra sırasıyla aşağıdaki komutları çalıştırıyoruz;
> shell
Copyright (c) 1992-2013 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
root@CitrixADC# cd /var/netscaler/locdb/
root@CitrixADC# chmod +x Convert_GeoIPDB_To_Netscaler_Format_WithContinent.pl
root@CitrixADC#
3.1) Geoip2 Database’i Citrix ADC (Netscaler) Formatına Dönüştürme
Converter Tool’ u çalıştırdıktan sonra Perl işlemini yani GeoIP2 database’ ini netscaler formatına çeviriyoruz. Burada Perl etmemiz gereken dosyalar;
GeoLite2-Country-Blocks-IPv4.csv
GeoLite2-Country-Blocks-IPv6.csv
GeoLite2-Country-Locations-en.csv
SSH’ la bağlandıktan sonra sırasıyla aşağıdaki komutları çalıştırıyoruz;
root@CitrixADC# perl Convert_GeoIPDB_To_Netscaler_Format_WithContinent.pl -b GeoLite2-Country-Blocks-IPv4.csv -i GeoLite2-Country-Blocks-IPv6.csv -l GeoLite2-Country-Locations-en.csv
Converting the file to netscaler format….
Converting the file to netscaler format….
root@CitrixADC#
3.2) Perl işlemini Tamamladıktan Sonra;
Perl ettiğimiz yani Netscaler formatına dönüştürdüğümüz dosya zip’ li bir dosya olarak oluşturulur. Netscaler’ a bind etmemiz için zip’ li dosyayı açmamız gerekmektedir:
root@CitrixADC# gunzip Netscaler_Maxmind_GeoIP_DB_IPv4.csv.gz
root@CitrixADC# ls
COPYRIGHT.txt
LICENSE.txt
Netscaler_Maxmind_GeoIP_DB_IPv4.csv
Netscaler_Maxmind_GeoIP_DB_IPv6.csv.gz
4) Netscaler’ a Bind Etme
Netscaler formatına çevirdiğimiz GeoIP2 databse’ ini Citrix ADC (Netscaler) cihazına bind ediyoruz.
> add locationfile /var/netscaler/locdb/Netscaler_Maxmind_GeoIP_DB_IPv4.csv
Done
4.1) Location Wildcard Parameter
Citrix ADC (Netscaler) cihazında Wildcard “yes” olarak değil de “no” olarak geliyor. Bu komut yalnızca NetScaler 11.1 build 53.11 ve üst versiyonları için geçerlidir.
Wildcard’ ı “yes” olarak ayarlamak için:
> set locationParameter -matchWildcardtoany YES
5) Eklenen GeoIP2 Database Kontrolü
Bu komutu yazmamızın amacı eklemiş olduğumuz GeoIP2 database’ inde hata alıp almadığımızı kontrol etmektir. Görüldüğü üzere 323920 satır okunmuş ve 0 hata alınmıştır.
> show locationparameter
Static Proximity
—————-
Database mode: File
Flushing: Idle; Loading: Idle
Context: geographic
Qualifier 1 label: Continent
Qualifier 2 label: Country_Code
Qualifier 3 label: Subdivision_1_Name
Qualifier 4 label: Subdivision_2_Name
Qualifier 5 label: City
Qualifier 6 label: Organization
IPv4 Location file (format: netscaler):
/var/netscaler/locdb/Netscaler_Maxmind_GeoIP_DB_IPv4.csv
Lines: 323920 Warnings: 0 Errors: 0
Current static entries: 323913 Current custom entries: 0
IPv6 Location File
Location file (format: ):
Not loaded
Lines: 0 Warnings: 0 Errors: 0
Current static entries: 0 Current custom entries: 0
Match wildcard qualifier to any: YES
Done
6) Senaryomuza Göre Policy Oluşturma:
Citrix ADC (Netscaler) cihazında www.tnetshop.com adresine farklı location’lardan yapılan istekleri bloklamak için Responder Policy oluşturarak block işlemini gerçekleştirebiliriz.
- AppExpert > Responder > Responder Policy > Add

- Name: Turkiye-Harici-Blok
- Action: RESET
Expression: CLIENT.IP.SRC.MATCHES_LOCATION(“*.TR.*.*.*.*”).NOT
Not: Ben action olarak RESET kullandım, isterseniz action’ ı DROP da kullanabilirsiniz.

7) İlgili Virtual Server’ a bind etme.
Traffic Management > Load Balancing > Virtual Server ‘ üzerine sağ tıklayıp Edit’liyoruz:

7.1) Policy Bind Etme
Edit’ ledikte sonra Policies tabını add’ liyoruz.

- Oluşturduğumuz Policy’nin type’ını şeçiyoruz:

- Policy Binding’ den oluşturmuş olduğumuz policy’i seçmek için Click to select’ i seçiyoruz:

- Oluşturmuş olduğumuz Responder policy’ i seçip Select’ e tıklıyoruz.

- Policy’ imizin Priority’ sini belirledikten sonra Bind işlemini tamamlayabiliriz.

8) Policy’ i Test Etme
- Policy’i devreye alamadan siteyi kontrol ediyorum.

Site çalışmaktadır.
2. Policy’i devreye aldıktan sonra aşağıda da görüldüğü üzere sayfamız RESET dönmektedir.

3. Aşağıda da görüldüğü üzere Policy’miz hit etmektedir.
