Bu rehberde GeoIP modüllerini, veritabanı yapılandırmasını ve ülke/ASN bilgisini katmanlı erişim kontrolünde nasıl kullanacağınızı ele alıyoruz.
1. Hangi GeoIP modülü?
UnrealIRCd belgelerine göre kullanılabilen modüller şunlardır:
| Modül | Durum | Not |
|---|---|---|
| geoip_mmdb | 6.2.4 ve sonrasında yeni kurulumlarda varsayılan | MaxMind MMDB biçimi, ASN veritabanı desteği |
| geoip_classic | Yükseltilen kurulumlarda varsayılan olarak kalabilir | Eski GeoIP.dat biçimi |
| geoip_csv | İsteğe bağlı | GeoLite2 CSV dosyalarıyla çalışır |
| geoip_maxmind | 6.2.4 ile kaldırıldı | Yerine geoip_mmdb kullanılır |
Eski bir sürümden yükseltme yaptıysanız hangi modülün yüklü olduğunu kontrol edin. Yalnızca bir GeoIP modülü yüklenmelidir; modül değiştirirken diğerini yüklemeyi bırakın.
2. Veritabanı yapılandırması
geoip_mmdb için ülke ve ASN veritabanları ayrı ayrı belirtilir:
CODE TERMINAL
loadmodule "geoip_mmdb";
set {
geoip-mmdb {
database "GeoLite2-Country.mmdb";
asn-database "GeoLite2-ASN.mmdb";
}
}Klasik modülde IPv4 ve IPv6 için ayrı dosyalar kullanılır:
CODE TERMINAL
set {
geoip-classic {
ipv4-database "GeoIP.dat";
ipv6-database "GeoIPv6.dat";
}
}CSV modülü ise blok ve ülke dosyalarını ister:
CODE TERMINAL
set {
geoip-csv {
ipv4-blocks-file "GeoLite2-Country-Blocks-IPv4.csv";
ipv6-blocks-file "GeoLite2-Country-Blocks-IPv6.csv";
countries-file "GeoLite2-Country-Locations-en.csv";
}
}GeoIP veritabanları zamanla eskir; IP blokları el değiştirdikçe yanlış eşleşmeler artar. Veritabanlarını düzenli güncellemek ve güncelleme sonrasında /REHASH ile yapılandırmayı yeniden yüklemek iyi bir alışkanlıktır. MaxMind GeoLite2 dosyalarını kullanıyorsanız lisans koşullarını da gözden geçirin.
3. Ülke bilgisini görmek
Modül yüklendikten sonra IRCop'lar /WHOIS çıktısında kullanıcının ülkesini görür. Bağlantı bildirimlerinde (snomask) de [country: NL] biçiminde bir alan yer alır. Kural yazmadan önce birkaç gün bu bildirimleri izlemek, saldırı trafiğinin gerçekten hangi ülke ve ağlardan geldiğini görmenizi sağlar. Böylece yalnızca tahmine dayalı geniş engeller koymaktan kaçınırsınız.
4. Extended server ban: GLINE ve ELINE
UnrealIRCd, sunucu ban'larında ~country ve ~asn extended ban türlerini destekler:
CODE TERMINAL
/GLINE ~country:BD 1d Bu bölgeden yoğun flood nedeniyle geçici engel
/GLINE ~asn:64496 7d Kötüye kullanılan barındırma ağı
/ELINE ~country:GR G 0 Bu ülkeden gelenler GLINE'dan muafBurada dikkat edilmesi gereken nokta süre seçimidir. Ülke bazlı ban'lar çok sayıda meşru kullanıcıyı etkiler. Bu yüzden kalıcı engel yerine saldırı süresiyle sınırlı, süreli ban'lar tercih edilmelidir. Örneklerdeki 64496, belgelendirme için ayrılmış bir ASN'dir; kendi ortamınızda gerçek değerleri kullanın.
5. Kanal düzeyinde ülke ban'ı
Kanal operatörleri de extended ban ile ülke bazlı engel koyabilir:
CODE TERMINAL
/MODE #kanal +b ~country:BEBu yöntem, ağ genelinde engel gerektirmeyen, yalnızca belirli bir kanala yönelen saldırılarda kullanışlıdır. Ancak ağ yöneticisi olarak kanal ban'larının kötüye kullanılabileceğini de akılda tutun.
6. Security-group ile katmanlı erişim
En esnek yöntem, ülke ve ASN bilgisini security-group bloklarında mask item olarak kullanmaktır. Aşağıdaki örnek, belirli ülkelerden gelen ve hesabıyla kimlik doğrulaması yapmamış kullanıcıları ayrı bir grupta toplar:
CODE TERMINAL
security-group riskli-bolge {
country { XX; YY; }
exclude-identified yes;
}
security-group supheli-hosting {
asn { 64496; 64497; }
exclude-identified yes;
}Buradaki XX ve YY yer tutucudur; kendi günlüklerinizde saldırı kaynağı olarak gördüğünüz ülke kodlarını yazın. exclude- önekli öğeler tüm mask item'lar için kullanılabilir: exclude-country, exclude-asn veya exclude-identified gibi.
Bu gruplar tanımlandıktan sonra tamamen engellemek yerine daha yumuşak önlemler uygulanabilir. Örneğin yalnızca kimlik doğrulaması yapmış kullanıcıların bağlanabileceği bir kural:
CODE TERMINAL
ban user {
mask {
security-group riskli-bolge;
}
reason "Bu bölgeden bağlanmak için SASL ile giriş yapmanız gerekir";
}Bu kalıp, sitemizdeki SASL rehberinde anlatılan kimlik doğrulama yapısıyla birlikte kullanıldığında etkili olur: Kayıtlı kullanıcılar SASL ile bağlanıp gruptan çıkar, saldırgan botlar ise dışarıda kalır.
7. Güvenilen kullanıcılar için istisna
Bir ülkeyi hedefleyen bir kural, o ülkedeki gerçek topluluk üyelerini de etkiler. except ban bloğuyla güvenilen hesapları veya sertifika parmak izlerini muaf tutabilirsiniz:
CODE TERMINAL
except ban {
mask {
account { GuvenilenHesap1; GuvenilenHesap2; }
}
type { gline; kline; }
}8. Operasyonel öneriler
- Önce gözlemleyin: Kural koymadan önce bağlantı bildirimlerindeki ülke ve ASN dağılımını inceleyin.
- Engellemek yerine koşul koyun: Tam ülke ban'ı yerine "kimlik doğrulaması zorunlu" yaklaşımı meşru kullanıcıları daha az etkiler.
- Süreli ban kullanın: Saldırı bittiğinde kural kendiliğinden kalkmalıdır.
- VPN ve proxy'yi unutmayın: GeoIP, VPN veya proxy arkasındaki kullanıcının gerçek konumunu göstermez. Bu nedenle tek başına bir güvenlik sınırı değildir; Central Blocklist, DNSBL ve reputation gibi diğer katmanlarla birlikte kullanılmalıdır.
- Veritabanını güncel tutun: Eski veritabanı hem yanlış pozitif hem yanlış negatif üretir.
- Kuralları belgeleyin: Hangi ülke veya ASN'nin neden hedeflendiğini ekip içinde kayıt altına alın.
Sonuç
UnrealIRCd 6'daki GeoIP desteği, ülke ve ASN bilgisini ban, istisna ve security-group mekanizmalarına bağlayarak saldırı trafiğine hızlı ve hedefli yanıt vermeyi sağlar. En iyi sonuç, bu bilgiyi kör bir engel aracı olarak değil, kimlik doğrulama ve itibar temelli savunmaların üzerine eklenen bir katman olarak kullanmakla alınır.
Kaynaklar: UnrealIRCd Docs — GeoIP, UnrealIRCd Docs — Mask item
TR Siber Ekibi