> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lampac.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Безопасность Lampac: WAF, геоблокировка и accsdb

> Настройте WAF с геоблокировкой и защитой от брутфорса, а также систему аутентификации accsdb в Lampac NextGen.

Lampac NextGen предоставляет два уровня защиты: WAF (Web Application Firewall) для фильтрации входящего трафика и систему аутентификации `accsdb` для ограничения доступа к API. Оба механизма отключены по умолчанию и настраиваются через `init.conf` или `init.yaml`.

## WAF: брандмауэр приложения

WAF фильтрует входящие запросы по стране, IP-адресу и частоте обращений. Включите его, если сервер доступен из интернета.

### Конфигурация WAF

```jsonc theme={null}
{
  "WAF": {
    "enable": true,
    "countryAllow": ["RU", "UA", "BY"],
    "whiteIps": ["192.168.1.0/24"],
    "bruteForceProtection": true,
    "limit_map": [
      { "pattern": "^/lite/", "map": { "limit": 10, "second": 1 } },
      { "pattern": "^/(externalids|lifeevents)", "map": { "limit": 10, "second": 1 } }
    ]
  }
}
```

### Параметры WAF

| Параметр               | Описание                                                                                                               |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `enable`               | Включить WAF. По умолчанию `false` в `base.conf`                                                                       |
| `countryAllow`         | Разрешённые страны в формате ISO 3166-1 alpha-2. Пустой массив — без ограничений                                       |
| `whiteIps`             | IP-адреса и CIDR-блоки, которые всегда пропускаются в обход всех ограничений                                           |
| `bruteForceProtection` | Автоматический бан при множественных ошибках аутентификации                                                            |
| `limit_map`            | Rate-limit: массив объектов с regex `pattern` и `map.limit` / `map.second`. Модули добавляют свои правила при загрузке |

<Tip>
  Параметр `whiteIps` поддерживает CIDR-нотацию. Например, `"192.168.1.0/24"` пропустит всю локальную подсеть, а `"10.0.0.0/8"` — корпоративную сеть.
</Tip>

<Note>
  Геолокация работает через встроенные базы MaxMind GeoLite2 (`data/GeoLite2-Country.mmdb` и `GeoLite2-ASN.mmdb`). Базы обновляются вместе с релизом сервера.
</Note>

## Аутентификация (accsdb)

Система `accsdb` ограничивает доступ к API по логинам с датой истечения. Поддерживаются два формата записи пользователей.

### Краткий формат

```json theme={null}
{
  "accsdb": {
    "enable": true,
    "accounts": "user1:2026-12-31,user2:2027-06-01"
  }
}
```

### Подробный формат

```json theme={null}
{
  "accsdb": {
    "enable": true,
    "users": [
      { "id": "user1", "expires": "2026-12-31" },
      { "id": "user2", "expires": "2027-06-01" }
    ]
  }
}
```

При включённом `accsdb` клиент получает уникальный токен, который передаётся в URL плагина (`/online/js/{token}` и `/sisi/js/{token}`). После истечения даты доступ автоматически блокируется.

## Важное предупреждение о публичном доступе

<Warning>
  Модули **DLNA**, **Tracks**, **Transcoding**, **GStreamer** и **Catalog** не выполняют экранирование входящих запросов. Не включайте их на публично доступном VPS без ограничения доступа через firewall или reverse proxy.
</Warning>

Эти модули предназначены для работы в доверенной локальной сети. Если вы используете сервер удалённо, оставьте их в `SkipModules` или ограничьте доступ на уровне сети.

## Reverse proxy и реальный IP

WAF должен видеть IP клиента, а не адрес Nginx. Передавайте `X-Forwarded-For` и `X-Forwarded-Proto`, ограничьте listener локальным интерфейсом и задайте доверенный proxy через `KnownProxies`.

Не принимайте forwarded headers напрямую от интернета: иначе клиент сможет подменить IP и обойти IP-based ограничения.

Полный пример: [reverse proxy и HTTPS](/deployment/reverse-proxy).

## Административные маршруты

AdminPanel, DatabaseEditor и WebLog раскрывают конфигурацию, базы или детали запросов. Защитите `/adminpanel`, `/database-editor` и `/weblog` на уровне VPN/reverse proxy даже при наличии root-пароля.

Подробнее: [администрирование и диагностика](/modules/admin-tools).
