ArceniaAntiBot
Velocity 3.4.0 tabanlı proxy sunucuları için geliştirilen bu eklenti, ağınızı bot saldırılarına karşı korumak amacıyla yüksek performanslı güvenlik çözümleri sunar. Gelişmiş filtreleme mekanizmaları sayesinde sunucu kaynaklarını optimize ederken yetkisiz girişleri etkili bir şekilde engeller. Kurulumu ve yönetimi kolay olan bu araç, sunucu güvenliğini en üst düzeye çıkarmak için tasarlanmıştır.
Özellikler
- Firewall / Rate Limiting — Belirli bir zaman penceresi içinde eşik değerini aşan IP'leri otomatik olarak engeller.
- İlk Giriş Doğrulaması — Yeni IP adreslerini yeniden bağlanmaya zorlayarak bot trafiğini filtreler.
- Çoklu Hesap Tespiti — Aynı IP üzerinden eş zamanlı oturum sayısını sınırlar; aşımda en eski oturumu keser.
- Whitelist / Blacklist — IP bazlı güven ve engel listeleri; süreli veya kalıcı blok desteği.
- Bypass Sistemi — Tam IP, CIDR aralığı, Bedrock oyuncu ve izin tabanlı muafiyet katmanları.
- Floodgate Entegrasyonu — Geyser/Floodgate üzerinden gelen Bedrock oyuncuları otomatik tanır.
- In-Memory Cache Katmanı — Rate limit, whitelist ve blacklist sorguları bellekte önbelleğe alınır; SQLite yükü minimuma iner.
- Persistent Connection & Statement Cache — Her repository tek kalıcı bağlantı ve önceden hazırlanmış SQL ifadeleri kullanır.
Gereksinimler
| Bileşen | Minimum Sürüm |
|---|---|
| Java | 21 |
| Velocity | 3.4.0 |
| Maven | 3.x (derleme için) |
Floodgate/Geyser isteğe bağlıdır; yüklü değilse Bedrock bypass devre dışı kalır.
Kurulum
git clone https://github.com/arcenia/arceniaantibot.git
cd arceniaantibot
mvn clean package
Oluşan target/arcenia-antibot-1.0.0.jar dosyasını Velocity sunucunuzun plugins/ dizinine kopyalayın ve proxy'yi yeniden başlatın.
Yapılandırma
İlk çalıştırmada plugins/ArceniaAntiBot/ altında üç dosya oluşturulur.
config.yml
verify-on-first-join: true # Yeni IP'ler için yeniden bağlanma doğrulaması
verify-window-seconds: 90 # Doğrulama süresi (5–600)
trust-duration-days: 30 # Güvenilen IP'nin geçerlilik süresi (1–365)
max-accounts-per-ip: 5 # IP başına eş zamanlı hesap limiti (1–100)
firewall-attempts: 8 # Engelleme eşiği (2–1000)
firewall-window-seconds: 15 # Rate limit penceresi (5–300)
firewall-block-minutes: 10 # Otomatik engel süresi (1–1440)
bedrock-bypass: true # Bedrock oyuncular için bypass
database-directory: plugins/ArceniaAntiBot/data
Yapılandırma değerleri başlatma sırasında doğrulanır. Geçersiz bir aralık girilirse eklenti hata mesajıyla yüklenmez.
bypass.yml
ips: # Tam IP muafiyeti
- "127.0.0.1"
cidrs: # CIDR aralığı muafiyeti
- "10.0.0.0/8"
CIDR maskeleri yükleme anında tek seferde hesaplanır ve bellekte saklanır; çalışma zamanında tekrar parse edilmez.
messages.yml
Tüm oyuncu ve yönetici mesajları MiniMessage formatında özelleştirilebilir. Varsayılan dil Türkçe'dir.
Komutlar
| Komut | Açıklama |
|---|---|
/aab reload |
Yapılandırma dosyalarını yeniden yükler |
/aab ipinfo <ip> |
IP hakkında detaylı bilgi gösterir |
/aab trust <ip> |
IP'yi güvenilir listeye ekler |
/aab untrust <ip> |
IP'yi güvenilir listeden çıkarır |
/aab blacklist <ip> [süre] |
IP'yi engeller (ör: 10m, 2h, 1d, perm) |
/aab unblacklist <ip> |
IP'yi engel listesinden çıkarır |
/aab unblock <ip> |
IP'nin tüm aktif bloklarını ve rate limit verisini temizler |
Takma ad: /arceniaantibot
İzinler
| İzin | Açıklama |
|---|---|
arceniaantibot.admin |
Tüm /aab alt komutlarına erişim |
arceniaantibot.bypass.firewall |
Rate limit kontrolünden muaf tutar |
arceniaantibot.bypass.verify |
İlk giriş doğrulamasından muaf tutar |
arceniaantibot.bypass.multialt |
Çoklu hesap limitinden muaf tutar |
Mimari
ArceniaAntiBotPlugin Plugin yaşam döngüsü ve bileşen koordinasyonu
├── ConnectionListener Velocity olaylarını ProtectionService'e yönlendirir
├── ProtectionService Koruma mantığı, in-memory cache yönetimi
│ ├── Rate Limit Cache ConcurrentHashMap — bellekte anlık rate limit
│ ├── Whitelist Cache TTL bazlı lookup cache (30 sn)
│ └── Blacklist Cache TTL bazlı lookup cache (30 sn)
├── DatabaseManager 4 SQLite repository'yi koordine eder
│ ├── WhitelistRepository Güvenilen IP'ler
│ ├── BlacklistRepository Engelli IP'ler
│ ├── SessionRepository Aktif oturumlar
│ └── AttemptRepository Rate limit + bekleyen doğrulamalar
├── ConfigManager YAML dosya yükleme ve düzleştirme
├── FloodgateHook Bedrock tespiti (lazy reflection, tek seferlik init)
└── AntibotCommand /aab yönetici komutları
Veritabanı
Dört ayrı SQLite dosyası database-directory altında tutulur:
| Dosya | İçerik |
|---|---|
whitelist.db |
Güvenilen IP kayıtları (ip, kullanıcı adı, oluşturulma, bitiş) |
blacklist.db |
Engel kayıtları (ip, kaynak, neden, oluşturulma, bitiş) |
sessions.db |
Aktif oyuncu oturumları (ip, uuid, kullanıcı adı, bağlanma zamanı) |
attempts.db |
Rate limit sayaçları + bekleyen doğrulama kayıtları |
Her repository:
- Tek kalıcı bağlantı kullanır (connection-per-repository).
- WAL journal modu,
busy_timeout=5000,foreign_keys=ONpragma'ları ile çalışır. - PreparedStatement'ları ilk kullanımda hazırlar ve tekrar kullanır.
- Bozulma tespitinde otomatik yedek alıp veritabanını sıfırdan oluşturur.
Koruma Akışı
Oyuncu Bağlantısı
│
├─ PreLogin
│ ├─ Bypass kontrolü (IP / Bedrock)
│ └─ Rate limit sayacını bellekte artır → DB'ye yaz
│
├─ Login
│ ├─ Blacklist kontrolü (cache → DB fallback)
│ ├─ Rate limit eşik kontrolü (cache → DB fallback)
│ │ └─ Eşik aşıldıysa → blacklist + cache invalidate
│ └─ Doğrulama kontrolü
│ ├─ Whitelist'te mi? (cache → DB fallback)
│ ├─ Bekleyen doğrulama var mı? → Onayla, whitelist'e ekle
│ └─ Yoksa → Bekleyen doğrulama oluştur, bağlantıyı reddet
│
├─ PostLogin
│ └─ Oturum kaydet → Limit aşımında en eski oturumu kes (atomik)
│
└─ Disconnect
└─ Oturumu sil