Bu rehberde her ban türünün ne zaman kullanılacağını, süre ve maske söz dizimini, kalıcı ban blokları ile istisnaları, sunucu ve kanal düzeyindeki extended ban'leri ve operatör ekibi için güvenli bir ban politikasını inceleyeceğiz.
1. Ban türlerine genel bakış
| Komut | Kapsam | Eşleşme | Ne zaman uygulanır? | Tipik kullanım |
|---|---|---|---|---|
| KLINE | Yalnızca yerel sunucu | kullanıcı@host | Kayıt sırasında | Tek sunucuyu etkileyen sorunlu kullanıcı |
| GLINE | Tüm ağ | kullanıcı@host | Kayıt sırasında | Ağ genelinde kötüye kullanım |
| ZLINE | Yalnızca yerel sunucu | IP | Bağlantının en başında | Bağlantı seli, DoS kaynağı |
| GZLINE | Tüm ağ | IP | Bağlantının en başında | Ağ genelinde bot/drone IP'leri |
| SHUN | Tüm ağ | kullanıcı@host | Bağlıyken | Kullanıcıyı atmadan susturmak |
| QLINE | Ağ / yerel | Takma ad (nick) | Nick kullanımında | Services veya ayrılmış nick'leri korumak |
| ELINE | Tüm ağ | kullanıcı@host / IP | Ban kontrolünde | Belirli bir kaynağa istisna tanımak |
ZLINE ve GZLINE, DNS çözümlemesi ve ident sorgusundan önce çalıştığı için sunucu kaynağı açısından en ucuz yöntemdir; ancak yalnızca IP ile eşleşir. Hostname veya ident kullanan bir maske gerekiyorsa GLINE/KLINE tercih edilmelidir.
2. Temel söz dizimi ve süreler
Ban komutları genel olarak KOMUT <maske> <süre> <sebep> biçimindedir. Süre saniye olarak veya 1d2h30m gibi okunabilir biçimde verilebilir; 0 kalıcı ban anlamına gelir. Bir banı kaldırmak için maskenin başına eksi işareti eklenir.
CODE TERMINAL
/GLINE *@198.51.100.23 1d Flood ve spam
/GLINE *@*.ornek-isp.example 12h Tekrarlayan kötüye kullanım
/GZLINE *@203.0.113.0/24 2d Botnet bağlantı dalgası
/KLINE *@192.0.2.44 30m Yerel sunucuda taciz
/SHUN *@198.51.100.77 1h Kurallara aykırı reklam
/GLINE -*@198.51.100.23Maskede kullanıcı@host biçimi kullanılır; ident'e güvenilemeyen modern ağlarda kullanıcı kısmı genellikle * bırakılır. CIDR gösterimi (/24, /64) IPv4 ve IPv6 aralıklarında desteklenir. IPv6'da tek bir /128 adresi banlamak çoğu zaman etkisizdir; ev kullanıcılarına genellikle /64 veya daha geniş prefiksler verildiği için /64 banı daha anlamlıdır.
3. Mevcut banları listeleme ve denetleme
CODE TERMINAL
/STATS gline
/STATS kline
/STATS shun
/STATS except
/STATS spamfilterHer kayıtta banı ekleyen operatör, eklenme zamanı, bitiş zamanı ve sebep görünür. Bu bilgiler denetim açısından kritiktir; sebep alanına "x" veya boş metin yazmak yerine olayın kısa açıklamasını ve varsa kayıt numarasını yazmak ekip içi takibi kolaylaştırır.
UnrealIRCd 6'da varsayılan olarak yüklenen tkldb modülü, komutla eklenen ban kayıtlarını diske yazar ve sunucu yeniden başlatıldığında geri yükler. Bu nedenle geçici olması gereken banlara mutlaka süre verilmeli, aksi hâlde kalıcı hâle gelirler.
JSON-RPC kullanan ağlarda server_ban.list, server_ban.add ve server_ban.del metotlarıyla aynı işlemler web panelinden veya otomasyon betiklerinden yapılabilir. Bu erişimin en az yetki ilkesiyle sınırlandırılması gerekir.
4. Yapılandırma dosyasında kalıcı ban blokları
Bazı banların komutla değil, yapılandırmayla tanımlanması daha doğrudur: sürüm kontrolünde tutulur, tüm sunuculara aynı şekilde dağıtılır ve yanlışlıkla silinmez.
CODE TERMINAL
ban user {
mask *@198.51.100.0/24;
reason "Kötüye kullanım kaynağı - [email protected]";
};
ban ip {
mask 203.0.113.50;
reason "Tekrarlayan bağlantı seli";
};
ban nick {
mask "*Serv";
reason "Services için ayrılmıştır";
};
ban realname {
mask "*bedava*bot*";
reason "Spam botu imzası";
};Yapılandırma değişikliğinden sonra /REHASH çalıştırın ve ./unrealircd configtest ile sözdizimini önceden doğrulayın.
5. İstisnalar: except ban bloğu ve ELINE
Geniş bir aralığı banladığınızda içindeki meşru kaynakları korumanız gerekebilir: kendi izleme sunucunuz, webchat ağ geçidiniz veya kurumsal NAT çıkışınız gibi. Kalıcı istisnalar için except ban bloğu kullanılır ve hangi ban türlerinden muaf tutulacağı açıkça belirtilir.
CODE TERMINAL
except ban {
mask {
192.0.2.10;
*@webchat.ornek.example;
};
type { gline; gzline; zline; shun; };
};Çalışma zamanında istisna eklemek için ELINE komutu kullanılır. Söz dizimi /ELINE <maske> <türler> <süre> <sebep> biçimindedir; türler tek harflik kodlarla belirtilir (örneğin k: kline, G: gline, z: zline, Z: gzline, s: shun, F: spamfilter, b: blacklist, c: connect-flood, m: maxperip).
CODE TERMINAL
/ELINE *@192.0.2.10 GZs 0 İzleme sunucusu
/ELINE *@198.51.100.200 b 7d DNSBL yanlış pozitifi - inceleme sürüyor
/ELINE -*@198.51.100.200İstisnalar ban kadar tehlikelidir. Tüm türleri kapsayan geniş bir istisna, saldırganın bu IP'yi ele geçirmesi durumunda ağınızda tüm korumaları devre dışı bırakır. İstisnayı yalnızca gereken türlerle ve mümkünse süreli tanımlayın.
6. SHUN: atmadan susturmak
SHUN uygulanan kullanıcı bağlı kalır ancak neredeyse hiçbir komutu işleme alınmaz; mesaj gönderemez, kanallara giremez, nick değiştiremez. Bu yöntem özellikle bot ağlarında işe yarar: bağlantısı kesilen bot hemen başka bir IP ile geri dönerken, susturulan bot bağlı kaldığı için operatörler davranışını ve bağlantı kaynaklarını gözlemlemeye devam edebilir.
CODE TERMINAL
/SHUN *@198.51.100.77 2h Reklam botu - gözlem altında
/TEMPSHUN Nick Kısa süreli susturmaTEMPSHUN yalnızca kullanıcının mevcut oturumu için geçerlidir; kullanıcı yeniden bağlandığında kalkar ve diske yazılmaz.
7. Sunucu düzeyinde extended server ban'ler
UnrealIRCd 6, IP veya hostname yerine başka ölçütlerle eşleşen sunucu banlarını destekler. Bu yaklaşım, sürekli IP değiştiren kullanıcılara karşı çok daha etkilidir.
| Extended server ban | Eşleştiği ölçüt | Örnek |
|---|---|---|
| ~account | Services hesap adı | /GLINE ~account:KotuHesap 7d Hesap kötüye kullanımı |
| ~certfp | TLS istemci sertifikası parmak izi | /GLINE ~certfp:ABCD1234... 0 Ele geçirilmiş bot sertifikası |
| ~realname | Gerçek ad (gecos) alanı | /GLINE ~realname:*spambot* 1d Spam imzası |
| ~asn | Otonom sistem numarası (ASN) | /GLINE ~asn:64496 1d Kötüye kullanım yoğun barındırma ağı |
| ~country | GeoIP ülke kodu | /SHUN ~country:XX 1h Geçici saldırı dalgası |
| ~security-group | Security group üyeliği | /GLINE ~security-group:unknown-users 10m Acil durum kilidi |
~country banı kaba bir araçtır; VPN, mobil operatör ve GeoIP hataları nedeniyle meşru kullanıcıları etkileyebilir. Yalnızca aktif bir saldırı dalgası sırasında, kısa süreli ve SHUN gibi geri alınabilir bir türle kullanılması önerilir.
8. Kanal düzeyinde extended ban'ler
Kanal operatörleri de benzer esneklikten yararlanır. UnrealIRCd 6'da extended ban'ler isimli biçimde yazılır:
CODE TERMINAL
MODE #kanal +b ~account:KotuHesap
MODE #kanal +b ~quiet:*!*@198.51.100.*
MODE #kanal +b ~nickchange:*!*@*.ornek-isp.example
MODE #kanal +b ~time:30:~quiet:*!*@203.0.113.9
MODE #kanal +b ~forward:#karantina:*!*@198.51.100.*
MODE #kanal +e ~account:GuvenilirKullanici
MODE #kanal +I ~security-group:known-users- ~quiet kullanıcıyı kanalda tutar ama konuşmasını engeller.
- ~nickchange kanalda bulunurken nick değiştirmeyi engeller; nick seli saldırılarında etkilidir.
- ~time banın belirtilen dakika sonunda otomatik kalkmasını sağlar; unutulan banları önler.
- ~forward banlı kullanıcıyı başka bir kanala yönlendirir.
- ~account ve +e birlikte kullanılarak geniş bir IP banı içinde kayıtlı kullanıcılara istisna tanınabilir.
9. Doğru ban türünü seçme akışı
- Sorun tek bir kanalla mı sınırlı? Önce kanal banı veya ~quiet kullanın.
- Sorun ağ genelinde ve kullanıcı kayıtlı bir hesap mı kullanıyor? ~account ile GLINE uygulayın.
- Saldırı çok sayıda IP'den gelen bağlantı seli mi? GZLINE ile aralığı ve Connthrottle ile hızı sınırlayın.
- Davranışı gözlemlemek mi istiyorsunuz? GLINE yerine SHUN kullanın.
- Geniş bir aralık banlandı ve meşru bir kaynak etkilendi mi? Süreli ve dar kapsamlı ELINE ekleyin.
- Ban kalıcı bir politika mı? Komut yerine yapılandırmadaki ban bloğuna taşıyın.
10. Sık yapılan hatalar
- Süre vermeden eklenen banların tkldb nedeniyle yıllarca kalması.
- Paylaşımlı NAT veya büyük mobil operatör aralıklarına süresiz GZLINE uygulamak.
- IPv6 kullanıcılarını /128 ile banlayıp aynı /64 içinden geri dönmelerine izin vermek.
- Tüm ban türlerini kapsayan süresiz except ban tanımlamak.
- Ban sebebini boş bırakıp ekip içi takibi imkânsız hâle getirmek.
- Kendi operatör IP'sini veya webchat ağ geçidini yanlışlıkla banlamak; kritik kaynaklar için önceden istisna tanımlanmalıdır.
Operasyon kontrol listesi
- Operatör ekibi için ban türü seçim kılavuzu yazıldı mı?
- Varsayılan ban süreleri (ör. ilk ihlal 1 saat, tekrar 1 gün) belirlendi mi?
- Kalıcı banlar yapılandırmaya taşınıp sürüm kontrolüne alındı mı?
- except ban kayıtları ve ELINE'lar ayda bir gözden geçiriliyor mu?
- Ban ve istisna olayları log bloklarıyla izleme kanalına aktarılıyor mu?
- JSON-RPC ban yönetimi için ayrı ve sınırlı yetkili rpc-user kullanılıyor mu?
Sonuç
UnrealIRCd 6'nın ban altyapısı, doğru katmanda kullanıldığında hem saldırganı hızla durdurur hem de meşru kullanıcıları korur. IP tabanlı ZLINE/GZLINE ile kaynak tüketimini düşürmek, hesap ve sertifika tabanlı extended ban'lerle IP değiştiren kullanıcıları yakalamak, SHUN ile gözlem yapmak ve istisnaları dar tutmak; sürdürülebilir bir IRC ağ güvenliğinin temelini oluşturur.
Kaynaklar
- UnrealIRCd Documentation: IRCOp commands
- UnrealIRCd Documentation: Extended bans
- UnrealIRCd Documentation: Except ban block
- UnrealIRCd Documentation: Extended server bans
TR Siber Ekibi