Skip to main content

Command Palette

Search for a command to run...

Matrix

Updated
2 min read

Coturn (TURN-сервер)

Аутентификация

  1. lt-cred-mech

    • Включает Long-Term Credentials (LTC) механизм аутентификации.

    • Клиенты должны передавать логин и пароль для соединения с TURN-сервером.

  2. use-auth-secret

    • Включает механизм динамической аутентификации.

    • Вместо статических паролей клиенты получают временные ключи (HMAC), сгенерированные сервером.

  3. static-auth-secret=579d650b6e2d82c40519340ff5decd211a656725494b63e8d3e0e99a989b3316

    • Секретный ключ для генерации временных паролей (используется с use-auth-secret).

    • Клиенты и сервер используют его для создания временных учетных данных (username, password).

    • Пароли создаются по алгоритму HMAC-SHA1 и действуют ограниченное время.

  4. cert=/etc/letsencrypt/live/mx.dc24.cloud/fullchain.pem

    • Путь к SSL-сертификату (используется для TLS/DTLS).

    • Позволяет серверу шифровать соединения.

  5. pkey=/etc/letsencrypt/live/mx.dc24.cloud/privkey.pem

    • Приватный ключ для SSL-сертификата.

    • Должен соответствовать сертификату (fullchain.pem).

  6. no-tcp-relay

    • Отключает ретрансляцию трафика по TCP.

    • Полезно для снижения нагрузки на сервер (TURN обычно передаёт видео/аудио по UDP).

  7. no-multicast-peers

    • Отключает поддержку многоадресной передачи (multicast).

    • Уменьшает нагрузку, если сервер не работает с multicast-группами.

  8. fingerprint – это настройка, которая включает контрольную сумму (CRC32) в заголовках сообщений STUN/TURN.

    🔹 Зачем нужен этот параметр?

    • Обеспечивает целостность данных – клиент может проверить, что сообщение не повреждено.

    • Повышает безопасность – помогает защититься от некоторых видов атак на подмену данных.

    • Упрощает совместимость с WebRTC – многие браузеры и клиенты WebRTC требуют fingerprint.

  9. Параметр ec-curve-name=secp384r1 в Coturn

    Этот параметр указывает, какую эллиптическую кривую использовать для шифрования в TLS.

    🔹 Что такое secp384r1?

    • secp384r1 – это эллиптическая кривая P-384 (NIST).

    • Обеспечивает 384-битное шифрование, что безопаснее, чем стандартная P-256 (secp256r1).

    • Используется в ECDH (Elliptic Curve Diffie-Hellman) для создания защищённого обмена ключами.

🔹 Почему это важно?

Использование эллиптической криптографии (ECC) делает шифрование: ✅ Безопаснее – выше уровень защиты по сравнению с RSA 2048.
Быстрее – меньшая нагрузка на CPU.
Совместимо – поддерживается всеми современными браузерами и WebRTC.

🔹 Как включить в Coturn?

Добавь в /etc/turnserver.conf:

  1. Добавь в /etc/turnserver.conf:

    ec-curve-name=secp384r1
    

    Затем перезапусти Coturn:

    systemctl restart coturn
    

    🔹 Какие есть альтернативы?

    • secp256r1 (P-256) – быстрее, но менее безопасен.

    • secp521r1 (P-521) – максимально безопасен, но медленнее.

Если хочешь баланс между безопасностью и скоростью, secp384r1 – лучший выбор. 🚀

Как шифруется трафик при WebRTC и TURN?

1️⃣ UDP:

  • TURN не шифрует сам UDP-трафик, он просто ретранслирует пакеты.

  • Однако WebRTC использует SRTP (Secure Real-time Transport Protocol), который шифрует UDP-трафик аудио и видео.

  • SRTP использует AES (обычно AES-128-GCM или AES-256-GCM).

  • Ключи для шифрования передаются через DTLS (Datagram Transport Layer Security).

2️⃣ TCP:

  • SRTP работает только с UDP, потому что он предназначен для потоковой передачи в реальном времени.

  • Если WebRTC использует TCP, то применяется TLS (Transport Layer Security).

  • TURN-трафик по TCP можно зашифровать через TLS (TURN over TLS, порт 5349).

More from this blog

IT Notes

21 posts