IRC kanallarına yönelik saldırıların en yaygın biçimi, kısa sürede çok sayıda botla kanala girip mesaj, nick değişikliği veya CTCP bombardımanı yapmaktır. Sunucu seviyesindeki anti-flood ayarları ve bağlantı sınırlamaları bu trafiğin bir bölümünü keser; ancak saldırı belirli bir kanala yoğunlaştığında son savunma hattı kanalın kendi flood korumasıdır.

UnrealIRCd 6 bu iş için iki kanal modu sunar: gelişmiş ama karmaşık +f ve UnrealIRCd 6.1.0 ile gelen, hazır profillere dayalı kolay mod +F. UnrealIRCd 6.2.0 ve sonrasında ise tüm kanallar, hiçbir mod ayarlanmasa bile varsayılan bir flood profiliyle korunur. Bu rehberde her iki modu, profillerin sunucu tarafında özelleştirilmesini, istisnaları ve yanlış alarmları önleyen ayarları ele alıyoruz.

1. +F ile hazır flood profilleri

Kanal operatörü tek komutla bir profil seçebilir:

CODE TERMINAL
/MODE #kanal +F normal


Varsayılan profillerin katılma (join) ve mesaj eşikleri ile limit aşıldığında uygulanan önlemler şöyledir:

ProfilKatılma (15 sn)Mesaj (15 sn)CTCP (15 sn)Knock (15 sn)
very-strict1030710
strict1540710
normal3040710
relaxed4560710
very-relaxed6090710
Aşılırsa+R, 10 dk+M, 10 dk+C, 15 dk+K, 15 dk


Nick değişikliği sınırı da profile göre değişir ve aşıldığında kanal 15 dakikalığına +N (nick değişikliği yasak) moduna alınır. Sunucunuzda o an etkin olan tüm değerleri görmek için parametresiz MODE #kanal +F komutunu gönderin; sunucu etkin flood ayarlarını bir bildirimle döndürür.

Resmî dokümantasyonun önerileri:


  • Çoğu kanal için +F normal yeterlidir.
  • Ağın ana kanalı gibi büyük ve hareketli kanallarda +F relaxed daha uygun olabilir.
  • 10 kişilik küçük kanallarda daha sıkı kontrol isteniyorsa +F strict seçilebilir.
  • +F off yalnızca sunucuda varsayılan profil tanımlıysa anlamlıdır; aksi hâlde -F ile aynıdır.



2. Limit aşıldığında ne olur?

Katılma, mesaj ve nick değişikliği taşkınlarında UnrealIRCd doğrudan kanal modu koymaz. Önce taşkını tetikleyenlerin unknown-users sınıfında olup olmadığını inceler. Bunlar services'e kimlik doğrulaması yapmamış ve IRC'de pek görülmemiş IP'lerden bağlanan kullanıcılardır (kesin tanımı sunucu yöneticisi belirler). Taşkın bu gruptan geliyorsa belirtilen süre boyunca yalnızca unknown-users'ın katılması, konuşması veya nick değiştirmesi engellenir.

Bu yetmezse tablodaki kanal modu (+R, +M, +N, +C, +K) ayarlanır ve süre dolunca otomatik olarak kaldırılır. Yanlış alarm durumunda kanal operatörleri modu hemen kaldırabilir. Profillerde mesaj ve katılma limitleri, taşkının birden fazla kişi tarafından tetiklenmesini gerektirecek şekilde seçilmiştir: dokümana göre tek bir kullanıcı 15 saniyede en fazla 15 mesaj gönderebildiği için very-strict profilindeki 30 mesaj sınırını bile tek başına aşamaz.

3. +f ile ayrıntılı kontrol

+f modu her taşkın türü için ayrı eşik, önlem ve kaldırma süresi tanımlamayı sağlar. +f ile yapılan ayarlar +F profilinin değerlerini geçersiz kılar. En basit örnek:

CODE TERMINAL
/MODE #kanal +f [10j]:15


Bu ayar kanalda 15 saniyede 10 katılmaya izin verir; limit aşılırsa kanal otomatik olarak +i (yalnızca davetle giriş) olur.

