UnrealIRCd 6 bu soruna iki katmanlı bir yanıt sunar: yıllardır kullanılan blacklist bloğu ile DNS tabanlı kara listeler (DNSBL) ve 6.1.3 sürümüyle gelen, bağlantının tamamını analiz eden Central Blocklist. Bu rehberde her iki katmanı güvenli biçimde yapılandırmayı, meşru kullanıcıları yanlışlıkla engellememek için muafiyetleri kurmayı ve sonuçları izlemeyi ele alıyoruz.
1. İki katmanın farkı
| Özellik | Blacklist bloğu (DNSBL) | Central Blocklist |
|---|---|---|
| Ne kontrol eder? | Yalnızca bağlanan IP adresi | IP, ident, gerçek ad, nick, TLS ve el sıkışma davranışı |
| Karar yöntemi | DNS yanıtındaki kayıt değeri | 0–15 arası spam puanı |
| Gerekli sürüm | UnrealIRCd 6 (tüm sürümler) | UnrealIRCd 6.1.3 ve üzeri |
| Ek gereksinim | Yok | Central API anahtarı |
| Güçlü olduğu alan | Bilinen proxy/drone IP'leri | Yeni, henüz listelenmemiş botlar |
En iyi sonuç ikisinin birlikte kullanılmasıyla alınır: DNSBL bilinen kötü IP'leri ucuz bir DNS sorgusuyla eler, Central Blocklist ise listede olmayan ama davranışı bot gibi olan bağlantıları yakalar.
2. Blacklist bloğunun yapısı
CODE TERMINAL
blacklist {
dns {
name ;
type ;
reply { ; }
}
action ;
reason "";
ban-time ;
recheck ;
except { }
}- dns::name — sorgulanacak DNSBL alan adı.
- dns::type — DNSBL'nin yanıt biçimi. "record" tek tek değerleri, "bitmask" bit maskesini karşılaştırır.
- dns::reply — hangi yanıtların eşleşme sayılacağı. Her DNSBL'nin kendi değer tablosu vardır.
- action — eşleşmede uygulanacak eylem (kill, kline, gline, zline, shun vb.).
- ban-time — konan banın süresi.
- recheck — varsayılan "yes"; bazı durumlarda yeniden kontrolü kapatmak için "no".
- except — yalnızca bu kara listeye özel muafiyetler.
3. Önerilen DNSBL yapılandırması
IRC ağları için en yaygın iki kaynak EFnet RBL ve DroneBL'dir. Resmî dokümantasyondaki örnekler iyi bir başlangıç noktasıdır:
CODE TERMINAL
blacklist efnetrbl {
dns {
name rbl.efnetrbl.org;
type record;
reply { 1; 4; 5; }
}
action gline;
ban-time 24h;
reason "Proxy/Drone/TOR tespit edildi. Ayrıntı: https://rbl.efnetrbl.org/?i=$ip";
}
blacklist dronebl {
dns {
name dnsbl.dronebl.org;
type record;
reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
}
action gline;
ban-time 24h;
reason "Proxy/Drone tespit edildi. Ayrıntı: https://dronebl.org/lookup?ip=$ip";
}Önemli: Reply değerleri DNSBL'nin sınıflandırmasına karşılık gelir. Listeye yeni bir değer eklemeden önce ilgili DNSBL'nin belgelerini okuyun; yanlış bir değer, dinamik IP kullanan ev kullanıcılarını toplu biçimde engelleyebilir.
4. Eylemi doğru seçmek: soft eylemler
UnrealIRCd'deki ban eylemlerinin çoğunun bir "soft" karşılığı vardır. Soft eylemler, SASL ile hesabına giriş yapmış kullanıcılara uygulanmaz. Bu sayede kayıtlı ve güvenilir bir kullanıcı, IP'si bir kara listeye düşse bile ağa bağlanmaya devam edebilir.
| Eylem | Etki | Ne zaman? |
|---|---|---|
| gline | Tüm ağda IP'ye ban | Kesin kötü niyetli kaynaklar |
| soft-kline | Bu sunucuda ban, SASL kullanıcıları muaf | Tor gibi hem kötü hem meşru kullanım olan kaynaklar |
| shun | Kullanıcı bağlı kalır ama komut gönderemez | Gözlem ve delil toplama |
| warn | IRCop'lara bildirim, kullanıcı etkilenmez | Yeni kuralı canlıda test etme |
Yeni bir DNSBL eklerken önce warn ile birkaç gün izleyip yanlış pozitif oranını görmek, ardından gline veya soft-kline'a geçmek en güvenli yöntemdir. Örneğin Tor kullanıcılarına yalnızca SASL ile giriş imkânı tanımak için:
CODE TERMINAL
blacklist efnetrbl-tor {
dns {
name rbl.efnetrbl.org;
type record;
reply { 4; }
}
action soft-kline;
ban-time 1h;
reason "Tor üzerinden yalnızca SASL ile bağlanabilirsiniz.";
}5. Central Blocklist kurulumu
Central Blocklist, UnrealIRCd ekibinin merkezi olarak işlettiği bir analiz servisidir. Bağlantı sırasında el sıkışma bilgileri servise gönderilir, servis 0 ile 15 arasında bir spam puanı döndürür. Varsayılan olarak 5 ve üzeri puan reddedilir.
Adım 1: Central API anahtarı
unrealircd.org/central-api adresinden hesap talep edin. Aldığınız anahtarı yapılandırmaya ekleyin:
CODE TERMINAL
loadmodule "central-api";
set {
central-api {
api-key "BURAYA-ANAHTARINIZ";
}
}API anahtarını ayrı bir dosyada tutup ana yapılandırmaya include ile eklemek, anahtarın yapılandırma yedekleri veya paylaşılan dosyalar üzerinden sızmasını önler. Dosya izinlerini yalnızca UnrealIRCd kullanıcısının okuyabileceği şekilde (chmod 600) ayarlayın.
Adım 2: Puan eşiklerini tanımlamak
CODE TERMINAL
loadmodule "central-blocklist";
set {
central-blocklist {
blocklist-enabled yes;
score 10 {
ban-action shun;
ban-time 1h;
ban-reason "Merkezi engelleme listesi tarafından reddedildi";
}
score 5 {
ban-action kline;
ban-time 15m;
ban-reason "Merkezi engelleme listesi tarafından reddedildi";
}
except {
reputation-score 2006;
mask { *.irccloud.com; }
ip { 127.*; 192.168.*; 10.*; }
identified yes;
}
}
}Bu yapıda yüksek puanlı (10+) bağlantılar shun ile sessize alınır; saldırgan bağlı kaldığını düşünürken hiçbir komutu işlenmez. 5–9 arası puanlar ise kısa süreli kline ile reddedilir. SASL ile giriş yapmış ve yüksek itibar puanına sahip kullanıcılar zaten kontrol edilmeden içeri alınır.
Gizlilik notu
Central Blocklist'e bağlanan kullanıcının IP, nick, ident, gerçek ad ve TLS ayrıntıları gibi bilgileri gönderilir; PASS ve AUTHENTICATE satırları hariç tutulur. UnrealIRCd, kayıtların en fazla 30 gün bellekte tutulduğunu belirtiyor. Ağınızın gizlilik politikasında bu işlemeyi açıkça belirtmeniz, KVKK/GDPR açısından da doğru bir uygulamadır.
6. Muafiyetleri doğru kurmak
Engelleme ne kadar güçlüyse yanlış pozitifin maliyeti de o kadar yüksektir. Üç muafiyet katmanı kullanılabilir:
Genel except ban bloğu
Bir IP veya host'u tüm kara liste kontrollerinden muaf tutmak için:
CODE TERMINAL
except ban {
mask { *@203.0.113.25; *@*.guvenilir-bouncer.net; }
type { blacklist; }
}Kara listeye özel muafiyet
Yalnızca belirli bir DNSBL için istisna gerekiyorsa blacklist bloğunun kendi except alanını kullanın. Böylece diğer kara listeler o kaynak için çalışmaya devam eder.
Güvenilir bağlantılar
WebSocket ağ geçidi, KiwiIRC veya reverse proxy kullanıyorsanız, proxy IP'lerini doğru tanımlamadığınızda bütün web kullanıcıları proxy'nin IP'siyle görünür ve tek bir DNSBL eşleşmesi tüm web kullanıcılarını dışarıda bırakabilir. Gerçek istemci IP'sinin nasıl aktarılacağını WebSocket ve reverse proxy rehberimizde anlattık.
7. Reputation ve security-group ile birlikte kullanım
Kara liste katmanları, UnrealIRCd'nin itibar sistemiyle birlikte en iyi sonucu verir. Uzun süredir bağlanan kullanıcılar yüksek itibar puanı biriktirir ve Central Blocklist bu kullanıcıları hiç sorgulamaz. Yeni ve bilinmeyen kullanıcılar ise daha sıkı kurallarla karşılaşır. Bu yapının ayrıntıları için reputation ve security-group rehberimize göz atabilirsiniz.
8. Test ve izleme
Yapılandırmayı uygulamadan önce sözdizimini kontrol edin ve ardından yeniden yükleyin:
CODE TERMINAL
./unrealircd configtest
./unrealircd rehashDNSBL'lerin çoğu test amaçlı olarak 127.0.0.2 adresini listeler. DNS çözümlemesinin çalıştığını sunucudan doğrulayabilirsiniz:
CODE TERMINAL
dig +short 2.0.0.127.dnsbl.dronebl.org
dig +short 2.0.0.127.rbl.efnetrbl.orgBir yanıt dönüyorsa sunucunuz DNSBL'ye ulaşabiliyor demektir. Yanıt gelmiyorsa DNS çözümleyicinizin sorguları engelleyip engellemediğini kontrol edin; bazı DNSBL'ler büyük açık çözümleyicilerden (ör. genel DNS servisleri) gelen sorguları yanıtlamaz, bu nedenle sunucuda yerel bir çözümleyici (unbound gibi) çalıştırmak önerilir.
Canlı ortamda eşleşmeleri IRCop olarak izlemek için sunucu bildirimlerini takip edin ve aktif banları listeleyin:
CODE TERMINAL
/STATS gline
/STATS klineYanlışlıkla engellenen bir kullanıcı için geçici banı kaldırıp kalıcı çözümü (except ban) yapılandırmaya eklemeyi unutmayın. Ban yönetimi komutlarının ayrıntıları için ban yönetimi rehberimize bakabilirsiniz.
9. Kontrol listesi
- UnrealIRCd'yi 6.1.3 veya üzeri bir sürüme yükseltin.
- EFnet RBL ve DroneBL için blacklist bloklarını önce warn eylemiyle devreye alın.
- Yanlış pozitifler incelendikten sonra gline veya soft-kline'a geçin.
- Central API anahtarını ayrı ve izinleri kısıtlı bir dosyada tutun.
- Central Blocklist için 5 ve 10 puan eşiklerini tanımlayın.
- Bouncer, web ağ geçidi ve iç ağ adreslerini except ban ile muaf tutun.
- Sunucuda yerel bir DNS çözümleyici kullanın.
- Gizlilik politikanıza Central Blocklist veri işlemesini ekleyin.
Kaynaklar
- UnrealIRCd Docs — Blacklist block
- UnrealIRCd Docs — Central Blocklist
- UnrealIRCd Docs — Central API
- UnrealIRCd Docs — Actions
TR Siber Ekibi