Простые вопросы по настройке базовой безопасности

alexosh

Member
Добрый день! К сожалению (видимо, вввиду недосаточного опыта админстрирования серверов) из документации не получилось понять как делать именно делать простые базовые настройки на сервере по безопасности:

Вопрос # 1:

Каким именно образом изменить пароль или заблокировать demo пользователя?

Вопрос # 2:

Как получить доступ к интерфейсу коммандной строки (https://docs.flashphoner.com/pages/viewpage.action?pageId=1049311)
Написано: ssh -p 2001 localhost .
Где нужно вводить эту команду? Локально на сервере?

После ввода этой команды в подключенном по SSH (к 22 порту) интерфейсе, выводится следующее:

Password authentication
Password:

Что тут нужно вводить?

Вопрос #3:

Каким образом настраивается безопасноть REST API? Чтобы не кто угодно мог делать запросы к серверу?

Вопрос #4:

Безопасность адресов RTSP источников. В базовом варианте на клиенте в url в streamName указывается rtsp Url источника, каким образом делается так, чтобы эти адреса были неизвестен на клиенту?


Вопрос #5:

Можно ли сделать как-то чтобы адресс сервера flashphoner так же неизвестен для клиентов? Каким образом это достигается? Через проксирование? Рекомендуется ли вообще делать это?


Вопрос #6:

Есть ли еще какие-то моменты по безопасности, которые нужно учесть, кроме выше перечисленных?
 

Max

Administrator
Staff member
Добрый день.
Вопрос # 1:

Каким именно образом изменить пароль или заблокировать demo пользователя?
Сменить пароль пользователя demo можно при помощи команды CLI passwd:
Code:
passwd alice
Заблокировать пользователя demo можно при помощи команды CLI update user:
Code:
update user -a false demo
Обратите внимание, что при этом перестанут работать прямые ссылки на страницы примеров наподобие этой
Вопрос # 2:

Как получить доступ к интерфейсу коммандной строки (https://docs.flashphoner.com/pages/viewpage.action?pageId=1049311)
Написано: ssh -p 2001 localhost .
Где нужно вводить эту команду? Локально на сервере?

После ввода этой команды в подключенном по SSH (к 22 порту) интерфейсе, выводится следующее:

Password authentication
Password:

Что тут нужно вводить?
Да, команду нужно вводить локально на сервере
Code:
ssh -p 2001 admin@localhost
После этого запрашивается пароль пользователя admin (по умолчанию admin, на AWS EC2 инстансах всегда равен значению instanceId, которое можно посмотреть в EC2 Console)
Вопрос #3:

Каким образом настраивается безопасноть REST API? Чтобы не кто угодно мог делать запросы к серверу?
Об этом написано здесь
Вопрос #4:

Безопасность адресов RTSP источников. В базовом варианте на клиенте в url в streamName указывается rtsp Url источника, каким образом делается так, чтобы эти адреса были неизвестен на клиенту?
В этом случае необходимо использовать REST hook /publishStream и подменять имя стрима с видимого клиенту на реальное. Пример настройки бэкенда для авторизации пользователей по REST hook /connect можно использовать в качестве основы для разработки.
Вопрос #5:

Можно ли сделать как-то чтобы адресс сервера flashphoner так же неизвестен для клиентов? Каким образом это достигается? Через проксирование? Рекомендуется ли вообще делать это?
Вы можете настроить проксирование, как описано здесь, но в любом случае клиенту должно быть известно доменное имя с валидным SSL сертификатом (иначе WebRTC не будет работать в мобильных браузерах) и порт для установки websocket соединения
Вопрос #6:

Есть ли еще какие-то моменты по безопасности, которые нужно учесть, кроме выше перечисленных?
На текущий момент в WCS была найдена всего одна серьезная уязвимость, которая была закрыта в сборке 5.2.780. Все последние сборки WCS по умолчанию запускаются от пользователя без root-прав. Поэтому риск использования WCS как вектора атаки минимален.
При выводе в продакшн рекомендуем также пройти по этому списку.
 

alexosh

Member
Спасибо! Все так как вы написали.

Вопросы по проектированию:

1) как это по опыт влияет на производительность?

2) в каком случае есть смысл его реализовывать?
 

Max

Administrator
Staff member
Вопросы по проектированию:
1) как это по опыт влияет на производительность?
Если Вы имеете в виду проксирование, то проксируется только websocket трафик, а по websocket ходит только сигналинг, если Вы не используете технологию MSE для проигрывания потоков. Поскольку трафик небольшой, то на производительность это никак не влияет.
2) в каком случае есть смысл его реализовывать?
Например, если Вы хотите:
- авторизовать вебсокет соединения, не используя для этого REST хуки WCS
- фильтровать коннекты по IP (WCS умеет это делать только по Origin заголовку)
- проксировать HTTPS в HTTP (в этом случае SSL сертификат необходимо настроить только на nginx, т.к. браузер пользователя видит его, а не WCS)
- настроить собственную балансировку нагрузки, например, по нагрузке на CPU сервера (в этом случае nginx будет единой точкой входа)
 
Top