Рекомендации по обеспечению безопасности системы
Рекомендации по безопасной настройке носят общий характер и подходят для большинства инсталляций. Настоящие рекомендации в значительной степени повышают безопасность эксплуатации устройства, но не являются исчерпывающими. В зависимости от схемы применения устройства необходимо настраивать и другие параметры безопасности. В некоторых специфических случаях выполнение данных рекомендаций может привести к неработоспособности сети. При настройке устройства стоит в первую очередь следовать техническим требованиям и регламентам сетей, в которых будет эксплуатироваться данное устройство.
Telnet - небезопасный протокол.
В Ubuntu действует политика "не открывать порты", которая распространяется на установку по умолчанию. Небезопасный протокол telnet по умолчанию не включен на сервере Ubuntu.
Не рекомендуется устанавливать telnet на серверах ECSS .
Общие требования
Для обеспечения необходимых настроек безопасности системы рекомендуется:
Telnet
В Ubuntu по умолчанию telnet выключен , так как не является безопасным протоколом. Не рекомендуется включать его.
Отключить доступ через root на сервер
По умолчанию учетная запись root отключена в Ubuntu, в отличии от других дистрибутивов Linux. Если root все-таки включен, отключить можно командой:
sudo passwd -l root
Включить доступ только по ключам ssh
В /etc/ssh/sshd_config:
PasswordAuthentication no ChallengeResponseAuthentication no
Использовать безопасные ключи rsa -b 4096
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
Автоматическая генерация паролей для SIP-пользователей
Система 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 │ └────────────────────────┘
Просмотр учетных данных:
сгенерированный пароль --> VmaifqfMais5
/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 │
. . .
Изменение паролей пользователей
Изменение политики создания паролей пользователей "cocon"
Отредактировать файл (нас интересует выделенная секция)
%% File autogenerate.%% For change, remove it and run: dpkg-reconfigure [ {ecss_env, [ {config_root, "/etc/ecss"}, {data_root, "/var/lib/ecss"}, {log_root, "/var/log/ecss"} ]}, {rps, [ {thresholds, [ {disk, [ {enabled, true}, {points, ["/var/lib/mysql"]} ]} ]}, {monitoring, [ %{applications, [%%APPS_MON%%]} %{interfaces, [{noAlarmFor, [%%IFACES_MON%%]}]} ]} ]}, {chronica, [ {tty_enabled, true} %applyed for journald ]}, {cocon, [ % ms, delay for node in cluster group {heartbeat, 3000}, % name of amqp exchange {exchange, "ccn.direct"}, % Type DB storage for user authentication (ldap, mysql, undefined) %% default: mysql {user_data, 'mysql'}, % Type DB for audit data (ldap, mysql, undefined) %% default: mysql {audit, 'mysql'},
%%%% Settings LDAP (not required) %% ldap ip {ldap_server_ip, "cocon.ldap.ecss"}, %% ldap port {ldap_server_port, "389"}, %% DN for storage users {ldap_people_dn, "ou=people,dc=ecss"}, %% DN for storage groups {ldap_groups_dn, "ou=groups,dc=ecss"}, %% DN for storage events {ldap_audit_dn, "ou=audit,dc=ecss"}, %% DN for ldap usages (audit, etc) {ldap_system_username, "cn=admin,dc=ecss"}, {ldap_system_password, "admin"},
%%%% Settings MySQL (not required) %% MySQL ip {mysql_server_ip, "cocon.mysql.ecss"}, %% MySQL port %% default: undefined {mysql_server_port, "3306"}, {mysql_username, "audit"}, {mysql_password, "audit"}, % Usage BD {mysql_db, "ecss_audit"},
% Time (in UTC) for every day cleaning audit data {audit_clean_time, {2, 0, 0}}, % Count of date for save audit data {audit_save_days, 90}, {mount_cmd, "/etc/ecss/ssh_command"}, %% Password expire lifetime (infinity or days count) {password_lifetime, infinity}, %% Allow reuse of old CoCon passwords {allow_passwords_reuse, true}, %% Maximum size of password history {password_history_depth, 10}, % Security restrictions for CoCon's users' password {password_restrictions, [ % Minimum password length (digit or unlimited) {min_length, unlimited}, % Maximum password length (digit or unlimited) {max_length, unlimited}, % Digits symbol required [0..9] {digits_required, false}, % Special characters required: ( !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~) {special_characters_required, false}, % Latin letter at uppercase special_characters_required [A..Z] {uppercase_letters_required, false}, % Latin letter at lowercase special_characters_required [a..z] {lowercase_letters_required, false}, % National (other unicode) characters allowed or not {national_characters_not_allowed, false}, % List of prohibited passwords {banned_passwords, []} ]} ]}, {ecss_mgmt, [ {os_cmd, [ {host_shell, "trap 'echo INTERRUPTED' SIGINT; ssh localhost"} ]} ]}].
По умолчанию значение параметров = unlimited/false. Нужно их установить / активировать.
. . .
% Security restrictions for CoCon's users' password {password_restrictions, [ % Minimum password length (digit or unlimited) {min_length, 8}, % Maximum password length (digit or unlimited) {max_length, 14}, % Digits symbol required [0..9] {digits_required, true}, % Special characters required: ( !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~) {special_characters_required,true}, % Latin letter at uppercase special_characters_required [A..Z] {uppercase_letters_required,true}, % Latin letter at lowercase special_characters_required [a..z] {lowercase_letters_required,true}, % National (other unicode) characters allowed or not {national_characters_not_allowed, false}, % List of prohibited passwords {banned_passwords, []} ]}
. . .
Этим мы указали использовать в пароле не менее 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
Пользователь "admin"
По умолчанию после инсталляции ECSS для доступа в CLI и web-конфигуратор автоматически создается пользователь admin со стандартным паролем password и пользователь support предназначенный для работы специалистов техподдержки .
Рекомендуется заменить дефолтный пароль "password" на более безопасный. Это можно выполнить как в CoCon, так и в Web интерфейсе.
В CoCon
выполняется в CoCon
/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
В Web
- Открыть приложение "Управление пользователями"
- Выбрать пользователя "admin"
- Выбрать "Редактировать"
- В окне "Редактировать пользователя "admin"", указать Старый пароль/Новый пароль/Подтвердить новый пароль.
- Сохранить

