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.

schedule
01

Ö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.
02

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.

03

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.

04

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.

05

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

06

İ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
07

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=ON pragma'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.
08

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

auto_awesome Benzer Projeler