# Supercell.Laser.Defender

Защита порта **9339** (Supercell.Laser.Server, tmux `buzz`) от флуда. Работает
независимо от C#-сервера и переживает его остановку (долгоживущие части в tmux).

## Автозапуск
C#-сервер при старте вызывает `bin/start.sh` (см. `../Supercell.Laser.Server/DefenderLauncher.cs`,
подключено в `Program.cs`). Запуск идемпотентный — если защита уже поднята, дубли не плодятся.
После остановки сервера защита продолжает работать.

## Управление — панель
```
bash Control/panel.sh
```
Меню: включить / перезапустить / отключить (на всякий) / глубокий захват / логи / статус.

## Слои защиты
| скрипт | что делает |
|---|---|
| `bin/conntrack-tune.sh` | не даёт таблице conntrack переполниться (корень падений) |
| `bin/guard.sh` | iptables `BUZZ_GUARD`: connlimit>5 reset, SYN>6/с drop |
| `bin/ban-sync.sh` | грузит `banned_ips.txt` в ipset `buzz_bans` → kernel-drop |
| `bin/ban-watch.sh` | live-подхват новых банов сервера (tmux `buzzban`) |
| `bin/monitor.sh` | телеметрия каждые 5с → `Logs/` (tmux `buzzmon`) |
| `bin/deep-capture.sh [сек]` | разовый пакетный разбор атаки → `Logs/` |
| `bin/start.sh` / `stop.sh` / `status.sh` | оркестрация |

## Настройки
Всё в `defender.conf` (порт, интерфейс, пороги, пути). Пороги guard: `CONNLIMIT`, `SYN_RATE`, `SYN_BURST`.

## Логи
`Logs/attack-YYYYMMDD.log` (человекочитаемый), `Logs/metrics-YYYYMMDD.csv` (для графиков),
`Logs/launcher.log` (автозапуск), `Logs/analysis-*.txt` + `capture-*.pcap` (глубокий захват).

## ⚠️ Не в памяти после ребута
Правила ядра (iptables/ipset/sysctl) живут в памяти. После перезагрузки VDS слетят —
автозапуск поднимет их снова при старте C#-сервера. Для полной живучести можно добавить
systemd/netfilter-persistent (пока не сделано).