Kullanılabilir taşkın türleri:

TürAnlamıVarsayılan önlemDiğer önlemler
cCTCP+C (CTCP engeli)-
jKatılma+i (davetle giriş)R
kKnock+K (knock engeli)-
mMesaj/notice+m (moderasyon)M, d
nNick değişikliği+N (nick değişikliği yasak)-
tKullanıcı başına metinKullanıcıyı at (kick)b, d
rKullanıcı başına tekrar eden satırKullanıcıyı at (kick)b, d


t ve r türleri kanal geneline değil tek tek kullanıcılara uygulanır: kullanıcı atılır, b ile atılıp yasaklanır ya da d ile mesajı düşürülür. Bu iki tür şu an yalnızca +f içinde kullanılabilir, +F profillerinde kullanılamaz.

Varsayılan önlem yerine başka bir önlem seçmek ve modun kaç dakika sonra kaldırılacağını belirtmek mümkündür:

CODE TERMINAL
/MODE #kanal +f [20j#R,50m#M]:15
/MODE #kanal +f [20j#R5]:15


İlk satır katılma limiti aşılırsa +R (yalnızca kayıtlı kullanıcılar), mesaj limiti aşılırsa +M ayarlar. İkinci satır +R'yi 5 dakika sonra otomatik olarak kaldırır. Dokümantasyondaki kapsamlı örnek şöyledir:

CODE TERMINAL
/MODE #kanal +f [30j#i10,40m#m10,7c#C15,10n#N15,30k#K10]:15


Bu ayar 15 saniyelik pencerede 30 katılma (+i, 10 dk), 40 mesaj (+m, 10 dk), 7 CTCP (+C, 15 dk), 10 nick değişikliği (+N, 15 dk) ve 30 knock (+K, 10 dk) sınırı koyar. Dokümana göre 75 kişiyi aşan büyük kanallarda katılma eşiği 50'ye, mesaj eşiği 60-75'e çıkarılabilir.

4. Kaldırma süresi ayarları

Sunucu yöneticisi +f için varsayılan bir kaldırma süresi belirleyebilir:

CODE TERMINAL
set {
        modef-default-unsettime 10;
        modef-max-unsettime 60;
}


