Одна из самых распространённых задач, возникающих при работе в сети, — удалённый доступ к другим компьютерам, в том числе их удалённое администрирование. Технология SSH (Secure Shell) призвана предоставить возможность безопасного способа управления удалённой системой. Построенная по клиент-серверной модели, она позволяет при помощи ssh клиента подключаться к ssh серверу, предоставляя командную оболочку для работы с удалённой системой.
SSH реализует соединение с удалённым компьютером, защищающее от:
В дополнение к отличным характеристикам в области обеспечения безопасного клиент-серверного соединения, SSH обладает следующими возможностями:
OpenSSH — это включённая в дистрибутивы ALT Linux реализация SSH. Она представлена следующими пакетами:
openssh-clients
— клиентская часть (утилита ssh
, sftp
и др.).openssh-server
— серверная часть (сервер sshd
, sftp-server
).openssh
— утилиты, необходимые для работы как клиентской, так и серверной части.Пакет openssh-server
в ALT Linux 4.0 Server устанавливается по умолчанию, позволяя непосредственно после установки системы воспользоваться возможностью удалённого администрирования.
В простейшем виде сеанс работы будет выглядеть следующим образом. Запускается ssh клиент (ssh
) с указанием имени пользователя на удалённой системе (если оно отличается от локального) и имени машины (либо IP-адреса). На удалённой машине, естественно, должна быть настроена и работать серверная часть — sshd
.
$ ssh user@hostname
После этого sshd предоставляет командную оболочку для работы на удалённой системе. Ваш компьютер становится удалённым терминалом другого компьютера.
Прежде чем начать удалённый сеанс работы, необходимо пройти процедуру аутентификации, аналогичную той, что происходит при непосредственной работе с физическим терминалом Linux-системы. Утилита sshd
поддерживает различные способы аутентификации, наиболее часто используются два из них: аутентификация по паролю и аутентификация по ключу.
Параметры, относящиеся к способу аутентификации, а так же все прочие настройки sshd
указываются в конфигурационном файле /etc/openssh/sshd_config
. Для вступления в силу изменений, вносимых с конфигурационный файл, каждый раз после правки файла необходимо выполнять команду
# service sshd reload
sshd
Аутентификации по паролю включается добавлением строки PasswordAuthentication yes
в файл etc/openssh/sshd_config
. Хотя пароль в этом случае и не передаётся по сети в открытом виде, всё же существует опасность подбора пароля. Поэтому не следует выбирать слишком простые пароли.
Аутентификация по ключу включается строкой
PubkeyAuthentication yes
в файле /etc/openssh/sshd_config
. При использовании этой схемы аутентификации будет использоваться асимметричное шифрование, следовательно, необходимо сгенерировать пару ключей: секретный и публичный1.
Для генерации пары ключей на компьютере пользователя необходимо выполнить $ ssh-keygen
с необходимыми параметрами, например:
$ ssh-keygen -t dsa
На вопрос о файле для сохранения ключа нажать Enter (принять вариант по умолчанию). Будет задан вопрос, следует ли создать пароль к ключу. Поскольку ключи рекомендуется создавать с паролем, нужно указать свой пароль.
После генерации ключей образуются 2 файла: ~/.ssh/id_dsa
— секретный ключ, и ~/.ssh/id_dsa.pub
— публичный. Его предстоит поместить на удалённый сервер.
Следующим шагом содержимое файла id_dsa.pub
необходимо добавить в файл ~/.ssh/authorized_keys2
на удалённой машине. Если под этой учётной записью будет входить один пользователь, файл id_dsa.pub
можно просто скопировать, назвав его authorized_keys2
. Также можно воспользоваться утилитой ssh-copy-id
:
$ ssh-copy-id username@hostname
Обратите внимание, что для выполнения этой операции должна работать аутентификация по паролю. В дальнейшем её можно будет отключить.
После указанных действий можно использовать аутентификацию по ключу. В процессе такой аутентификации запрашивается не пароль удалённого пользователя, а пароль на ваш ключ, что делает ssh сессию ещё более безопасной.
При настройке sshd
следует весьма щепетильно отнестись к вопросам безопасности. SSH — очень важная часть системы. Она является незаменимым помощником любого администратора Linux, предоставляя ему доступ к командной оболочке удалённой системы. Но как раз по этой же причине данная служба может стать и источником бед.
Далее приводятся лишь некоторые рекомендации, призванные обезопасить вашу систему от несанкционированного доступа.
По возможности следует использовать способ аутентификации по ключу как наиболее безопасный. Если вы все же по каким-либо причинам используется аутентификация по паролю, то следует тщательнейшим образом отнестись к выбору паролей. В вопросах выбора паролей надо руководствоваться теми же соображениями что и при выборе паролей при регистрации пользователей.
В качестве дополнительных мер, можно явно указать список пользователей, которым разрешена либо запрещена удалённая работа. За это отвечают параметры AllowUsers
и DenyUsers
в /etc/openssh/sshd_config
.
Наконец, можно осложнить жизнь потенциальному злоумышленнику, отключив возможность удалённой регистрации в системе для суперпользователя (root
). Для этого в /etc/openssh/sshd_config
нужно добавить строку PermitRootLogin no
.
Как и в случае с любыми потенциально опасными службами, следует постоянно следить за обновлениями безопасности, связанными с данными пакетами. Администратор системы, заботящийся о безопасности, должен непременно устанавливать обновления штатным способом:
# apt-get update
# apt-get upgrade
За более детальной информацией по настройке sshd следует обращаться к руководству sshd_config(5)
. Настройка клиентской части подробно описана в ssh_config(5)
.
1Более подробно о технологии асимметричного шифрования можно узнать на http://www.intuit.ru/department/security/networksec/7/
и http://www.mgpu.ru/crypto/2.1.htm
.