Рекомендации по безопасной настройке носят общий характер и подходят для большинства инсталляций. Настоящие рекомендации в значительной степени повышают безопасность эксплуатации устройства, но не являются исчерпывающими. В зависимости от схемы применения устройства необходимо настраивать и другие параметры безопасности. В некоторых специфических случаях выполнение данных рекомендаций может привести к неработоспособности сети. При настройке устройства стоит в первую очередь следовать техническим требованиям и регламентам сетей, в которых будет эксплуатироваться данное устройство. |
Telnet - небезопасный протокол. |
Для обеспечения необходимых настроек безопасности системы рекомендуется:
В Ubuntu по умолчанию telnet выключен , так как не является безопасным протоколом. Не рекомендуется включать его. |
По умолчанию учетная запись root отключена в Ubuntu, в отличии от других дистрибутивов Linux. Если root все-таки включен, отключить можно командой:
sudo passwd -l root |
В /etc/ssh/sshd_config:
PasswordAuthentication no ChallengeResponseAuthentication no |
sudo ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key sudo ssh-keygen -o -a 100 -t ed25519 -f /etc/ssh/ssh_host_ed25519_key |
Система ECSS-10 имеет возможность при создании SIP-абонентов генерировать пароли, которые соответствуют рекомендуемым требованиям безопасности.
Пример декларации абонента:
/domain/test_domain/sip/user/declare default_routing sip 42002 alias-as-user qop_authentication common_login 42002 auto-generation Executed on the sip1@ecss1 Intermediate (incomplete) result: Declaration for range: 42002@test_domain..42002@test_domain (1) ... 1 interfaces check for existing ... [**********************************************************************] 70mks 1 users interfaces declaration ... [**********************************************************************] 25ms 1 users divided into 1 parts to declare ... [**********************************************************************] 60mks 1 users aliases declaration ... [**********************************************************************] 4ms 1 users trying licence packages activating ... [**********************************************************************] 2ms 8 interfaces recall to base [**********************************************************************] 3ms Executed on the sip1@ecss1 ┌────────────────────────┐ │ declared 1 subscribers │ └────────────────────────┘ |
Просмотр учетных данных:
/domain/test_domain/sip/user/info sip 42002@test_domain . . . ┌─────────────────────┬───────────────────────────────────────────┐ │ User │ 42002@test_domain │ ├─────────────────────┼───────────────────────────────────────────┤ │internal iface name │06d48c3938a30f5d │ │isActive │false │ │group │sip │ │authentication │42002:VmaifqfMais5 (ds) use qop: true │ . . . |
Отредактировать файл (нас интересует выделенная секция)
|
По умолчанию значение параметров = unlimited/false. Нужно их установить / активировать.
. . .
. . . |
| Файл /etc/ecss/global.config нужно отредактировать на обоих хостах, и информация в файлах должна быть идентична. |
Этим мы указали использовать в пароле не менее 8 символов, включающих в себя строчные и заглавные буквы латинского алфавита, а также цифры и спецсимволы. Так же можно добавить буквы Кириллицы и запретить использовать простые пароли (для примера Qwerty-1).
Чтобы изменения вступили в силу нужно выключить , а затем включить все ноды. Выполняется последовательно , вначале на ecss1 затем на ecss2. Для этого выполнить следующие команды:
sudo systemctl stop ecss-mediator.service sudo systemctl stop ecss-pa-sip.service sudo systemctl stop ecss-core.service sudo systemctl stop ecss-ds.service sudo systemctl stop ecss-mycelium.service |
sudo systemctl start ecss-mycelium.service sudo systemctl start ecss-ds.service sudo systemctl start ecss-core.service sudo systemctl start ecss-pa-sip.service sudo systemctl start ecss-mediator.service |
По умолчанию после инсталляции ECSS для доступа в CLI и web-конфигуратор автоматически создается пользователь admin со стандартным паролем password и пользователь support предназначенный для работы специалистов техподдержки .
Рекомендуется заменить дефолтный пароль "password" на более безопасный. Это можно выполнить как в CoCon, так и в Web интерфейсе.
/cocon/passwd admin |
Пример:
cocon/passwd admin [passwd] Changing password for admin Enter new password: Confirm new password: Password for user "admin" has been successfully changed |

