Глава 20. Условия угроз и репутации¶
Условия угроз и репутации позволяют фильтровать трафик на основе оценки безопасности URL, возраста домена, агрегированных показателей угрозы, а также типов и хешей загружаемых файлов. Эти условия предназначены для интеграции с внешними сервисами анализа угроз (threat intelligence feeds).
Расширение Redcoat. Все условия в этой главе являются расширениями Redcoat. В BlueCoat CPL для оценки угроз используется условие
url.threat_risk.level=(BlueCoat), которое проверяет уровень риска URL по данным BlueCoat WebPulse:
client.[effective_]address.ip_reputation=(BlueCoat) — будет реализовано позже. Отдельное BlueCoat-условие репутации клиентского IP (не URL) через фид анализа угроз. В Redcoat пока не реализовано (нет подсистемы анализа угроз для IP-репутации); парсер его не принимает.Условия Redcoat предоставляют расширенную семантику: раздельные репутация, возраст домена, хеши файлов и агрегированный показатель угрозы.
20.1. url.reputation=¶
Проверяет репутацию запрошенного URL по данным внешнего сервиса анализа угроз. Репутация представлена перечислимым типом ReputationLevel.
Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга.
Синтаксис:
where:
level— уровень репутации. Допустимые значения:Trusted,LowRisk,MediumRisk,HighRisk,Unknown.
Слои и транзакции: Proxy.
Пример:
<Proxy>
; Блокировать URL с высоким риском
url.reputation=HighRisk deny
; Блокировать URL с неизвестной или высокой репутацией
url.reputation=(HighRisk, Unknown) deny
; Разрешить только проверенные URL
url.reputation=Trusted ALLOW
См. также: url.reputation_score= (раздел 20.2), threat.score= (раздел 20.5), category= (глава 13).
20.2. url.reputation_score=¶
Проверяет числовую оценку репутации URL (0-100). Значение 0 означает безопасный URL, 100 — максимальный риск. Поддерживает точные значения и диапазоны.
Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга.
Синтаксис:
where:
value— числовая оценка (0-100).range_start..range_end— диапазон оценок (включительно).
Слои и транзакции: Proxy.
Пример:
<Proxy>
; Блокировать URL с оценкой угрозы >= 70
url.reputation_score=70..100 deny
; Предупреждение для среднего риска
url.reputation_score=40..69 exception(content_filter_warning)
См. также: url.reputation= (раздел 20.1), threat.score= (раздел 20.5).
20.3. domain.age=¶
Проверяет возраст доменного имени в днях (от даты регистрации по данным WHOIS). Новые домены статистически чаще используются для фишинга и распространения вредоносного ПО.
Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга.
Синтаксис:
where:
value— возраст домена в днях.range_start..range_end— диапазон возраста (включительно).
Слои и транзакции: Proxy.
Пример:
<Proxy>
; Блокировать домены моложе 7 дней
domain.age=0..7 deny
; Предупреждение для доменов моложе 30 дней
domain.age=0..30 exception(new_domain_warning)
См. также: domain.is_new= (раздел 20.4), url.reputation= (раздел 20.1).
20.4. domain.is_new=¶
Проверяет, является ли доменное имя недавно зарегистрированным. Порог «нового» домена по умолчанию — 30 дней с момента регистрации. Это упрощённый вариант условия domain.age=.
Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга.
Синтаксис:
where:
yes— домен зарегистрирован менее 30 дней назад.no— домен зарегистрирован более 30 дней назад.
Слои и транзакции: Proxy.
Пример:
<Proxy>
; Блокировать новые домены
domain.is_new=yes deny
; Блокировать новые домены только для определённых категорий
domain.is_new=yes category=(Finance, Shopping) deny
См. также: domain.age= (раздел 20.3).
20.5. threat.score=¶
Агрегированная оценка угрозы транзакции по всем доступным источникам: репутация URL, возраст домена, категория контента, результаты ICAP-сканирования. Значение в диапазоне 0-100.
Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга.
Синтаксис:
where:
value— агрегированная оценка угрозы (0-100).range_start..range_end— диапазон (включительно).
Слои и транзакции: Proxy.
Пример:
<Proxy>
; Блокировать при высокой агрегированной угрозе
threat.score=80..100 deny
; Перенаправить на страницу предупреждения при средней угрозе
threat.score=50..79 exception(threat_warning)
; Логировать при любом уровне угрозы
threat.score=1..100 log.header.x-threat-score("$(threat.score)")
См. также: url.reputation= (раздел 20.1), url.reputation_score= (раздел 20.2).
20.6. file.type=¶
Проверяет тип загружаемого файла по содержимому (magic bytes), а не по расширению имени файла или MIME-типу. Условие оценивается в фазе ответа, когда тело ответа доступно для инспекции.
Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга.
Синтаксис:
where:
type_name— тип файла. Допустимые значения:Executable,Archive,Document,Script,Image,Video,Audio.
Слои и транзакции: Proxy.
Пример:
<Proxy>
; Блокировать загрузку исполняемых файлов
file.type=Executable deny
; Блокировать исполняемые файлы и архивы
file.type=(Executable, Archive) deny
; Разрешить только документы и изображения
file.type=(Document, Image) ALLOW
См. также: file.hash.sha256= (раздел 20.7), file.hash.md5= (раздел 20.8), content-type= (глава 9).
20.7. file.hash.sha256=¶
Проверяет SHA-256 хеш загружаемого файла по списку известных вредоносных хешей (blocklist) или известных безопасных хешей (allowlist). Хеш вычисляется по телу ответа.
Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга.
Синтаксис:
where:
hash_value— 64-символьный SHA-256 хеш в шестнадцатеричном формате (lowercase).
Слои и транзакции: Proxy.
Пример:
<Proxy>
; Блокировать файл с известным вредоносным хешем
file.hash.sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 deny
См. также: file.hash.md5= (раздел 20.8), file.type= (раздел 20.6).
20.8. file.hash.md5=¶
Проверяет MD5 хеш загружаемого файла. Аналогично file.hash.sha256=, но использует алгоритм MD5. MD5 не рекомендуется для криптографических целей, но широко используется в существующих базах индикаторов компрометации (IoC).
Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга.
Синтаксис:
where:
hash_value— 32-символьный MD5 хеш в шестнадцатеричном формате (lowercase).
Слои и транзакции: Proxy.
Пример:
<Proxy>
; Блокировать файл с известным MD5 хешем
file.hash.md5=d41d8cd98f00b204e9800998ecf8427e deny
См. также: file.hash.sha256= (раздел 20.7), file.type= (раздел 20.6).
20.x. Условия результатов ICAP-сканирования (request.icap.*)¶
Статус: в процессе реализации. Все условия этой группы принимаются парсером (политика загружается), но фаза ICAP-сканирования запроса с передачей результатов в CPL ещё не реализована — правило с любым из этих условий не сработает. ICAP-действия (
request.icap_service()и др.) при этом работают — см. главу 35.
Группа условий для проверки результатов ICAP-сканирования запроса (имена как в BlueCoat):
request.icap.apparent_data_type=(type, ...)
request.icap.error_code={none|код|(коды)}
request.icap.threat_detected={yes|no}
request.icap.threat_id="идентификатор"
request.icap.threat_id.exists={yes|no}
request.icap.threat_details="текст"
request.icap.threat_details.exists={yes|no}
request.icap.threat_source="источник"
request.icap.threat_source.exists={yes|no}