Пользователи для операторов
Нужно создать новых пользователей с правами администратора системы, для каждого оператора. Пароль данных пользователей, должен исключить возможность подбора. Для генерации сложных паролей можно воспользоваться стандартной утилитой Linux — pwgen. Выполенить это можно как через Cocon, так и через web:
/cocon/add-user test Enter password: Confirm password: ECSS global user: [n]/y ?> yECSS global administrator: [n]/y ?> yUser test has been successfully created
/cocon/list users ┌───────┬─────────────────────────────────────────┬─────┐│ Login │ Groups │Roles│├───────┼─────────────────────────────────────────┼─────┤│test │ecss-admin │ ││ │ecss-test_domain-domain-admin │ ││ │ecss-test_domain-domain-user │ ││ │ecss-user │ ││support│ecss-admin │ ││ │ecss-user │ ││admin │ecss-admin │ ││ │ecss-test_domain-domain-admin │ ││ │ecss-test_domain-domain-user │ ││ │ecss-user │ ││abf │ecss-admin │ ││ │ecss-pcap │ ││ │ecss-subscriber-portal │ ││ │ecss-test_domain-domain-admin │ ││ │ecss-test_domain-domain-subscriber-portal│ ││ │ecss-test_domain-domain-user │ ││ │ecss-user │ │└───────┴─────────────────────────────────────────┴─────┘
- Открыть приложение "Управление пользователями";
- Выбрать "Добавить";
- Указать Имя нового пользователя/Пароль нового пользователя/Подтвердить пароль;
- Выбрать какие разрешения предоставить новому пользователю и для каких доменов;
- Создать;
- Сохранить.

