Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Установка пакетов
Пакеты, обеспечивающие работу с протоколом SSH (сервер служба sshd — пакет openssh-server и клиент ssh — пакет openssh-client) входит , входят в дистрибутивы Astra Linux , но (далее - ОС). При установке ОС по умолчанию устанавливается только клиент (openssh-client).
Установку сервера SSH можно выполнить:
- При при установке ОС, отметив соответствующий пункт в диалоге выбора программного обеспечения. При этом будет установлен пакет openssh-server или задав необходимость установки в файле параметров автоматической установки presseed;
после После установки ОС с помощью помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или synaptic или из командной строки:
Command sudo apt install ssh При установке пакета ssh устанавливаются и клиент и сервер.
Установленная с помощью графического менеджера пакетов или из командной строки служба запускается автоматически, а также сразу включается перезапуск службы после перезагрузки ОС.
Служба, установленная при установке ОС:
- в Astra Linux Common Edition начиная с обновления 2.12.12 и в Astra Linux Special Edition x.7 сервис сервер SSH также запускается после перезагрузки автоматически;
в более ранних обновлениях служба отключена, её автоматический автоматический запуск сервера SSH по умолчанию отключен. Автоматический запуск нужно разрешить отдельно командой:
Command sudo systemctl enable ssh
и а также для включения службы SSH без перезагрузки запустить службу:
Command sudo systemctl start ssh
Настройка службы ssh
Проверить состояние службы можно командой:
Command |
---|
systemctl status ssh |
Настройка службы ssh
Конфигурация службы хранится в файле /etc/ssh/sshd_config.
Для того, чтобы Чтобы изменения конфигурации вступили в силу требуется перезапуск службы:
Command |
---|
sudo systemctl restart sshd |
Информация | ||
---|---|---|
Если значения параметров конфигурации содержат пробелы, то эти значения должны быть заключены в кавычки, например:
|
Описание синтаксиса конфигурации доступно в справочной системе man:
Command |
---|
man sshd_config |
Простейшие меры безопасности
Из соображений повышения безопасности рекомендуется изменить некоторые значения по умолчанию:
- Port - номер IP-порта, который слушает сервис (по умолчанию — 22) - — изменить значение на любое другое и в дальнейшем использовать этот номер порта;
- MaxAuthTries - количество попыток подключения (по умолчанию — 6) - — уменьшить, например, до 3;
- LoginGraceTime - время, дающееся для подключения (2m) - — уменьшить, например, до 30s (30 секунд);
исключить использование слабых алгоритмов (алгоритм защитного преобразования (cipher) grasshopper-cbc и алгоритмы выработки имитовставки (mac) umac-64-etm@openssh.com, umac-64@openssh.com), для чего добавить в конфигурационный файл строки с перечислением разрешенных алгоритмов:
Блок кода ciphers grasshopper-ctr128,chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com macs hmac-gost2012-256-etm,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
Проверить список поддерживаемых алгоритмов защитного преобразования (параметр cipher) и выработки имитовставки (параметр mac) можно командами:
Command ssh -Q cipher
ssh -Q mac
Дополнительно, можно ограничить IP-адреса, с которых возможно подключение, например:
в файле /etc/hosts.deny запретить все подключения:
Информация # /etc/hosts.deny: list of hosts that are _not_ allowed to access the system.
# See the manual pages hosts_access(5) and hosts_options(5).
#
# Example: ALL: some.host.name, .some.domain
# ALL EXCEPT in.fingerd: other.host.name, .other.domain
#
# If you're going to protect the portmapper use the name "rpcbind" for the
# daemon name. See rpcbind(8) and rpc.mountd(8) for further information.
#
# The PARANOID wildcard matches any host whose name does not match its
# address.
#
# You may wish to enable this to ensure any programs that don't
# validate looked up hostnames still leave understandable logs. In past
# versions of Debian this has been the default.
# ALL: PARANOIDSSHD: ALL
а в файле /etc/hosts.allow разрешить только необходимые подключения:
Информация # /etc/hosts.allow: list of hosts that are allowed to access the system.
# See the manual pages hosts_access(5) and hosts_options(5).
#
# Example: ALL: LOCAL @some_netgroup
# ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
#
# If you're going to protect the portmapper use the name "rpcbind" for the
# daemon name. See rpcbind(8) and rpc.mountd(8) for further information.
#SSHD: 192.168.1.1
SSHD: 192.168.0.0/16
Аутентификация по ключам
См. раздел "В помощь администратору"
Настройка клиента
Конфигурация клиента хранится в файле /etc/ssh/ssh_config. Клиент работоспособен сразу после установки ОС , и настроек не требует.
Настройка выбора алгоритмов защитного преобразования.
Проверить список поддерживаемых алгоритмов защитного преобразования (параметр cipher) и выработки имитовставки (параметр mac) можно командами:
Command |
---|
ssh -Q cipher |
В поставляемый в составе дистрибутивов Astra Linux пакет ssh встроены следующие алгоритмы защитного преобразования:
Информация |
---|
3des-cbc blowfish-cbc cast128-cbc arcfour arcfour128 arcfour256 aes128-cbc aes192-cbc aes256-cbc rijndael-cbc@lysator.liu.se aes128-ctr aes192-ctr aes256-ctr grasshopper-cbc (ГОСТ Р 34.13–2015 "Кузнечик") grasshopper-ctr (ГОСТ Р 34.13–2015 "Кузнечик") aes128-gcm@openssh.com aes256-gcm@openssh.com chacha20-poly1305@openssh.com |
В поставляемый в составе дистрибутивов Astra Linux пакет ssh встроены следующие алгоритмы выработки имитовставки:
Информация |
---|
hmac-sha1 hmac-sha1-96 hmac-sha2-256 hmac-sha2-512 hmac-md5 hmac-md5-96 hmac-ripemd160 hmac-ripemd160@openssh.com umac-64@openssh.com umac-128@openssh.com hmac-sha1-etm@openssh.com hmac-sha1-96-etm@openssh.com hmac-sha2-256-etm@openssh.com hmac-sha2-512-etm@openssh.com hmac-md5-etm@openssh.com hmac-md5-96-etm@openssh.com hmac-ripemd160-etm@openssh.com umac-64-etm@openssh.com umac-128-etm@openssh.com hmac-gost2012-256-etm (ГОСТ Р 34.11-2012) |
При этом в список алгоритмов защитного преобразования (параметр конфигурации Ciphers) и выработки имитовставок (параметр конфигурации MACs), допустимых к использованию, по умолчанию включены следующие алгоритмы (перечислены в порядке убывания приоритетов применения):
Информация |
---|
# Ciphers grasshopper-ctr,aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc # MACs hmac-gost2012-256-etm,hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160 |
Выше приведены строчки из конфигурационного файла клиента /etc/ssh/ssh_config, аналогичные строчки имеются в конфигурационном файле сервера /etc/ssh/sshd_config.
Если возникает необходимость изменить набор допустимых алгоритмов, или изменить их приоритеты, следует раскомментировать эту строчку, и указать нужные алгоритмы в нужном порядка приоритета.
Например, для приоритетного выбора более простых, а значит, более быстрых алгоритмов можно использовать в файле /etc/ssh/ssh_config следующую конфигурацию:
Информация |
---|
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,grasshopper-ctr |
с настройками "по-умолчанию".
Монтирование удаленной файловой системы по ssh
SSHFS (Secure Shell FileSystem) - программа, позволяющая монтировать удаленную файловую систему и взаимодействовать с удаленными файловыми ресурсами как с обычными файлами.
Для монтирования SSHFS использует SSH File Transfer Protocol (SFTP) — безопасный протокол передачи данных, обеспечивающий полный доступ к файловым ресурсам через протокол Secure Shell.
От сервера, предоставляющего удалённый ресурс для монтирования, требуется только работающий сервис SSH.
При стандартной установке Astra Linux пакет sshfs устанавливается автоматически, при необходимости может быть установлен с помощью графического менеджера пакетов или из командной строки:
Command |
---|
sudo apt install sshfs |
Для выполнения монтирования без запроса пароля должна быть настроена авторизация по ключам (см. выше).
Команда монтирования:
Command |
---|
sshfs -o allow_other,IdentityFile=~local_user/.ssh/id_rsa remote_user@server:/home/remote_user /mnt |
Пояснения к команде:
- -o - ключ, указывающий, что далее следуют параметры подключения/монтирования;
- allow_other - разрешить доступ к примонтированному ресурсу непривилегированным пользователям (необязательный параметр);
- IdentityFile=~local_user/.ssh/id_rsa - файл с ключом доступа (необязательный параметр, если его нет - будет запрошен пароль);
- remote_user@server:/home/remote_user - указание на ресурс, который будем монтировать;
(в данном случае на сервере server от имени пользователя remote_user монтируем домашний каталог этого пользователя /home/remote_user) - /mnt - локальная точка монтирования
Автоматическое монтирование может быть задано в файле /etc/fstab:
Информация |
---|
sshfs#remote_user@server:/home/remote_user/ /mnt fuse defaults,allow_other,IdentityFile=~local_user/.ssh/id_rsa 0 0 |
Для выполнения автоматического монтирования без запроса пароля должна быть настроена авторизация по ключам (см. выше).
Демонтировать ресурс можно обычной командой umount с указанием точки монтирования:
Command |
---|
umount /mnt |
В случае ошибок монтирования для демонтирования размонтирования может понадобиться отдельная команда:
Command |
---|
fusermount -u /mnt |
Защищенные каналы перенаправления SSH
SSH поддерживает возможность перенаправления сетевого трафика между компьютерами (в литературе применяется термин "проброс портов"). Важными особенностями такого перенаправления являются универсальность, то есть применимость к любым приложениям и высокая защищенность канала перенаправления. Далее в этой части статьи используются термины:
- Сервер — компьютер, к которому выполняется подключение по протоколу SSH. Может выполнять также роль сервера для прикладных программ.
- Клиент — компьютер, инициирующий подключение по протоколу SSH. Может выполнять также роль сервера для прикладных программ.
- Локальный порт — IP-порт на клиенте, в который/из которого перенаправляется трафик.
- Удаленный порт— IP-порт на сервере, из которого/в который перенаправляется трафик.
- Прямой канал — канал SSH, в котором трафик перенаправляется из локального порта в удаленный порт. Применимо на клиентаx прикладных программ для предоставления доступа к серверам прикладных программ.
- Обратный (реверсивный) — канал SSH, в котором трафик перенаправляется из удаленного порта в локальный порт. Применимо на серверах прикладных программ для предоставления доступа клиентам прикладных программ.;
Для удобства применения клиента SSH для создания защищенных каналов можно настроить подключение по ключу (чтобы, например, исключить ввод пароля при автоматическом запуске перенаправления и/или при запуске перенаправления в фоновом режиме). Подробнее см. Подключение по SSH без ввода пароля.
В примерах далее используются опции клиента SSH, повышающие удобство использования защищенных каналов:
- -f — перевод клиента в фоновый режим. В этом режиме приглашение на ввод пароля не выводится, однако пароль можно ввести сразу после запуска команды.
- -N — не выполнять никакие команды после запуска.
Подробное описание работы с перенаправлением трафика см. в справочной системе msn ssh.
Прямой канал SSH
Для создания прямого канала необходимо с помощью опции -L указать номер локального порта и номер удаленного порта:
Command |
---|
ssh -f -N -L <номер_локального_порта>:[<пользователь>@]IP-адрес_сервера>:<номер_удаленного_порта> <IP-адрес_сервера> |
Пример:
Подключение к удаленному серверу RDP (rdpserver) выполняется с компьютера-клиента: В примере используется имя пользователя rdpuser. Команда выполняется на компьютере-клиенте:
Command |
---|
xfreerdp /v:rdpserver /u:rdpuser |
Включить перенаправление локального порта 55555 на удаленный порт 3389 (используется сервером RDP). Команда выполняется на компьютере-клиенте:
Command |
---|
ssh -f -N -L 55555:10.108.0.188:3389 sshuser@rdpserver |
SSH-подключение для перенаправления в этом примере выполняется от имени пользователя sshuser, но может выполняться и от имени пользователя RDP rdpuser.
После включения перенаправления подключение к серверу RDP может выполняться через локальный порт. Команда выполняется на компьютере клиенте:
Command |
---|
xfreerdp /v:localhost:55555 /u:rdpuser |
Подробнее про использование протокола RDP см. Взаимодействие удаленных графических интерфейсов Astra Linux и Windows.
Обратный канал SSH
Для создания обратного канала необходимо с помощью опции -R указать номер удаленного порта и номер локального порта. В отличие от прямого подключения:
- прикладной сервер (в примере далее — сервер RDP) выступает в роли клиента SSH;
- прикладной клиент (в примере далее — клиент RDP) выступает в роли сервера SSH.
- команда для создания канала выполняется на прикладном сервере;
Общий синтаксис команды:
Command |
---|
ssh -f -N -R <номер_удаленного_порта>:[<пользователь>@]IP-адрес_сервера>:<номер_локального_порта> <IP-адрес_сервера> |
Пример включения канала для протокола RDP, команда выполняется на сервере RDP:
Command |
---|
ssh -f -N -R 55555:10.108.0.188:3389 sshuser@rdpserver |
После включения канала подключение к серверу RDP (клиенту SSH) может выполняться через локальный порт клиента RDP (сервера SSH). Команда выполняется на клиенте RDP:
Command |
---|
xfreerdp /v:localhost:55555 /u:rdpuser |
Использование алгоритмов защитного преобразования данных ГОСТ
Сервер и клиент ssh, входящие в состав дистрибутивов Astra Linux, имеют встроенную поддержку работы с алгоритмами защитного преобразования ГОСТ,
причем, если такие алгоритмы поддерживаются и клиентом и сервером, то они используются по умолчанию.
Некоторые подробности про эти алгоритмы можно прочитать в описании библиотеки libgost-astra.
Проверка используемого алгоритма защитного преобразования
Проверку используемого при подключении алгоритма защитного преобразования можно производить как на стороне клиента, так и на стороне сервера.
В обоих случаях для этого нужно включить вывод отладочной информации.
На стороне сервера:
в файле конфигурации сервера /etc/ssh/sshd_config раскомментировать строчки SyslogFacility и LogLevel, заменить уровень отладки INFO на DEBUG
Информация |
---|
# Logging SyslogFacility AUTH LogLevel DEBUG |
После внесения изменений перезапустить сервер:
Command |
---|
systemctl restart ssh |
Отладочная информация сервера ssh выводится в файл /var/log/auth.log, и отслеживать сообщения о методах защитного преобразования, используемых при подключении клиентов, можно командой:
Command |
---|
tail -f | grep cipher /var/log/auth.log |
На стороне клиента:
При выполнении подключения использовать опцию -v для вывода отладочной информации:
Command |
---|
ssh -v ServerSSH |
И в первом, и во втором случае используемый для подключения метод защитного преобразования будет отображен в виде строчек такого вида:
Информация |
---|
debug1: kex: server->client cipher: grasshopper-ctr MAC: hmac-gost2012-256-etm compression: none debug1: kex: client->server cipher: grasshopper-ctr MAC: hmac-gost2012-256-etm compression: none |