Методы и средства защиты информации
Лабораторный практикум

7. Использование ssh в ОС Linux

Войдите в виртуальную машину Linux
Запустите сетевые сервисы через скрипт инициализации /etc/init.d/network
(Команда /etc/init.d/network start. )
Проерьте правильность отработки по команде /etc/init.d/network status.

7.1. Общие сведения о системах шифрования и ssh.

При каждом заходе 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 сервер, чтобы сделать это.

Базовые сведения о шифровании.

Из книги Брюса Шнайера "Прикладная криптографимя" изучите главы 1-6, 7-10 и 18-20 в части, касающейся применения открытых ключей(однонаправленные функции, асимметричные и смешанные криптосистемы и т.д.).

Запуск SSH

Демон sshd запускается через скрипт инициализации в директории /etc/init.d - /etc/init.d/sshd.

7.2. Установление SSH соединения по паролю.


Запустив sshd на своей машине, проверьте правильность настроек, попробовав зайти на нее, используя ssh клиента (читать man ssh). Давайте предположим, что ваша машина имеет адрес 172.16.69.101 и вы входите на неё под именем myname(предварительно следует создать новый аккаунт myname утилитой adduser) с соседнего хоста 172.16.69.102.

7.3. Генерирование и управление ssh ключами


Ssh предлагает и другой аутентификационный механизм, основанный на аутентификационных ключах: метод шифрования с открытым ключом. Каждый пользователь, желающий использовать ssh с аутентификацией с открытым ключом, должен выполнить команду ssh-keygen (без опций) чтобы создать ключи. Команда генерирует пары ключей (публичный и частный) и запрашивает passphrase для их защиты.Создаются два файла в каталоге $HOME/.ssh/ : id_rsa и id_rsa.pub, пользовательские частный и публичный ключи.

Давайте предположим, что у нас есть два аккаунта, myname1 на 172.16.69.101 и myname2 на 172.16.69.102. Мы хотим войти с172.16.69.101 на 172.16.69.102, используя аутентификацию ssh c открытыми ключами. Чтобы сделать это, потребуются четыре шага:

  1. На 172.16.69.101 генерируем ключевую пару, используя команду ssh-keygen, и выбираем passphrase (кодовую фразу - может быть пустой), чтобы защитить ее.
  2. Входим на172.16.69.102, используя парольную идентификацию ssh, и повторяем предыдущую операцию. Переходим в каталог $HOME/.ssh, и создаем файл authorized_keys2
    Этот файл используется sshd, чтобы идентифицировать ключевую пару,
    которую нужно использовать в течение соединения.
  3. Находясь на 172.16.69.102, получим публичный ключ ssh c 172.16.69.101 , и переименуем его (например в host1.pub):

ftp 172.16.69.101
[...]
cd .ssh
get id_dsa.pub host1.pub

По окончании ftp сеанса копия публичного ключа 172.16.69.101, названного host1.pub, находится в каталог $HOME/.ssh на 172.16.69.102. (Это можно сделать и через дискету).

  1. Дописываем в файл authorized_keys2 содержимое файла host1.pub:
    cat host1.pub >> authorized_keys2
    Этот файл содержит все доверительные публичные ssh ключи, помещенные в каталог $HOME/.ssh. Когда ssh инициировано пользователем, публичный ключ которого соответствует одной из записей файла authorized_keys2 стартует схема аутентификации с открытыми ключами.

Проделайте указанные выше шаги для работы в ssh через аутентификационные ключи. Чтобы проверить полученную конфигурацию, пробуйте соединиться с host1 на host2, используя ssh. Sshd должен ответить запросом о passphrase, иначе, если затребован пароль, в процессе конфигурации были ошибки, и Вы должны тщательно проверить шаги с 1 до 4. Passphrase не спрашивается, в том случае, если не была задана при генерации ключа.
Требуемая passphrase - ваша ЛОКАЛЬНАЯ passphrase (то есть passphrase, защищающая публичный ключ host1 ).

7.4. Краткий обзор утилит sftp и scp.


Давайте сосредоточим внимание на sftp and scp.
Первый (Secure File Transfer) - ftp-подобный клиент, который может быть использован для передачи файлов по сети.
Он не использует FTP демонов (ftpd или wu-ftpd) для соединения, что позволяет существенно повысить уровень защиты. Анализ систем в Интернет, показывает, что 80% атак было направлено на wu-ftpd. Использование sftp прозволяет отключить потенциально опасный wu-ftpd.
Второй (Secure Copy) используется для защищенного копирования файлов по сети. Это - замена небезопасной команды rcp.

