Bir IRC ağında kötü niyetli kullanıcıyı uzaklaştırmanın tek yolu kanal banı değildir. UnrealIRCd 6; tek sunucuda geçerli KLINE ve ZLINE, tüm ağa yayılan GLINE ve GZLINE, kullanıcıyı bağlı tutup susturan SHUN, istisna tanımlayan ELINE ve hesap, sertifika, ülke gibi ölçütlerle çalışan extended ban mekanizmalarını birlikte sunar. Yanlış ban türünü seçmek ise ya saldırganı kaçırır ya da masum kullanıcıları topluca ağ dışında bırakır.

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ış

KomutKapsamEşleşmeNe zaman uygulanır?Tipik kullanım
KLINEYalnızca yerel sunucukullanıcı@hostKayıt sırasındaTek sunucuyu etkileyen sorunlu kullanıcı
GLINETüm ağkullanıcı@hostKayıt sırasındaAğ genelinde kötüye kullanım
ZLINEYalnızca yerel sunucuIPBağlantının en başındaBağlantı seli, DoS kaynağı
GZLINETüm ağIPBağlantının en başındaAğ genelinde bot/drone IP'leri
SHUNTüm ağkullanıcı@hostBağlıykenKullanıcıyı atmadan susturmak
QLINEAğ / yerelTakma ad (nick)Nick kullanımındaServices veya ayrılmış nick'leri korumak
ELINETüm ağkullanıcı@host / IPBan kontrolündeBelirli 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.23


Maskede 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 spamfilter


Her 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 susturma


TEMPSHUN 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 banEşleştiği ölçütÖrnek
~accountServices hesap adı/GLINE ~account:KotuHesap 7d Hesap kötüye kullanımı
~certfpTLS istemci sertifikası parmak izi/GLINE ~certfp:ABCD1234... 0 Ele geçirilmiş bot sertifikası
~realnameGerçek ad (gecos) alanı/GLINE ~realname:*spambot* 1d Spam imzası
~asnOtonom sistem numarası (ASN)/GLINE ~asn:64496 1d Kötüye kullanım yoğun barındırma ağı
~countryGeoIP ülke kodu/SHUN ~country:XX 1h Geçici saldırı dalgası
~security-groupSecurity 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ışı


  1. Sorun tek bir kanalla mı sınırlı? Önce kanal banı veya ~quiet kullanın.
  2. Sorun ağ genelinde ve kullanıcı kayıtlı bir hesap mı kullanıyor? ~account ile GLINE uygulayın.
  3. Saldırı çok sayıda IP'den gelen bağlantı seli mi? GZLINE ile aralığı ve Connthrottle ile hızı sınırlayın.
  4. Davranışı gözlemlemek mi istiyorsunuz? GLINE yerine SHUN kullanın.
  5. Geniş bir aralık banlandı ve meşru bir kaynak etkilendi mi? Süreli ve dar kapsamlı ELINE ekleyin.
  6. 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

TR Siber Ekibi Yazar · X
Kaynak bağlantısı ← Ana sayfaya dön