Библиотека сайта rus-linux.net
Использование ssh
Автор: © Matteo Dell'Omodarme
Перевод: © Дмитрий Попков
При каждом заходе telnet-ом на удаленную машину, все данные соединения передаются по сети, давая возможность потенциальному взломщику отслеживать соединение и, по большому счету, вставлять несанкционированные команды в поток данных. Применeние некоторых мощных систем шифрования позволит значительно усилить защиту сети.
Из man ssh мы можем узнать что: "Ssh (Secure Shell) - программа для регистрации на удаленной машине и выполнения команд на ней. Предназначена заменить rlogin и rsh, и обеспечить безопасную шифрованную связь между двумя компьютерам по незащищенной сети. Соединения X11 и произвольные TCP/IP порты могут также быть перенаправлены по защищенному каналу". Это мощная, очень удобная в работе программа, которая использует сильное шифрование для защиты всех передаваемых конфиденциальных данных, включая пароли.
В настоящее время существуют два SSH протокола, SSH2 и SSH1, первый является усовершенствованием SSH1. SSH2, помимо двойного шифрованного обмена ключами RSA, поддерживает и другие методы. Текущий дистрибутив поставляется со схемой обмена ключами Diffie-Hellman, имеет поддержку DSA и других алгоритмов открытых ключей.
SSH2 может быть совместим с SSH1, но не совместим по умолчанию; SSH2 сервер один не может управлять SSH1 соединением, требуется еще и SSH1 сервер, чтобы сделать это.
Получение и установка SSH
Вы можете получить SSH2 и SSH1 клиентов и серверы с master FTP server, или его зеркал. Последняя версия SSH1 протокола - ssh-1.2.30.tar.gz, в то время как для SSH2 ssh-2.3.0.tar.gz
Установка действительно проста. Первый шаг - распакуйте исходники:
tar -zxf ssh-1.2.30.tar.gz
Это создаст каталог ssh-1.2.30. Теперь войдите в этот каталог, и запустите процесс конфигурации:
сd ssh-1.2.30 ./configure.
Скрипт configure выполнит всю необходимую конфигурацию, поиск в системе требуемых библиотек и программ. Когда скрипт закончит свою работу, выполните :
make
После успешного завершения войдите супер-пользователем и установите бинарные, конфигурационные файлы и файл hostkey выполнив:
make install
Это установит клиентов (scp1, ssh-add1, ssh-agent1, ssh-askpass1, ssh-keygen1, ssh1) в /usr/local/bin, и сервер (sshd1) в /usr/local/sbin. Обратите внимание, что, в /usr/local/bin имеется также символическая ссылка на реально исполняемые программы.
Следующим шагом установим SSH2. Действия те же, что и для SSH1:
tar -zxf ssh-2.3.0.tar.gz cd ssh-2.3.0 ./configure makeи как супер-пользователь:
make install
Совместимость SSH1 - SSH2
В дальнейшем мы предполагаем, что SSH1 и SSH2 установлены.
Чтобы сделать SSH2 сервер способным управлять соединениями SSH1, надо
отредактировать конфигурационные файлы SSH2, которые обычно помещают в каталог
/etc/ssh2/.
В том каталоге редактируем sshd2_config - файл конфигурации для sshd2, который
является демоном для ssh2. Добавьте строки:
Ssh1Compatibility yes Sshd1Path /usr/local/sbin/sshd1
Измените путь на реальный, куда установили sshd1. В этой конфигурации sshd2 сервер перенаправит запросы от SSH1 клиента к sshd1.
Теперь добавьте строки к файлу ssh2_config, размещенному в том же каталоге:
Ssh1Compatibility yes Ssh1Path /usr/local/bin/ssh1
Теперь ssh2 клиент вызовет ssh1 клиента при соединении с SSH1 сервером.
Запуск SSH
Существуют два основных способа запуска sshd при начальной загрузке.
Войдите в /etc/rc.d каталог, и отредактируйте файл rc.local. В его конец добавьте строки:
echo "Starting sshd ...." /usr/local/sbin/sshd
Таким способом sshd запускается в конце очередной загрузки компьютера с сообщением "Starting sshd...." на экране.
Запускать sshd можно и без перезагрузки из командной строки:/usr/local/sbin/sshd
- Альтернативно, в системах, использующих System V инициализацию, Вы можете
поместить сценарий sshd2.startup, поставляемый с дистрибутивом, в
/etc/rc.d/init.d, назвав его sshd2. Перейдите в каталог rc$number.d , где
$number - ваше значение runlevel по умолчанию. Вы можете найти это значение в
файле /etc/inittab:
id:5:initdefault
илиid:3:initdefault
В первом случае ваш runlevel - 5, во втором 3.В каталоге rc$number.d выполните команду:
ln -s ../init.d/sshd2 S90sshd2
Потом перейдите в директорию /etc/rc.d/rc0.d и выполните:
ln -s ../init.d/sshd2 K90sshd2
Повторите операцию в каталоге /etc/rc.d/rc6.d.
Теперь Вы можете запускать sshd2 без перезагрузки машины, просто выполнив сценарий:
/etc/rc.d/init.d/sshd2 start
Установление SSH соединения
Запустив sshd на своей машине, проверьте правильность настроек, попробовав зайти на нее, используя ssh клиента. Давайте предположим, что ваша машина названа host1 и вы входите под именем myname. Запустите ssh соединение, используя команду:
ssh -l myname host1
ssh2 клиент (клиент по умолчанию) попробует соединиться с host1 порт 22 (порт по умолчанию). Sshd2 демон, выполняющийся на host1, перехватывает запрос и запрашивает пароль для myname. Если пароль правилен, он позволяет вход в систему и запускает shell.
Генерирование и управление ssh ключами
Ssh предлагает и другой аутентификационный механизм, основанный на аутентификационных ключах: метод шифрования с открытым ключом. Каждый пользователь, желающий использовать ssh с аутентификацией с открытым ключом, должен выполнить команду ssh-keygen (без опций) чтобы создать ключи. Команда генерирует пары ключей (публичный и частный) и запрашивает passphrase для их защиты.Создаются два файла в каталоге $HOME/.ssh2/ : id_dsa_1024_a и id_dsa_1024_a.pub, пользовательские частный и публичный ключи.
Давайте предположим, что у нас есть два аккаунта, myname1 на host1 и myname2 на host2. Мы хотим войти с host1 на host2, используя аутентификацию ssh c открытыми ключами. Чтобы сделать это, потребуются четыре шага:
- На host1 генерируем ключевую пару, используя команду ssh-keygen, и выбираем
passphrase (кодовую фразу), чтобы защитить ее.
- Входим на host2, используя парольную идентификацию ssh, и повторяем
предыдущую операцию. Переходим в каталог $HOME/.ssh2, и создаем файл
identification, содержащий следующие строки:
# identification IdKey id_dsa_1024_a
Этот файл используется sshd, чтобы идентифицировать ключевую пару, которую нужно использовать в течение соединения.
-
Находясь на host2, получим публичный ключ ssh host1, и переименуем его (например в host1.pub):
ftp host1 [...] cd .ssh2 get id_dsa_1024_a.pub host1.pub
По окончании ftp сеанса копию публичного ключа host1, названного host1.pub, перемещаем в каталог $HOME/.ssh2 на host2.
- Создаем файл authorization, содержащий следующие строки:
# authorization Key host1.pub
Этот файл содержит все доверительные публичные ssh ключи, помещенные в каталог $HOME/.ssh2. Когда ssh инициировано пользователем, публичный ключ которого соответствует одной из записей файла authorizashion, стартует схема аутентификации с открытыми ключами.
Чтобы проверить полученную конфигурацию, пробуйте соединиться с
host1 на host2, используя ssh. Sshd должен ответить запросом о passphrase,
иначе, если затребован пароль, в процессе конфигурации были ошибки, и Вы должны
тщательно проверить шаги с 1 до 4.
Требуемая passphrase - ваша ЛОКАЛЬНАЯ passphrase (то есть passphrase,
защищающая публичный ключ host1 ).
В следующей статье...
Следующая статья представит другие программы и средства из комплекта ssh: ssh-agent и ssh-add (две полезных программы управления passphrase), а также sftp и scp (защищенный ftp).
Copyright © 2000, Matteo Dell'Omodarme.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 61 of Linux Gazette, January 2001