Рекомендации по безопасной настройке носят общий характер и подходят для большинства инсталляций. Настоящие рекомендации в значительной степени повышают безопасность эксплуатации устройства, но не являются исчерпывающими. В зависимости от схемы применения устройства необходимо настраивать и другие параметры безопасности. В некоторых специфических случаях выполнение данных рекомендаций может привести к неработоспособности сети. При настройке устройства стоит в первую очередь следовать техническим требованиям и регламентам сетей, в которых будет эксплуатироваться данное устройство.
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 │ └────────────────────────┘
Просмотр учетных данных:
/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"
Отредактировать файл (нас интересует выделенная секция)
По умолчанию значение параметров = unlimited/false. Нужно их установить / активировать.
Этим мы указали использовать в пароле не менее 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/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:
Изменение пароля пользователя для клиента 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
Эти сервисы используют для подключения к ДБ 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
Сервис ecss-restfs использует для подключения к ДБ Postgres пользователя "postgres". Для модификации пароля необходимо выполнить команду dpkg-reconfigure ecss-restfs.
В процессе конфигурации будет заданы вопросы:
Изменение паролей пользователей для клиентов 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.
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
. . .
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
/opt/elph-chat-server/stable/.ecss-elph-chat-server.sh up
/opt/elph-chat-server/stable/.ecss-call-history.sh up
Изменение пароля пользователя для клиента ecss-web-configurator
Этот сервис используют для подключения к ДБ MySql пользователя "web_conf". Для модификации пароля необходимо выполнить модификацию файла /usr/share/ecss/ecss-web-conf/settings.py.
sudo nano /usr/share/ecss/ecss-web-conf/settings.py
. . .
_DEB_DB_NAME = 'ecss_web_conf'
_DEB_USER = 'postgres'
_DEB_PASS = 'postgres1'
_DEB_HOST = '127.0.0.1'
_DEB_PORT = '5439'
_DEB_POOL_SIZE = '10'
. . .
Для применения изменений выполнить команду:
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 — это избавит наш сервер от сетевых роботов, которые автоматически сканируют интернет в поиске открытых портов и пытаются через них подключиться. В основном, боты настроены на поиск стандартных портов. Это не избавит от сканирования человеком, но для защиты от человека существует файервол, хитрые способы открытия порта и пр.
Примерный листинг получившихся файлов конфигурации:
Проверить синтаксис файла конфигурации можно командой:
sshd -t
Посмотреть текущие настройки сервера:
sshd -T