modef-default-unsettime 10 ile +f [5j]:15 komutu otomatik olarak [5j#i10]:15 biçimine dönüşür; varsayılan olarak böyle bir süre tanımlı değildir. Kullanıcı yine de farklı süre yazabilir veya #i0 ile otomatik kaldırmayı tamamen kapatabilir. modef-max-unsettime ise izin verilen en uzun süredir (0-255 dakika, varsayılan 60).

Süre seçimi bir dengedir: çok kısa süre "taşkın, +R, -R, taşkın" döngüsüne yol açar; çok uzun süre ise saldırı bittikten sonra, özellikle ortamda operatör yokken, meşru kullanıcıları gereksiz yere dışarıda bırakır.

5. Sunucu tarafında profil özelleştirme

Profiller set::anti-flood::channel bloğunda değiştirilebilir veya yeni profiller eklenebilir. flood-mode değeri +f ile aynı sözdizimini kullanır (t ve r hariç):

CODE TERMINAL
set {
        anti-flood {
                channel {
                        default-profile normal;
                        boot-delay 75;
                        split-delay 75;
                        profile normal { flood-mode "[7c#C15,30j#R10,10k#K15,40m#M10,10n#N15]:15"; }
                        profile trivia { flood-mode "[7c#C15,30j#R10,10k#K15,90m#M5,10n#N15]:15"; }
                }
        }
}


Örnekteki trivia profili, bot kaynaklı yoğun mesaj trafiği olan bir oyun kanalı için mesaj eşiğini yükseltilmiş özel bir profildir; kanal operatörü +F trivia ile seçebilir. Varsayılan profillerin özenle seçildiğini unutmayın: gereksiz tetiklenen katılma ve mesaj limitleri kullanıcıların kanala girmesini veya konuşmasını engeller.

default-profile, +F ayarlanmamış kanallarda kullanılacak profili belirler; UnrealIRCd 6.2.0 ve sonrasında varsayılan değer normal'dir. Kanallarda varsayılan koruma istemiyorsanız default-profile off; yazabilirsiniz. Varsayılan profil etkinken koruma istemeyen operatörlerin açıkça +F off ayarlaması gerekir.

6. boot-delay ve split-delay

Sunucu yeniden başladığında çok sayıda kullanıcı aynı anda bağlanıp kanallara girer; bu durum sahte bir katılma taşkını gibi görünebilir. boot-delay, sunucu (yeniden) başlatıldıktan sonra belirtilen süre boyunca +f/+F katılma (j) algılamasını devre dışı bırakır. split-delay ise ağdan herhangi bir sunucu koptuğunda aynı işlemi yapar; çünkü kopan sunucunun kullanıcıları diğer sunuculara yeniden bağlanırken gereksiz tetiklemeye yol açabilir. Dokümana göre 5 veya daha fazla sunuculu ve kullanıcıların eşit dağıldığı büyük ağlarda split-delay 0 yapılabilir.

Eski set::modef-boot-delay ayarı UnrealIRCd 6.0.1 ile set::anti-flood::channel::boot-delay altına taşınmıştır; eski yapılandırmaları taşırken bunu güncelleyin.

7. İstisnalar: bot ve güvenilir kullanıcılar

Kanal operatörlerinin (+h/+o/+a/+q) eylemleri flood sayımına dahil edilmez. IRCOp'lar da muaftır; bunu sağlayan operclass yetkisi channel:override:flood'dur. Op vermek istemediğiniz bir bot veya kullanıcı grubu için ~flood genişletilmiş istisnasını kullanın. Bu extban yalnızca +e olarak kullanılabilir, sözdizimi +e ~flood:türler:maske biçimindedir:

CODE TERMINAL
/MODE #kanal +e ~flood:*:~account:TriviaBot
/MODE #kanal +e ~flood:m:*!*@192.168.*


İlk satır TriviaBot hesabını tüm taşkın türlerinden, ikinci satır yerel ağdaki kullanıcıları yalnızca mesaj taşkını sayımından muaf tutar. Tür olarak c, j, k, m, n, t, r veya tümü için * kullanılabilir.

Sık yapılan hatalar


  • 6.2.0 öncesi alışkanlıkla her kanala elle +F koymaya çalışmak: varsayılan profil zaten tüm kanalları korur; yalnızca farklı bir profil gerekiyorsa +F değiştirin.
  • +f ile +F'yi birlikte kullanıp +F'nin geçerli olduğunu sanmak: +f'deki ayarlar profil değerlerini geçersiz kılar.
  • Trivia veya bot içeren kanallarda mesaj eşiğini düşük tutmak; botu ~flood ile muaf tutmak veya relaxed profil seçmek daha doğrudur.
  • #i0 veya uzun kaldırma süreleriyle kanalı operatör yokken saatlerce kilitli bırakmak.
  • t ve r türlerini +F profiline yazmaya çalışmak; bunlar yalnızca +f içinde çalışır.



Sonuç

UnrealIRCd 6'nın kanal flood koruması, varsayılan profil sayesinde kurulumdan itibaren tüm kanalları korur; unknown-users ayrımı da meşru kullanıcıların yanlış alarmlardan etkilenmesini azaltır. Çoğu kanal için doğru profili seçmek yeterlidir; özel ihtiyaçlarda +f, sunucu tarafı profiller ve ~flood istisnaları ince ayar imkânı verir. Sitemizdeki reputation, security-group ve ban yönetimi rehberleriyle birlikte uygulandığında sunucu ve kanal seviyesinde katmanlı bir savunma elde edersiniz.

Kaynaklar: UnrealIRCd Docs — Channel anti-flood settings, UnrealIRCd Docs — Extended bans, UnrealIRCd Docs — Set block
TR Siber Ekibi Yazar · TRSiber
← Ana sayfaya dön