MySQL пароль для пользователя "root"
Аналогичные требования и для пользователя mysql c правами root. При необходимости изменения пароля выполните следующие действия:
sudo mysql -uroot
select user,host,authentication_string,plugin from mysql.user where user="root";
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
FLUSH PRIVILEGES;
select user,host,authentication_string,plugin from mysql.user where user="root";
quit;
mysql -uroot -ppassword
sudo mysql -uroot . . . Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> select user,host,authentication_string,plugin from mysql.user where user="root"; +------+-----------+-----------------------+-------------+ | user | host | authentication_string | plugin | +------+-----------+-----------------------+-------------+ | root | localhost | | auth_socket | +------+-----------+-----------------------+-------------+ 1 row in set (0,00 sec) mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password'; Query OK, 0 rows affected (0,01 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0,01 sec) mysql> select user,host,authentication_string,plugin from mysql.user where user="root"; +------+-----------+------------------------------------------------------------------------+-----------------------+ | user | host | authentication_string | plugin | +------+-----------+------------------------------------------------------------------------+-----------------------+ | root | localhost | $A$005$>g!J9p'NM*F5XUeBmcfdD0tL/wx0tCER1GAmzPm71peYB8TpQ8.PWn0 | caching_sha2_password | +------+-----------+------------------------------------------------------------------------+-----------------------+ 1 row in set (0,00 sec) mysql> quit Bye mysql -uroot -ppassword mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 410 Server version: 5.7.42-0ubuntu0.18.04.1-log (Ubuntu) Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Изменение паролей других пользователей MySQL
Посмотреть список пользователей в БД MySql можно командой:
в MySql
select user,host,authentication_string,plugin from mysql.user;
mysql -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 4160Server version: 8.0.41-0ubuntu0.22.04.1 (Ubuntu)
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select user,host,authentication_string,plugin from mysql.user;
+------------------+-----------+------------------------------------------------------------------------+-----------------------+| user | host | authentication_string | plugin |+------------------+-----------+------------------------------------------------------------------------+-----------------------+
. . .
| address_book | localhost | $A$005$'DNECw >7eF{kaJtUxtOLQjMYR6xZDDqo/OsxwvymADJtE7ljLVcGwkVk6. | caching_sha2_password || audit | localhost | $A$005$PS"cmwT0.%mMH~Xs[Ch0YTviF.nksrbJcSu29GeEFPjGG03PwurU7ytORLAA | caching_sha2_password || calls_db | localhost | $A$005$xCd}G7+\v.h]B.@jMQa1ooxctVSu7pluTHQokfKtvqRKGcqjBqaVggU.GD | caching_sha2_password || dialer_db | localhost | $A$005$q 6)^4jS%c[u8GX%6xBB9eO0KvyfyAhZwLHjLpW7kdc4Iz2J20796.WyeZ4 | caching_sha2_password || ecss_chat | localhost | $A$005$H^h2'Yq}3+W!r:s68ws1z4T0GkCpVHluj.B3NIGASqVcP5dWEYRKD6svb8 | caching_sha2_password || ecss_meeting_db | localhost | $A$005$6!o0!mEId8bP!20OgwCZIZg.49ZKAVKNOKdSqSPCUqSMHoGHfqNlgtQ/ | caching_sha2_password || ecss_system | localhost | $A$005$/I+uj�,[9,ayq/wPK2N/3l4tOs8SMd3icgGg7nGuf3170uPG1VX80DaE/W1 | caching_sha2_password || elph_api | localhost | $A$005$jmGwL0{1n5:;0Zi0mxf5kVJlGLLFLOA3sd947hOjJg3fA8p1NxT3Z2/ | caching_sha2_password || history_db | localhost | $A$005$^q|&IXAuT@YX4\q V68zU.c0o0QExgGXj1HmDxNGlRNzzkqbpGZC9MkGf0OJ8 | caching_sha2_password || numbers_db | localhost | $A$005$-Bp\Ip:6 )VcR8UvCu/f/FvyA7/1JbF5.dgr0rQ4OREn/xEdx2vf/uZWJ78 | caching_sha2_password || root | localhost | $A$005$|4#-/5.ZOTJ|G'*;qu.EhI1j110dTurmZidj2WGsgMqd7L3M3Zg6VBx/FD9 | caching_sha2_password || statistics | localhost | $A$005$dxc=fAN&C&FV1hwQLDs3EauEyrMU/B5tOxFy9zFd6.ZlbA6MP6n26 | caching_sha2_password || subscribers | localhost | $A$005$.hj1E(25dgenVUHl0cgEqLVoEGADFagjLEcTk.7JS6knQgLtKFHgAP4n1 | caching_sha2_password || web_conf | localhost | $A$005$;"@t0 )Lpg/5e0RAKJl.cDzDP1GleL6BqeL6CN1vHiUoL2W6Nflt8 | caching_sha2_password |+------------------+-----------+------------------------------------------------------------------------+-----------------------+
Как поменять пароль для пользователя "root" показано выше.
Теперь как изменить пароли для других пользователей:
В директории /lib/ecss/db-deployment/databases/ находятся поддиректории для отдельных таблиц БД MySql. В каждой из которых есть конфигурационный файл users.cnf, используемый сервисом ecss-mysql при первоначальной установке или конфигурации.
/lib/ecss/db-deployment/databases$ ll total 52 drwxr-xr-x 13 root root 4096 окт 7 12:05 ./ drwxr-xr-x 4 root root 4096 окт 7 12:05 ../ drwxr-xr-x 3 root root 4096 окт 13 12:44 ecss_address_book/ drwxr-xr-x 3 root root 4096 окт 7 12:05 ecss_audit/ drwxr-xr-x 3 root root 4096 окт 7 12:05 ecss_calls_db/ drwxr-xr-x 3 root root 4096 окт 7 12:05 ecss_dialer_db/ drwxr-xr-x 3 root root 4096 окт 7 12:05 ecss_meeting_db/ drwxr-xr-x 3 root root 4096 окт 7 12:05 ecss_numbers_db/ drwxr-xr-x 3 root root 4096 окт 7 12:05 ecss_statistics/ drwxr-xr-x 3 root root 4096 окт 7 12:05 ecss_subscribers/ drwxr-xr-x 3 root root 4096 окт 7 12:05 ecss_system/ drwxr-xr-x 3 root root 4096 окт 7 12:05 history_db/ drwxr-xr-x 3 root root 4096 окт 7 12:05 web_conf/
cat users.cnfuser=address_bookpassword=address_bookgrant=CREATE, DELETE, DROP, INSERT, SELECT, UPDATE, EXECUTE, EVENT, ALTER
user=elph_apipassword=elph_apigrant=CREATE, DELETE, DROP, INSERT, SELECT, UPDATE, EXECUTE, EVENT, ALTER
user=ecss_chatpassword=ecss_chatgrant=CREATE, DELETE, DROP, INSERT, SELECT, UPDATE, EXECUTE, EVENT, ALTER
При коррекции пароля нужно отредактировать данный файл для каждой из таблиц БД MySql (в файле могут быть описаны один или несколько пользователей). А затем нужно выполнить реконфигурацию сервиса ecss-mysql.
на обоих хостах
sudo nano /lib/ecss/db-deployment/databases/ecss_address_book/users.cnf
Заменим значение пароля (в примере) address_book на address_book@2 / elph_api на elph_api!9 / ecss_chat на ecss_chat@7.
user=address_book password=address_book@2 grant=CREATE, DELETE, DROP, INSERT, SELECT, UPDATE, EXECUTE, EVENT, ALTER user=elph_api password=elph_api!9 grant=CREATE, DELETE, DROP, INSERT, SELECT, UPDATE, EXECUTE, EVENT, ALTER user=ecss_chat password=ecss_chat@7 grant=CREATE, DELETE, DROP, INSERT, SELECT, UPDATE, EXECUTE, EVENT, ALTER
После изменения паролей для всех пользователей: address_book, lph_api, ecss_chat, audit, calls_db, dialer_db, ecss_meeting_db, numbers_db, statistics, subscribers, ecss_system, history_db, web_conf → выполнить команду: dpkg-reconfigure ecss-mysql
на обоих хостах
sudo dpkg-reconfigure ecss-mysql
При выполнении команды "sudo dpkg-reconfigure ecss-mysql" будет задан вопрос пароля для пользователя root на подключение к БД MySql, не забудьте, что пароль был изменен на предыдущем шаге.
На данном шаге были изменены пароли для различных пользователей для подключения к БД MySql. Но пароли для этих же пользователей в сервисах-клиентов остались прежними. Их так же нужно обновить.
Изменение пароля пользователя для клиента ecss-node
Сервис 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
. . . %%%% Settings MySQL (not required) %% MySQL ip {mysql_server_ip, "cocon.mysql.ecss"}, %% MySQL port %% default: undefined {mysql_server_port, "3306"}, {mysql_username, "audit"}, {mysql_password, "audit!1"}, % Usage BD {mysql_db, "ecss_audit"},
. . .
на обоих хостах
sudo systemctl restart ecss-mediator.service
на обоих хостах
sudo systemctl restart ecss-mycelium.service
на обоих хостах
sudo systemctl restart ecss-core.service
на обоих хостах
sudo systemctl restart ecss-ds.service
Изменение пароля пользователя для клиентов ecss-teleconference-ui и ecss-cc-ui
Эти сервисы используют для подключения к ДБ MySql пользователя "address_book". Для модификации пароля необходимо выполнить команду 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
Сервис ecss-restfs использует для подключения к ДБ MySql пользователя "address_book". Для модификации пароля необходимо выполнить команду dpkg-reconfigure ecss-restfs.
В процессе конфигурации будет заданы вопросы:




Изменение паролей пользователей для SSW (address_book, calls_db, dialer_db, ecss_meeting_db, history_db, numbers_db, statistics, subscribers)
Замена пароля для пользователя "address_book" в SSW выполняется через CoCon:
выполняется в CoCon
/system/address-book/properties/set password
/system/address-book/properties/info ┌───────────────────┬───────────────────────┐│ Property │ Value │├───────────────────┼───────────────────────┤│auto_create_account│true ││auto_delete_account│true ││database │ecss_address_book ││host │address-book.mysql.ecss││password │address_book ││port │3306 ││username │address_book │└───────────────────┴───────────────────────┘
/system/address-book/properties/set password address_book@2Property "password" successfully changed from: address_book toaddress_book@2.
/system/address-book/properties/info┌───────────────────┬───────────────────────┐│ Property │ Value │├───────────────────┼───────────────────────┤│auto_create_account│true ││auto_delete_account│true ││database │ecss_address_book ││host │address-book.mysql.ecss││password │address_book@2 ││port │3306 ││username │address_book │└───────────────────┴───────────────────────┘
Замена пароля для пользователя "calls_db" в SSW выполняется через CoCon:
выполняется в CoCon
/cluster/core/core1/tts/db/set mysql_password
/cluster/core/core1/tts/db/info
┌──────────────┬──────────────┐
│ Property │ Value │
├──────────────┼──────────────┤
│mysql_database│ecss_calls_db │
│mysql_enabled │true │
│mysql_host │tts.mysql.ecss│
│mysql_password│calls_db │
│mysql_port │3306 │
│mysql_user │calls_db │
└──────────────┴──────────────┘
/cluster/core/core1/tts/db/set mysql_password calls_db^6
Property "mysql_password" successfully changed from:
calls_db
to
calls_db^6.
/cluster/core/core1/tts/db/info
┌──────────────┬──────────────┐
│ Property │ Value │
├──────────────┼──────────────┤
│mysql_database│ecss_calls_db │
│mysql_enabled │true │
│mysql_host │tts.mysql.ecss│
│mysql_password│calls_db^6 │
│mysql_port │3306 │
│mysql_user │calls_db │
└──────────────┴──────────────┘
Замена пароля для пользователя "dialer_db" в SSW выполняется через CoCon:
выполняется в CoCon
/cluster/core/core1/dialer/db/set mysql_password
/cluster/core/core1/dialer/db/info
┌──────────────┬─────────────────┐
│ Property │ Value │
├──────────────┼─────────────────┤
│mysql_database│ecss_dialer_db │
│mysql_enabled │true │
│mysql_host │dialer.mysql.ecss│
│mysql_password│dialer_db │
│mysql_port │3306 │
│mysql_user │dialer_db │
└──────────────┴─────────────────┘
/cluster/core/core1/dialer/db/set mysql_password dialer_db&7
Property "mysql_password" successfully changed from:
dialer_db
to
dialer_db&7.
/cluster/core/core1/dialer/db/info
┌──────────────┬─────────────────┐
│ Property │ Value │
├──────────────┼─────────────────┤
│mysql_database│ecss_dialer_db │
│mysql_enabled │true │
│mysql_host │dialer.mysql.ecss│
│mysql_password│dialer_db&7 │
│mysql_port │3306 │
│mysql_user │dialer_db │
└──────────────┴─────────────────┘
Замена пароля для пользователя "ecss_meeting_db" в SSW выполняется через CoCon:
выполняется в CoCon
/cluster/core/core1/teleconference/db/set mysql_password
/cluster/core/core1/teleconference/db/info
┌──────────────┬───────────────┐
│ Property │ Value │
├──────────────┼───────────────┤
│mysql_database│ecss_meeting_db│
│mysql_enabled │true │
│mysql_host │tc.mysql.ecss │
│mysql_password│ecss_meeting_db│
│mysql_port │3306 │
│mysql_user │ecss_meeting_db│
└──────────────┴───────────────┘
/cluster/core/core1/teleconference/db/set mysql_password ecss_meeting_db#3
Property "mysql_password" successfully changed from:
ecss_meeting_db
to
ecss_meeting_db#3.
/cluster/core/core1/teleconference/db/info
┌──────────────┬─────────────────┐
│ Property │ Value │
├──────────────┼─────────────────┤
│mysql_database│ecss_meeting_db │
│mysql_enabled │true │
│mysql_host │tc.mysql.ecss │
│mysql_password│ecss_meeting_db#3│
│mysql_port │3306 │
│mysql_user │ecss_meeting_db │
└──────────────┴─────────────────┘
Замена пароля для пользователя "history_db" в SSW выполняется через CoCon:
выполняется в CoCon
/system/tc/set * mysql_password
/system/tc/info
┌─────────────────────┬────┬─────────────┐
│ Property │Node│ Value │
├─────────────────────┼────┼─────────────┤
│count_active_channels│ │infinity │
│enabled │ │true │
│mysql_database │ │history_db │
│mysql_enabled │ │false │
│mysql_host │ │tc.mysql.ecss│
│mysql_password │ │history_db │
│mysql_port │ │3306 │
│mysql_timeout │ │300000 │
│mysql_user │ │history_db │
└─────────────────────┴────┴─────────────┘
/system/tc/set * mysql_password history_db*8
Property "mysql_password" successfully changed from:
history_db
to
history_db*8.
/system/tc/info
┌─────────────────────┬────┬─────────────┐
│ Property │Node│ Value │
├─────────────────────┼────┼─────────────┤
│count_active_channels│ │infinity │
│enabled │ │true │
│mysql_database │ │history_db │
│mysql_enabled │ │false │
│mysql_host │ │tc.mysql.ecss│
│mysql_password │ │history_db*8 │
│mysql_port │ │3306 │
│mysql_timeout │ │300000 │
│mysql_user │ │history_db │
└─────────────────────┴────┴─────────────┘
Замена пароля для пользователя "numbers_db" в SSW выполняется через CoCon:
выполняется в CoCon
/cluster/storage/ds1/routing/numbers-db/properties/set mysql_password
/cluster/storage/ds1/routing/numbers-db/properties/info
┌──────────────┬──────────────────┐
│ Property │ Value │
├──────────────┼──────────────────┤
│mysql_database│ecss_numbers_db │
│mysql_enabled │true │
│mysql_host │numbers.mysql.ecss│
│mysql_password│numbers_db │
│mysql_port │3306 │
│mysql_user │numbers_db │
└──────────────┴──────────────────┘
/cluster/storage/ds1/routing/numbers-db/properties/set mysql_password numbers_db(9
Property "mysql_password" successfully changed from:
numbers_db
to
numbers_db(9.
/cluster/storage/ds1/routing/numbers-db/properties/info
┌──────────────┬──────────────────┐
│ Property │ Value │
├──────────────┼──────────────────┤
│mysql_database│ecss_numbers_db │
│mysql_enabled │true │
│mysql_host │numbers.mysql.ecss│
│mysql_password│numbers_db(9 │
│mysql_port │3306 │
│mysql_user │numbers_db │
└──────────────┴──────────────────┘
Замена пароля для пользователя "statistics" в SSW выполняется через CoCon:
выполняется в CoCon
/statistics/set mysql_password
/statistics/info
┌────────────────────────────┬─────────────────────┐
│ Property │ Value │
├────────────────────────────┼─────────────────────┤
│mysql_database │ecss_statistics │
│mysql_host │statistics.mysql.ecss│
│mysql_password │statistics │
│mysql_port │3306 │
│mysql_timeout │300000 │
│mysql_user │statistics │
│system_cc_upload_enabled │false │
│system_common_upload_enabled│false │
│system_ssw_upload_enabled │false │
│upload_enabled │false │
└────────────────────────────┴─────────────────────┘
/statistics/set mysql_password statistics)0
Property "mysql_password" successfully changed from:
statistics
to
statistics)0.
/statistics/info
┌────────────────────────────┬─────────────────────┐
│ Property │ Value │
├────────────────────────────┼─────────────────────┤
│mysql_database │ecss_statistics │
│mysql_host │statistics.mysql.ecss│
│mysql_password │statistics)0 │
│mysql_port │3306 │
│mysql_timeout │300000 │
│mysql_user │statistics │
│system_cc_upload_enabled │false │
│system_common_upload_enabled│false │
│system_ssw_upload_enabled │false │
│upload_enabled │false │
└────────────────────────────┴─────────────────────┘
Замена пароля для пользователя "subscribers" в SSW выполняется через CoCon:
выполняется в CoCon
/domain/<DOMAIN>/subscriber-portal/properties/set connection <IP add MySql> subscribers <New Password> ecss_subscribers
/domain/test_domain/subscriber-portal/properties/info
┌───────────────────────────┬───────────┬───────────────────────────────────────────────────────────────────────────────────────┐
│ Property │ Domain │ Value │
├───────────────────────────┼───────────┼───────────────────────────────────────────────────────────────────────────────────────┤
│auto_create_account │test_domain│true │
│auto_delete_account │test_domain│true │
│connection │test_domain│Host: 10.0.10.10; Database: ecss_subscribers; Login: subscribers; Password: subscribers│
│enable │test_domain│true │
│expire_time │test_domain│3600 │
│ldap_authentication_enabled│test_domain│false │
│ldap_server_id │test_domain│ │
│web_sp_server │test_domain│http://sp.web.ecss/ │
└───────────────────────────┴───────────┴───────────────────────────────────────────────────────────────────────────────────────┘
/domain/test_domain/subscriber-portal/properties/set connection 10.0.10.10 subscribers subscribers!0 ecss_subscribers
Property "connection" successfully changed from:
Host: 10.0.10.10; Database: ecss_subscribers; Login: subscribers; Password: subscribers
to
Host: 10.0.10.10; Database: ecss_subscribers; Login: subscribers; Password: subscribers!0.
/domain/test_domain/subscriber-portal/properties/info
┌───────────────────────────┬───────────┬─────────────────────────────────────────────────────────────────────────────────────────┐
│ Property │ Domain │ Value │
├───────────────────────────┼───────────┼─────────────────────────────────────────────────────────────────────────────────────────┤
│auto_create_account │test_domain│true │
│auto_delete_account │test_domain│true │
│connection │test_domain│Host: 10.0.10.10; Database: ecss_subscribers; Login: subscribers; Password: subscribers!0│
│enable │test_domain│true │
│expire_time │test_domain│3600 │
│ldap_authentication_enabled│test_domain│false │
│ldap_server_id │test_domain│ │
│web_sp_server │test_domain│http://sp.web.ecss/ │
└───────────────────────────┴───────────┴─────────────────────────────────────────────────────────────────────────────────────────┘
Проверить можно командой: domain/<DOMAIN>/subscriber-portal/check-connection
/domain/test_domain/subscriber-portal/check-connection Connection successful
Изменение паролей пользователей для клиентов ElphChatServer и ecss-call-history
Эти сервисы используют для подключения к ДБ 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.
на сервере Chat Server/Call History
sudo nano /opt/elph-chat-server/stable/.elph-chat.env
. . .
# Параметры подключения к ecss-mysql (БД meeting-db - для работы чатов телеконференций)ECSS_MEETING_DB_HOST="${ELPH_SSW}"ECSS_MEETING_DB_PORT=3306ECSS_MEETING_DB_NAME=ecss_meeting_dbECSS_MEETING_DB_USER=ecss_meeting_dbECSS_MEETING_DB_PASS=ecss_meeting_db#3
ECSS_ADDRESSBOOK_DB_NAME=ecss_address_bookECSS_ADDRESSBOOK_DB_PASSWORD=address_book@2ECSS_ADDRESSBOOK_DB_USER=address_book
. . .
на сервере Chat Server/Call History
sudo nano /opt/ecss-call-history/unstable/.env
. . .
#####################################################
# External endpoints
#####################################################
# ecss-meeting DB
ECSS_MEETING_DB_HOST="192.168.107.108"
ECSS_MEETING_DB_PORT=3306
ECSS_MEETING_DB_NAME=ecss_meeting_db
ECSS_MEETING_DB_USER=ecss_meeting_db
ECSS_MEETING_DB_PASS=ecss_meeting_db%5
# ecss-calls DB
ECSS_CALLS_DB_HOST="192.168.107.108"
ECSS_CALLS_DB_PORT=3306
ECSS_CALLS_DB_NAME=ecss_calls_db
ECSS_CALLS_DB_USER=calls_db
ECSS_CALLS_DB_PASS=calls_db^6
ECSS_CALLS_DB_TIMEZONE=+07:00
# ecss-addressbook DB
ECSS_ADDRESS_BOOK_DB_HOST="192.168.107.108"
ECSS_ADDRESS_BOOK_DB_PORT=3306
ECSS_ADDRESS_BOOK_DB_NAME=ecss_address_book
ECSS_ADDRESS_BOOK_DB_USER=address_book
ECSS_ADDRESS_BOOK_DB_PASS=address_book@2
#####################################################
. . .
После изменения паролей требуется обновить сервис ElphChatServer и ecss-call-history
ElphChatServer
/opt/elph-chat-server/stable/.ecss-elph-chat-server.sh up
ecss-call-history
/opt/elph-chat-server/stable/.ecss-call-history.sh up
Изменение пароля пользователя для клиента ecss-web-configurator
Этот сервис используют для подключения к ДБ MySql пользователя "web_conf". Для модификации пароля необходимо выполнить модификацию файла /usr/share/ecss/ecss-web-conf/settings.py.
/usr/share/ecss/ecss-web-conf/settings.py
sudo nano /usr/share/ecss/ecss-web-conf/settings.py
. . .
_DEB_USER = 'web_conf'_DEB_PASS = '258741'_DEB_HOST = '127.0.0.1'_DEB_PORT = '3306'
. . .
Для применения изменений выполнить команду:
sudo dpkg-reconfigure ecss-web-conf
Использовать SBC, настроить firewall, ACL
Рекомендуется настроить свой firewall таким образом, чтобы Restfs был доступен только с самого сервера и недоступен внешне.
Если сервер или SBC имеет прямой доступ в интернет или корпоративную сеть, где не исключены разного рода попытки неавторизованных запросов или DDoS-атаки, нужно настроить список разрешенных IP или подсетей, с которых разрешен доступ к определенным портам. Для остальных доступ должен быт запрещен. Если в составе комплекса есть SBC, то в нем уже реализован необходимый функционал для защиты от внешних атак — динамический брандмауэр с механизмом распознавания атак и попыток несанкционированного доступа. В SBC также можно настроить черные/белые списки подсетей для доступа как по управлению, так и по SIP.
Обновлять Ubuntu и утилиты сервера при выходе пакета безопасности
Рекомендуется не пренебрегать периодическими обновлениями системы, особенно при выпуске свежих версий пакетов, улучшающих функционал безопасности.
NTP
Рекомендуется всегда настраивать синхронизацию системных часов с доверенными источниками сетевого времени (NTP). Алгоритм настройки NTP приведён в разделе установка ecss-node входит в стандартную установку пакетов ECSS.
Настройка безопасности OpenSSH
На серверах ECSS должны быть установлены пакеты openssh-client openssh-server или мета-пакет ssh, включающий в себя клиента и сервер.
Настройка конфигурации сервера и клиента 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
Код аутентичности сообщения (MAC)
Для шифров в режиме 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-соединением является захват ключей на стороне клиента или сервера. Рекомендации сводятся к соблюдению типовых правил поддержания безопасности системы:
- оперативная установка обновлений, установка программ только из надёжных источников;
- установка только действительно необходимых программ и сервисов;
- использование программ, для которых доступны исходные тексты, включение дополнительных механизмов защиты (Grsecurity, сборка с флагом -fstack-protector).
Для защиты ключей следует выбрать надёжный пароль доступа к клиентским файлам ключей. При формировании ключа для увеличения числа итераций хэширования можно использовать опцию "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 — это избавит наш сервер от сетевых роботов, которые автоматически сканируют интернет в поиске открытых портов и пытаются через них подключиться. В основном, боты настроены на поиск стандартных портов. Это не избавит от сканирования человеком, но для защиты от человека существует файервол, хитрые способы открытия порта и пр.
Примерный листинг получившихся файлов конфигурации:
# $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
Port 22025
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
ListenAddress 192.168.1.21
ListenAddress 10.16.33.5
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes
# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
#AuthorizedPrincipalsFile none
#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
# no default banner path
#Banner none
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
# override default of no subsystems
Subsystem sftp /usr/lib/openssh/sftp-server
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
# @override for ECSS
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key
# This is the ssh client system-wide configuration file. See
# ssh_config(5) for more information. This file provides defaults for
# users, and the values can be changed in per-user configuration files
# or on the command line.
# Configuration data is parsed as follows:
# 1. command line options
# 2. user-specific file
# 3. system-wide file
# Any configuration value is only changed the first time it is set.
# Thus, host-specific definitions should be at the beginning of the
# configuration file, and defaults at the end.
# Site-wide defaults for some commonly used options. For a comprehensive
# list of available options, their meanings and defaults, please see the
# ssh_config(5) man page.
Host *
# ForwardAgent no
# ForwardX11 no
# ForwardX11Trusted yes
# PasswordAuthentication yes
# HostbasedAuthentication no
# GSSAPIAuthentication no
# GSSAPIDelegateCredentials no
# GSSAPIKeyExchange no
# GSSAPITrustDNS no
# BatchMode no
# CheckHostIP yes
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_ecdsa
# IdentityFile ~/.ssh/id_ed25519
# Port 22
# Protocol 2
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
# MACs hmac-md5,hmac-sha1,umac-64@openssh.com
# EscapeChar ~
# Tunnel no
# TunnelDevice any:any
# PermitLocalCommand no
# VisualHostKey no
# ProxyCommand ssh -q -W %h:%p gateway.example.com
# RekeyLimit 1G 1h
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
# @override for ECSS
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
Проверить синтаксис файла конфигурации можно командой:
sshd -t
Посмотреть текущие настройки сервера:
sshd -T