Sftp и scp не требуют никакого специально выделенного сервера, так как эти две программы соединяются с ssh сервером. Чтобы использовать sftp и scp в конфигурационный файл /etc/ssh/sshd_config включается примерно следующая строка:


Subsystem sftp /usr/libexec/openssh/sftp-server


Учтите, что Вы можете пользоваться sftp и scp только при соединении с хостом, где запущен sshd.

7.5. Использование sftp


Sftp использует ssh2 при соединении, это означает, что передаваемые файлы защищены настолько, насколько это возможно.
Есть два основных преимущества при использовании sftp вместо ftp:
Пароли никогда не передаются отрытым текстом, что предотвращает атаки с использованием сниферов (sniffer).
Данные шифруются во время передачи, затрудняя прослушивание и подтасовку.

Использование sftp2 действительно просто. Предположим, что Вам нужно соединиться с помощью sftp с хостом 172.16.169.101, имея на ней аккаунт myname. Используйте команду:
sftp myname@172.16.169.101

Некоторые опции могут быть заданы из командной строки (см. man sftp)
Когда sftp2 будет готов к выполнению команд, высветится приглашение sftp>. В справочном руководстве приведен полный перечень возможных команд, некоторые из них приведем здесь:

Опробуйте на практике работу с sftp. (Минимальный перечень команд для проверки перечислен выше).

7.6. Использование Scp


Scp2 (Secure Copy) применяется для надежного копирования файлов по сети. Для передачи данных используется ssh2 , а это означает такую же надежную аутификацию, как и в ssh2
Возможно это самый простой способ передачи файлов на удаленную машину. Предположим, Вы хотите скопировать файл filename из каталога local_dir на Ваш аккаунт myname в каталог remote_dir на машине host1. Для применения scp введите в командной строке:

scp local_dir/filename myname@host1:remote_dir

таким образом файл filename скопирован с тем же именем. Могут быть использованы wildcards (см. sshregex man page).
Команда:

scp local_dir/* myname@host1:remote_dir

копирует все файлы из каталога local_dir в каталог remote_dir на host1.
Команда:

scp myname@host1:remote_dir/filename .

копирует файл filename из remote_dir на host1 в локальный каталог.
Scp поддерживает много параметров и позволяет передавать файлы с одной удаленной машины на другую, как показано в следующем примере :

scp myname@host1:remote_dir/filename myname@host2:another_dir

(См. man для полной ясности.)
Очевидно, используя scp, Вы должны знать структуру каталогов на удаленной машине, поэтому на практике предпочитают sftp.

Используйте scp для копирования файлов с одного хоста на другой.

7.7. SSH клиенты putty и SSH© Secure Shell для Windows.


Для работы по ssh протоколу в среде Windows можно использовать программы-аналоги клиента ssh для Linux. Это пакеты утилит putty(сквчать) и SSH© Secure Shell(скачать). Основная разница между этими программами заключается в том, что первая не требует административных прав для установки, а во второй реализован более удобный графический интерфейс.

Выполнить следующие задания:

  1. Установить комплекс утилит из набора putty.(Установка заключается в простой распаковке zip-архива в любую доступную вам директорию).
  2. Изучить назначение и возможности основных утилит набора - putty.exe, psftp.exe, pscp.exe, puttygen.exe, pageant.exe, используя файл справки - putty.hlp.
  3. Практически освоить работу с putty.exe, используя парольную аутентификацию. В процессе работы программа putty.exe запускается в основной Windows-маашине в среде VmWare, а сервер ssh - sshd в среде гостевой Linux-машины, на том-же физическом хосте. Взаимодействие между ними осуществляется по сети через защищенный канал. (Ip-адрес сервера определяется, как обычно через команду ifconfig в среде Linux).
  4. Аналогично пункту 3, но для программы psftp.exe .
  5. Аналогично пункту 3, но для программы pscp.exe.
  6. Аналогично пунктам 1-5 , но для SSH© Secure Shell, после её установки администратором.

На защиту работы выносится знание всех рассмотреных структур данных, команд и утилит и умение их практического использования.