SIP 494 Security Agreement Required: настройка RFC 3329, IPsec и TLS
Отказ в обслуживании при попытке регистрации или установления вызова в IMS / VoLTE и защищенных сетях операторов:
- Сервер или SBC возвращает ответ
SIP/2.0 494 Security Agreement Required. - В теле ответа сервера присутствует заголовок
Security-Serverс перечнем обязательных механизмов шифрования (например,ipsec-3gpp,tls,sdes-srtp). - Клиентский запрос
REGISTERилиINVITEне содержал заголовкаSecurity-Clientили предлагал неподдерживаемые протоколы. - Вызовы блокируются на пограничном контроллере сессий (SBC).
1. Механизм согласования безопасности (RFC 3329)
Спецификация RFC 3329 определяет порядок согласования механизмов защиты между клиентом и сервером до начала передачи конфиденциальных данных:
UAC (Клиент) UAS (Сервер/IMS)
| |
|--- REGISTER (Security-Client: tls) ---------->|
|<-- 494 Security Agreement Required -----------| (Security-Server: ipsec-3gpp, tls)
| |
|--- REGISTER (Security-Verify / Client) ------>| (Согласовано)
|<-- 200 OK ------------------------------------|2. Анализ заголовков Security-Server в Wireshark / sngrep
Проверьте параметры, которые требует сервер в ответе 494:
SIP/2.0 494 Security Agreement Required
Via: SIP/2.0/UDP 192.168.1.10:5060;branch=z9hG4bK4321
Security-Server: msrp-tls;prot=auth;mod=rsa,
tls;prot=auth;mod=rsa,
ipsec-3gpp;alg=hmac-sha-1-96;ealg=aes-cbc;spi-c=1000;spi-s=2000;port-c=5060;port-s=50603. Конфигурация клиента / шлюза для поддержки RFC 3329
Если используется терминал с поддержкой VoLTE/IMS (например, шлюз с SIM-картами):
- Включите опцию Enable RFC 3329 Security Agreement в настройках SIP стека.
- Выберите обязательный механизм:
IPsec 3GPPилиTLSв зависимости от требований оператора связи. - Убедитесь, что настроены корректные пары портов для защищенных SA (Security Associations).
4. Отключение требования Security Agreement на собственном SBC
Если вы администрируете собственный Kamailio / OpenSIPS и ошибочно включили модуль secfilter:
# В конфигурации Kamailio отключите принудительную проверку:
# if (!sec_agree_check()) {
# sec_agree_send_reply();
# exit;
# } Частые вопросы (FAQ)
Для чего используется ошибка SIP 494?
Статус 494 генерируется сервером, если клиент пытается выполнить запрос без использования согласованного механизма безопасности (IPsec, TLS и др.), который является строго обязательным на данном узле согласно RFC 3329.
В каких сетях чаще всего встречается код 494?
Этот код является базовым для архитектуры 3GPP IMS (IP Multimedia Subsystem), сетей VoLTE/VoWiFi и межоператорских пиринговых стыков, использующих аппаратные криптошлюзы.
Может ли обычный Asterisk обработать заголовок Security-Client?
Базовый Asterisk не имеет встроенного полноценного стека RFC 3329 для динамического поднятия IPsec SA. В таких схемах перед Asterisk устанавливается специализированный SBC (Kamailio / OpenSIPS / Acme Packet).
Как клиенту подтвердить согласованные параметры?
Клиент отправляет повторный запрос с заголовком Security-Verify, который в точности повторяет параметры заголовка Security-Server, полученного в ответе 494.