UnrealIRCd Spamfilter: Spam ve Reklama Karşı Ağ Genelinde Filtreleme
İçindekiler
Bir IRC ağını yönetirken karşılaşacağınız en yaygın sorunlardan biri spam'dir: kanallara ve özel mesajlara gönderilen reklam bağlantıları, sahte "ücretsiz kripto" duyuruları, başka ağlara yönlendirme yapan botlar. Bunlarla tek tek uğraşmak yorucudur. UnrealIRCd spamfilter özelliği, belirli kalıplara uyan mesajları ağ genelinde otomatik olarak yakalar ve sizin belirlediğiniz işlemi uygular.
Bu rehberde spamfilter'ın nasıl çalıştığını, kuralların nasıl yazıldığını ve en önemlisi masum kullanıcıları etkilemeden nasıl kullanılacağını anlatıyoruz.
Spamfilter Nasıl Çalışır?
Spamfilter, kullanıcıların gönderdiği metinleri tanımladığınız kalıplarla karşılaştırır. Bir eşleşme bulunduğunda kurala bağlı aksiyon uygulanır: mesaj engellenebilir, kullanıcı uyarılabilir, ağdan atılabilir veya belirli bir süre yasaklanabilir. Kontrol edilecek metin türlerini de siz seçersiniz: özel mesajlar, kanal mesajları, notice'ler, çıkış mesajları, away mesajları, kanal konuları ve hatta kullanıcının gerçek adı (realname) alanı.
Kurallar ağ genelinde yayılır; bir sunucuda eklenen spamfilter, bağlı bütün sunucularda geçerli olur. Bu sayede saldırı hangi sunucudan gelirse gelsin aynı kural onu yakalar.
Hedef Türleri
Her kural, hangi tür metinleri kontrol edeceğini belirten bir hedef listesine sahiptir. En sık kullanılanlar şunlardır:
| Hedef | Kontrol edilen metin |
|---|---|
| private | Kullanıcıdan kullanıcıya özel mesajlar |
| channel | Kanal mesajları |
| private-notice | Özel notice mesajları |
| channel-notice | Kanala gönderilen notice'ler |
| part | Kanaldan çıkış mesajı |
| quit | Ağdan çıkış mesajı |
| away | Away (uzakta) mesajı |
| topic | Kanal konusu |
| user | Bağlanırken kullanıcının nick!kullanıcı@host:realname bilgisi |
Spam botları genellikle hem özel mesaj hem de kanal mesajı gönderdiği için çoğu kural bu iki hedefi birlikte kullanır. Ancak hedef listesini ihtiyaçtan geniş tutmak, masum mesajların da yakalanma riskini artırır.
Aksiyonlar
| Aksiyon | Ne olur? |
|---|---|
| warn | Yalnızca oper'lar uyarılır, mesaj iletilir |
| block | Mesaj engellenir, kullanıcı bağlı kalır |
| kill | Kullanıcı ağdan atılır |
| tempshun | Kullanıcı bu bağlantı süresince susturulur |
| shun | Kullanıcı belirli bir süre susturulur |
| kline / gline | Kullanıcı belirli bir süre sunucudan veya ağdan yasaklanır |
| zline / gzline | IP düzeyinde yasak uygulanır |
Yeni bir kural yazarken önce warn ile başlayıp bir süre hangi mesajların yakalandığını izlemek, ardından daha sert bir aksiyona geçmek en güvenli yoldur. Bu yöntem, kuralın beklenmedik mesajları yakalayıp yakalamadığını görmenizi sağlar.
Komutla Spamfilter Eklemek
Oper olarak IRC içinden kural eklemek mümkündür. Genel söz dizimi şu düzendedir: eşleşme türü, hedefler, aksiyon, yasak süresi, sebep ve kalıp.
/spamfilter add -simple pc block - Reklam_yasak *ucretsiz-kripto.example*
/spamfilter add -simple pc gline 1d Spam_bot *join #baskakanal*
İlk örnekte özel mesaj (p) ve kanal mesajı (c) hedeflenir, eşleşen mesaj engellenir. İkinci örnekte başka bir kanala davet eden spam'leri gönderen kullanıcılar bir gün süreyle ağdan yasaklanır. Sebep metnindeki boşlukların yerine alt çizgi kullanılır. Mevcut kuralları görmek için /spamfilter komutunu parametresiz çalıştırabilir veya ilgili stats çıktısına bakabilirsiniz; bir kuralı silmek için del alt komutu kullanılır.
Yapılandırma Dosyasında Spamfilter
Kalıcı kuralları yapılandırma dosyasında tutmak, sunucu yeniden başladığında kaybolmamalarını ve sürüm kontrolüyle takip edilebilmelerini sağlar. Örnek yapılandırma, kuralların tutulduğu ayrı bir spamfilter.conf dosyasını zaten içerir.
spamfilter {
match-type simple;
match "*ucretsiz-kripto.example*";
target { private; channel; }
action block;
reason "Reklam yasaktir";
}
Daha karmaşık bir örüntü için regex kullanılabilir:
spamfilter {
match-type regex;
match "(www\.)?bedava-?bitcoin\.[a-z]{2,4}";
target { private; channel; quit; }
action gline;
ban-time 1d;
reason "Spam bot";
}
Değişikliklerden sonra rehash yapmanız yeterlidir.
Simple mı Regex mi?
Simple eşleşme, yıldız (*) ve soru işareti (?) joker karakterleriyle çalışır. Okuması kolaydır, hızlıdır ve hata yapma riski düşüktür. Spam'lerin büyük bölümü sabit bir alan adı veya kelime öbeği içerdiği için simple çoğu durumda yeterlidir.
Regex ise çok daha güçlüdür. Harf değiştirerek filtreden kaçmaya çalışan spam'leri, değişen sayılar içeren bağlantıları veya belirli bir yapıya sahip mesajları yakalayabilir. Ancak hatalı yazılmış bir regex ya çok geniş bir eşleşme yaparak masum mesajları yakalar ya da hiç çalışmaz. Regex kurallarını canlı ağa eklemeden önce bir test ortamında denemek şiddetle önerilir.
Yanlış Pozitiflerden Kaçınmak
Spamfilter'ın en büyük riski masum kullanıcıları cezalandırmaktır. Örneğin yalnızca "bitcoin" kelimesini yakalayan ve kullanıcıyı yasaklayan bir kural, kripto paralar hakkında sohbet eden herkesi ağdan atar. Bunu önlemek için:
- Kalıpları olabildiğince özel tutun: tek bir kelime yerine spam'e özgü bağlantıyı veya cümleyi hedefleyin.
- İlk günlerde warn veya block kullanın; yasak aksiyonlarına izlemeden sonra geçin.
- Hedef listesini dar tutun: Yalnızca özel mesajlarda görülen bir spam için kanal hedefini eklemeyin.
- Kuralın sebep metnini açık yazın; haksız yere etkilenen bir kullanıcı ne olduğunu anlayabilsin.
- Belirli kullanıcıları veya kanalları filtreden muaf tutmak gerekirse istisna mekanizmalarını kullanın.
Spamfilter ile Diğer Araçların Birlikte Kullanımı
Spamfilter tek başına bir duvar değildir; diğer korumalarla birlikte çalıştığında etkilidir. Yeni bağlanan bot dalgalarını connthrottle yavaşlatır, kanal içindeki tekrarlayan mesajları flood koruması yakalar, bilinen kötü kaynakları ise G-Line ve Z-Line tamamen dışarıda tutar. Güvenilir kullanıcıları ayırt etmek için de güvenlik grupları kullanılabilir; örneğin bazı kurallar yalnızca itibarı düşük yeni bağlantılara uygulanabilir.
Spamfilter Olaylarını İzlemek
Spamfilter bir eşleşme bulduğunda oper'lara sunucu bildirimi gönderir ve olay log'a yazılır. Bu kayıtları düzenli olarak gözden geçirmek size iki önemli bilgi verir: Hangi kuralların gerçekten işe yaradığı ve hangi kuralların beklenmedik mesajları yakaladığı. Hiç tetiklenmeyen eski kuralları temizlemek, listenin yönetilebilir kalmasını sağlar. Log yapılandırması için log ayarları yazımıza bakabilirsiniz.
Kanal Sahiplerinin Rolü
Ağ genelindeki spamfilter, herkesi etkileyen ortak sorunlara karşıdır. Belirli bir kanala özgü istenmeyen içerikler için ise kanal sahiplerinin kendi araçlarını kullanması daha uygundur: kanal modu +G ile sansür, +c veya +S ile renk kontrolü, ChanServ veya BotServ ile kötü kelime filtreleri. Bu ayrım, ağ yöneticilerinin her kanalın tercihlerine göre kural yazma yükünü ortadan kaldırır. BotServ'ün kelime filtresi için BotServ kullanımı yazımıza bakın.
Sonuç
Spamfilter, doğru kullanıldığında ağınızı spam dalgalarından koruyan güçlü bir kalkandır. Özel ve dar kalıplar yazın, yeni kuralları önce uyarı modunda izleyin, kalıcı kuralları yapılandırma dosyasında tutun ve olayları düzenli olarak gözden geçirin. Spam'in kaynağı belli olduğunda ise bir sonraki adım kaynağı tamamen engellemektir: G-Line, K-Line ve Z-Line.
IRC sorunun mu var? Kanalda birlikte çözelim.
💬 Kanala BağlanSıkça Sorulan Sorular
Spamfilter kanal sohbetini de okur mu?
Evet. Hedef olarak kanal mesajları seçildiyse filtre kanal mesajlarını da kontrol eder. Bu yüzden kurallar dikkatle, dar kapsamlı yazılmalıdır.
Simple mı regex mi kullanmalıyım?
Basit joker karakterli kalıplar için simple daha hızlı ve anlaşılırdır. Karmaşık örüntüler için regex gerekir ama hata yapma riski de artar.
Yanlışlıkla masum kullanıcıları yasakladım, ne yapmalıyım?
Kuralı hemen kaldırın, uygulanan G-Line kayıtlarını listeleyip silin ve kuralı daha dar bir kalıpla yeniden yazın.