Нужно создать новых пользователей с правами администратора системы, для каждого оператора. Пароль данных пользователей, должен исключить возможность подбора. Для генерации сложных паролей можно воспользоваться стандартной утилитой Linux — pwgen. Выполенить это можно как через Cocon, так и через web:
|
|
Сервис ecss-node использует для подключения к БД MySql пользователя "audit". Для его модификации требуется отредактировать файл /etc/ecss/global.config (секция cocon, параметр mysql_password). После модификации, для того чтобы изменения вступили в силу, потребуется перезагрузка сервисов ecss-mycelium.service, ecss-mediator.service, ecss-core.service, ecss-ds.service.
sudo nano /etc/ecss/global.config |
|
sudo systemctl restart ecss-mediator.service |
sudo systemctl restart ecss-mycelium.service |
sudo systemctl restart ecss-core.service |
sudo systemctl restart ecss-ds.service |
Эти сервисы используют для подключения к ДБ Postgres пользователя "postgres". Для модификации пароля необходимо выполнить команду dpkg-reconfigure для сервиса ecss-teleconference-ui /ecss-cc-ui соответственно.
sudo dpkg-reconfigure ecss-teleconference-ui |
sudo dpkg-reconfigure ecss-cc-ui |
В процессе конфигурации будет задан вопрос о пароле для пользователя address_book - необходимо указать новый пароль (в примере сервис ecss-teleconference-ui ).


Сервис ecss-restfs использует для подключения к ДБ Postgres пользователя "postgres". Для модификации пароля необходимо выполнить команду dpkg-reconfigure ecss-restfs.
В процессе конфигурации будет заданы вопросы:

