# Типы правил

# IP-правила

#### IP-правила

Предназначены для блокировки, разрешения или показа CAPTCHA на основе IP-адреса или CIDR-подсети посетителя.

- **Поля:** `IP/CIDR`, `Тип правила (действие)`, `Описание`, `Активно`.
- **Логика приоритета:** Точное совпадение IP имеет приоритет над CIDR-подсетью. Среди CIDR-подсетей, содержащих один и тот же IP, приоритет у более узкой (с наибольшей маской).

##### Примеры паттернов для `IP/CIDR`:

- Одиночный IPv4: `192.168.1.100`
- IPv4 CIDR (подсеть): `10.0.0.0/8`
- IPv6 CIDR: `2001:db8::/32`

# Блокировка по странам

#### Блокировка по странам

Это не отдельный тип правила в интерфейсе, а встроенный механизм WAF, который срабатывает после проверки IP-правил. Он позволяет блокировать трафик из стран, указанных в системной настройке `iskwaf_iskwaf_blocked_countries`.

- **Логика работы:** Решение о блокировке принимается в момент запроса на основе данных о геолокации IP, которые регулярно обновляются cron-скриптом.
- **Приоритет:** Эта проверка имеет более низкий приоритет, чем IP-правила. Это означает, что если для IP-адреса существует разрешающее (`allow`) правило (например, для подсети Google), посетитель будет пропущен, даже если его страна находится в черном списке.

# User-Agent правила

#### User-Agent правила

Позволяют применять действия на основе строки User-Agent.

- **Поля:** `Паттерн User-Agent`, `Тип паттерна` ('contains', 'exact', 'regex'), `Тип правила (действие)`, `Описание`, `Активно`.

##### Примеры паттернов для `Паттерн User-Agent`:

- Тип: `contains`, Паттерн: `AhrefsBot`
- Тип: `regex`, Паттерн: `/^EvilCorp Crawler\/[0-9\.]+/i`

# Referrer правила

#### Referrer правила

Фильтруют запросы на основе HTTP Referrer.

- **Поля:** `Паттерн Referrer`, `Тип паттерна` ('contains', 'exact', 'regex'), `Тип правила (действие)`, `Описание`, `Активно`.

##### Примеры паттернов для `Паттерн Referrer`:

- Тип: `contains`, Паттерн: `spam-site.com`
- Тип: `regex`, Паттерн: `/^https?:\/\/([\w-]+\.)*spammerdomain\.com/i`

# Request URI правила

#### Request URI правила

Применяют действия на основе запрашиваемого URI.

- **Поля:** `Паттерн URI`, `Тип паттерна` ('contains', 'exact', 'regex', 'starts\_with'), `Учитывать Query String` (да/нет), `Тип правила (действие)`, `Описание`, `Активно`.

##### Примеры паттернов для `Паттерн URI`:

- Тип: `exact`, Query String: `нет`, Паттерн: `/wp-login.php`
- Тип: `starts_with`, Query String: `нет`, Паттерн: `/admin-backup/`
- Тип: `contains`, Query String: `да`, Паттерн: `eval(`