Рекомендации по обеспечению безопасности системы
Общие требования
Для обеспечения необходимых настроек безопасности системы рекомендуется:
Отключить доступ через 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-абонентов генерировать пароли , которые соответствуют рекомендуемым требованиям безопасности.
Пример декларации абонента:
admin@mycelium1@ecss1:/$ domain/biysk.local/sip/user/declare ctx_from_local loc.gr 240800 alias-as-user qop_authentication common_login sip3854240800 auto-generation Executed on the sip1@ecss1 Intermediate (incomplete) result: Declaration for range: 240800@biysk.local..240800@biysk.local (1) ... 1 interfaces check for existing ... [**********************************************************************] 50mks 1 users interfaces declaration ... [**********************************************************************] 5ms 1 users aliases declaration ... [**********************************************************************] 29ms 322 interfaces recall to base [**********************************************************************] 109ms Executed on the sip1@ecss1 ┌────────────────────────┐ │ declared 1 subscribers │ └────────────────────────┘ [exec at: 23.01.2020 22:53:18, exec time: 534ms, nodes: sip1@ecss1]
Просмотр учетных данных:
admin@mycelium1@ecss1:/$ domain/biysk.local/sip/user/info loc.gr 240800@biysk.local 1 make users list ... [**********************************************************************] 19mks 1 users information read ... [**********************************************************************] 14ms Executed on the sip1@ecss1 ┌─────────────────────┬─────────────────────────────────────────────┐ │ User │ 240800@biysk.local │ ├─────────────────────┼─────────────────────────────────────────────┤ │internal iface name │062bc20adc06e101 │ │isActive │false │ │group │loc.gr │ │authentication │sip3854240800:uc7cXcnuyunu (ds) use qop: true│ ...
Изменить пароли на безопасные
По умолчанию после инсталляции ECSS для доступа в cli и web-конфигуратор автоматически создается пользователь admin со стандартным паролем password.
Нужно создать нового пользователя с правами администратора системы, у которого логин и пароль исключат возможность подбора. Рекомендуется использовать не менее 8 символов, включающие в себя строчные и заглавные буквы латинского алфавита, а также цифры и спец. символы. Можно воспользоваться стандартной утилитой linux - pwgen. После этого удалить пользователя admin.
Аналогичные требования и для пользователя mysql c правами root (задается при инсталляции пакета ecss-mysql). При необходимости пароль можно изменить реконфигурацией пакета:
sudo dpkg-reconfigure ecss-mysql
Использовать SBC, настроить firewall, ACL
Рекомендуется настроить свой firewall таким образом, чтобы Restfs был доступен только с самого сервера и недоступен внешне.
Если сервер или SBC имеет прямой доступ в интернет или корпоративную сеть, где не исключены разного рода попытки неавторизованных запросов или DDoS-атаки, нужно настроить список разрешенных IP или подсетей, с которых разрешен доступ к определенным портам. Для остальных доступ должен быт запрещен. Если в составе комплекса есть SBC, то в нем уже реализован необходимый функционал для защиты от внешних атак — динамический брандмауэр с механизмом распознавания атак и попыток несанкционированного доступа.
Обновлять ubuntu и утилиты сервера при выходе пака безопасности
Также рекомендуется не пренебрегать периодическими обновлениями системы, особенно при выпуске свежих версий пакетов, улучшающих функционал безопасности.
Настройка безопасности 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
В этой же строке можно явно указать порт, предварительно закомментировав (поставив символ # в начале строки) первую строку — Port 22:
ListenAddress 10.16.33.5:22025
Смена порта
Если есть вероятность попыток подбора пароля(например сервер в публичной сети) можно изменить порт на другой.
Port 22025
По умолчанию используется 22 порт. Изменим его на нестандартный порт 22025 — это избавит наш сервер от сетевых роботов, которые автоматически сканируют интернет в поиске открытых портов и пытаются через них подключиться. В основном, боты настроены на поиск стандартных портов. Это не избавит от сканирования человеком, но для защиты от человека существует фаервол, хитрые способы открытия порта и пр.
Примерный листинг получившихся файлов конфигурации:
Проверить синтаксис файла конфигурации можно командой:
sshd -t
Посмотреть текущие настройки сервера:
sshd -T
- Общие требования
- Отключить доступ через root на сервер
- Включить доступ только по ключам ssh
- Использовать безопасные ключи rsa -b 4096
- Автоматическая генерация паролей для sip пользователей
- Изменить пароли на безопасные
- Использовать SBC, настроить firewall, ACL
- Обновлять ubuntu и утилиты сервера при выходе пака безопасности
- Настройка безопасности OpenSSH