Эти сервисы используют для подключения к ДБ MySql пользователей "address_book", "ecss_meeting_db", "calls_db". Для модификации пароля необходимо выполнить модификацию конфигурационного файла. Для сервиса ElphChatServer - /opt/elph-chat-server/stable/.elph-chat.env. Для сервиса ecss-call-history /opt/ecss-call-history/stable/.env.
sudo nano /opt/elph-chat-server/stable/.elph-chat.env |
|
sudo nano /opt/ecss-call-history/unstable/.env |
|
После изменения паролей требуется обновить сервис ElphChatServer и ecss-call-history
/opt/elph-chat-server/stable/.ecss-elph-chat-server.sh up |
/opt/elph-chat-server/stable/.ecss-call-history.sh up |
Этот сервис используют для подключения к ДБ MySql пользователя "web_conf". Для модификации пароля необходимо выполнить модификацию файла /usr/share/ecss/ecss-web-conf/settings.py.
sudo nano /usr/share/ecss/ecss-web-conf/settings.py |
|
Для применения изменений выполнить команду:
sudo dpkg-reconfigure ecss-web-conf |
Рекомендуется настроить свой firewall таким образом, чтобы Restfs был доступен только с самого сервера и недоступен внешне.
Если сервер или SBC имеет прямой доступ в интернет или корпоративную сеть, где не исключены разного рода попытки неавторизованных запросов или DDoS-атаки, нужно настроить список разрешенных IP или подсетей, с которых разрешен доступ к определенным портам. Для остальных доступ должен быт запрещен. Если в составе комплекса есть SBC, то в нем уже реализован необходимый функционал для защиты от внешних атак — динамический брандмауэр с механизмом распознавания атак и попыток несанкционированного доступа. В SBC также можно настроить черные/белые списки подсетей для доступа как по управлению, так и по SIP.
Рекомендуется не пренебрегать периодическими обновлениями системы, особенно при выпуске свежих версий пакетов, улучшающих функционал безопасности.
Рекомендуется всегда настраивать синхронизацию системных часов с доверенными источниками сетевого времени (NTP). Алгоритм настройки NTP приведён в разделе установка ecss-node входит в стандартную установку пакетов ECSS.
На серверах ECSS должны быть установлены пакеты openssh-client openssh-server или мета-пакет ssh, включающий в себя клиента и сервер.
Конфигурация сервера OpenSSH описана в файле /etc/ssh/sshd_config. Для более полного обеспечения безопасности необходимо изменить некоторые настройки, принятые по умолчанию.
В репозитории Ubuntu-18.04 LTS текущая версия OpenSSH_7.6p1. Нижеприведенные рекомендации по конфигурации для версий, начиная с 7.6.
В OpenSSH 7.0 и старше отключена поддержка протокола SSH 1.0 по умолчанию во время компиляции. Точно так же по умолчанию во время компиляции больше не активируется поддержка ключей diffie-hellman-group1-sha1 размером 1024 бит, хостов и пользовательских ключей ssh-dss, ssh-dss-cert-*. Не поддерживается формат сертификатов v00, а опция PermitRootLogin по умолчанию изменила значение с yes на prohibit-password.
Для использования только заслуживающих доверия протоколов обмена ключами в /etc/ssh/sshd_config для сервера следует указать:
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256 |
Аналогичные настройки для клиента, в /etc/ssh/ssh_config:
Host *
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha25 |
В SSH поддерживается четыре алгоритма аутентификации по открытым ключам: DSA, ECDSA, Ed25519 и RSA.
ECDSA завязан на технологиях NIST и должен быть отключен. Так как размер ключей DSA не может превышать 1024 бит, его тоже следует отключить. Поэтому рекомендуется удалить все ключи:
cd /etc/ssh rm ssh_host_*key* |
Далее следует сгенерировать ключ RSA большего размера, а также добавить ключ ed25519:
sudo ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key sudo ssh-keygen -o -a 100 -t ed25519 -f /etc/ssh/ssh_host_ed25519_key |
Из 15 поддерживаемых в SSH алгоритмов симметричного шифрования, используемых для организации защиты установленного канала связи, безопасными можно считать chacha20-poly1305, aes*-ctr и aes*-gcm. Шифры 3des-cbc и arcfour потенциально уязвимы в силу использования DES и RC4, cast128-cbc применяет слишком короткий размер блока (64 бит).
Поэтому в /etc/ssh/sshd_config рекомендуется добавить:
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr |
В /etc/ssh/ssh_config:
Host *
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr |
Для шифров в режиме CTR для гарантирования целостности передаваемых блоков доверия заслуживает только метод Encrypt-then-MAC ("*-etm", MAC добавляется к уже зашифрованному блоку). Методы MAC-then-encrypt и Encrypt-and-MAC потенциально подвержены атакам. Из 18 доступных в SSH алгоритмов MAC сразу следует отбросить основанные на хэшах MD5 и SHA1, не стойких к выявлению коллизий, а также алгоритмы, использующие размеры ключей менее 128 бит и размеры тегов менее 256 бит. В итоге, наиболее безопасными MAC можно считать hmac-sha2-512-etm и hmac-sha2-256-etm.
В /etc/ssh/sshd_config:
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com |
В /etc/ssh/ssh_config:
Host * MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com |
Наиболее простым способом получения контроля за SSH-соединением является захват ключей на стороне клиента или сервера. Рекомендации сводятся к соблюдению типовых правил поддержания безопасности системы:
Для защиты ключей следует выбрать надёжный пароль доступа к клиентским файлам ключей. При формировании ключа для увеличения числа итераций хэширования можно использовать опцию "ssh-keygen -o -a число", что усложнит подбор пароля. Также можно сохранить ключи только на внешнем носителе, подключая его только во время соединения по SSH.
Добавляем параметр AllowUsers, которого нет в конфигурационном файле по умолчанию. Этот параметр разрешает доступ к серверу по протоколу SSH только для перечисленных пользователей.
В /etc/ssh/sshd_config:
AllowUsers dmitry support |
Эти строки отвечают за настройку разграничений по сетевым интерфейсам, сетевому адресу или имени компьютера. По умолчанию сервер «слушает» (принимает подключения) на всех сетевых интерфейсах. Если нужно оставить подключение только через определенные интерфейсы, то раскомментировать строку:
ListenAddress 192.168.1.21 ListenAddress 10.16.33.5 |
В этой же строке можно явно указать порт, предварительно закомментировав (поставив символ # в начале строки)
#ListenAddress 0.0.0.0
Если есть вероятность попыток подбора пароля (например сервер в публичной сети) можно изменить порт на другой.
Port 22025 |
По умолчанию используется 22 порт. Изменим его на нестандартный порт 22025 — это избавит наш сервер от сетевых роботов, которые автоматически сканируют интернет в поиске открытых портов и пытаются через них подключиться. В основном, боты настроены на поиск стандартных портов. Это не избавит от сканирования человеком, но для защиты от человека существует файервол, хитрые способы открытия порта и пр.
Примерный листинг получившихся файлов конфигурации:
|
|
Проверить синтаксис файла конфигурации можно командой:
sshd -t |
Посмотреть текущие настройки сервера:
sshd -T |