Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2014-01 ГОРБАЧЕВСКАЯ Защита информации / лаб работы / Метод по лаб работам по МСЗИ_2013.doc
Скачиваний:
188
Добавлен:
20.02.2016
Размер:
2.57 Mб
Скачать

Лабораторная работа № 7

Тема: Удаленное управление по защищенному протоколу SSH

Цель работы

Изучение протокола SSH и способов его применения в ОС Linux.

Используемое оборудование

Типовой комплект учебного оборудования «Корпоративные компьютерные сети» производства Научно-производственного предприятия «Учебная техника – Профи» г. Челябинск

Теоретический материал

Протокол SSH

Протокол SSH (англ. Secure SHell - "безопасная оболочка") - сетевой протокол сеансового уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Схож по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы доступны для большинства сетевых операционных систем.

Первая версия протокола, SSH-1, была разработана в 1995 г. исследователем Тату Улёненом из Технологического университета Хельсинки, Финляндия. SSH-1 был написан для обеспечения большей конфиденциальности, чем протоколы rlogin, telnet и rsh. В 1996 г. была разработана более безопасная версия протокола, SSH-2, несовместимая с SSH-1. Протокол приобрел ещё большую популярность, и к 2000 г. у него было около двух миллионов пользователей. В настоящее время под термином "SSH" обычно подразумевается именно SSH-2, т.к. первая версия протокола ввиду существенных недостатков сейчас практически не применяется.В 2006 г. протокол был утвержден рабочей группой IETF в качестве Интернет‐стандарта.Прежде чем анализировать протоколы ssh подробнее, следует определить понятие ключ хоста.

Каждый работающий с ssh хост, на котором может выполняться как клиент, так и сервер, может иметь не менее одного ключа, причем для шифрования допускаются различные криптографические алгоритмы. Несколько хостов могут иметь общий ключ хоста. Однако каждый хост должен иметь хотя бы один ключ, с которым работает каждый из требуемых алгоритмов работы с открытыми ключами. В проекте стандарта в настоящее время требуемый алгоритм только один  DSS (Digital Signature Standard).

Протокол SSH разрабатывался для предоставления безопасности передаваемых данных путем реализации стойкого алгоритма шифрования данных, надежной системы аутентификации пользователя и сервера, предоставлением системы контроля целостности передаваемых данных, а также инкапсуляцией приложений работающих на основе протокола TCP для установления безопасных туннелей.

Описание технологии протокола и работы протокола SSH-1

Сначала клиент посылает серверу запрос на установление SSH соединения и создание нового сеанса. Соединение будет принято сервером, если он принимает сообщения подобного рода и готов к открытию нового сеанса связи. После этого клиент и сервер обмениваются информацией, какие версии протоколов они поддерживают. Соединение будет продолжено, если будет найдено соответствие между протоколами и получено подтверждение о готовности обеих сторон продолжить соединение по данному протоколу. Сразу после этого сервер посылает клиенту постоянный публичный и временный серверный ключи. Клиент использует эти ключи для зашифровки сессионного ключа. Несмотря на то, что временный ключ посылается прямым текстом, сессионный ключ по-прежнему безопасный. После этого сессионный ключ шифруется временным ключом и публичным ключом сервера и, таким образом, только сервер может его расшифровать. На этом этапе и клиент и сервер обладают сессионным ключом и, следовательно, готовы к безопасному сеансу передачи зашифрованных пакетов. Аутентификация сервера происходит исходя из его возможности расшифровки сессионного ключа, который зашифрован публичным ключом сервера. Аутентификация клиента может происходить различными способами, в том числе DSA, RSA, OpenPGP или по паролю. Сессия продолжается до тех пор, пока и клиент и сервер способны аутентифицировать друг друга. Установленное соединение по протоколу SSH-1 позволяет защитить передаваемые данные стойким алгоритмом шифрования, проверкой целостности данных и сжатием.

Описание технологии протокола SSH-2

Краткое описание и назначение каждого из трех протоколов, составляющих протокол SSH-2:

1. Протокол транспортного уровня - предоставляет возможность шифрования и сжатия передаваемых данных, а также реализует систему контроля целостностью данных.

2. Протокол соединения -позволяет клиентам устанавливать многопоточное соединение через оригинальный SSH туннель, таким образом снижая нагрузку, которую создают клиентские процессы.

Протокол аутентификации - протокол аутентификации отделен от протокола транспортного уровня, т.к. не всегда бывает необходимым использование системы аутентификации. В случае, если нужна аутентификация, процесс защищается оригинальным безопасным каналом, установленным через протокол транспортного уровня.

Сам по себе, протокол транспортного уровня является достаточным для установления защищенного соединения, он является основой протокола SSH-2 и протоколы соединения и аутентификации основаны на нем. Протокол аутентификации отделен от протокола транспортного уровня, т.к. иногда возникает ситуация, когда использование аутентификации не только не обязательно, но и даже нежелательно. Например, некая организация предоставляет на своем FTP сервер анонимный доступ к патчам безопасности для любого человека (или системы), которая захочет их скачать. В этом случае аутентификация требоваться не будет, в то время как шифрование, сжатие и контроль целостности данных будут обеспечиваться протоколом транспортного уровня. Более того, при наличии канала высокой пропускной способности, клиенты смогут организовать многопоточное соединение через оригинальное SSH соединение, используя протокол соединения. Разработчики проекта протокола ssh особенно заботились о его долголетии.  Протокол будет расширяемым; планируется возможность дополнения криптографических алгоритмов, используемых при работе ssh. C этой целью проектом предусмотрено, что между клиентом и сервером происходят переговоры, в результате которых выбираются методы шифрования, форматы открытых ключей и т.п., которые будут использованы в данном сеансе. При этом с целью обеспечения интероперабельности должен поддерживаться некоторый минимальный набор национальных криптографических стандартов (таблица 1).

Отдельного упоминания заслуживают вопросы увеличения трафика в связи с применением протоколов ssh. Ясно, что при передаче в сети больших пакетов дополнительная нагрузка, вызванная передачей управляющих заголовков ssh, невелика. Основное внимание следует обратить на приложения, для которых характерны короткие пакеты, например, telnet. Минимальный размер заголовка TCP/IP равен 32 байта; минимальный же размер пакета при использовании ssh увеличится с 33 до (примерно) 51 байта.Учитывая, что в Ethernet минимальная длина поля данных пакета равна 46 байт, дополнительный нагрузкой  в 5 байт  можно пренебречь. Наиболее существенным влияние ssh оказывается, вероятно, при использовании протокола PPP на низкоскоростных модемных соединениях, поскольку PPP сжимает заголовки TCP/IP. Однако существенный прогресс в скоростях передачи данных позволяет рассчитывать, что дополнительные задержки будут измеряться несколько миллисекундами и останутся незаметны человеку.

Советы по безопасности использования SSH

1. Запрещение удалённого root-доступа.

2. Запрещение подключения с пустым паролем или отключение входа по паролю.

3. Выбор нестандартного порта для SSH-сервера.

4. Использование длинных SSH2 RSA-ключей (2048 бит и более). Системы шифрования на основе RSA считаются надёжными, если длина ключа не менее 1024 бит.

5. Ограничение списка IP-адресов, с которых разрешён доступ (например, настройкойфайервола).

6. Запрещение доступа с некоторых потенциально опасных адресов.

7. Отказ от использования распространённых или широко известных системных логиновдля доступа по SSH.

8. Регулярный просмотр сообщений об ошибках аутентификации.

9. Установка систем обнаружения вторжений (IDS— Intrusion Detection System).

10. Использование ловушек, подделывающих SSH-сервис (honeypots).

Пакет OpenSSH

OpenSSH это набор СВОБОДНЫХ программ, предоставляющих шифрование сеансов связи через компьюрные сети с использованием протокола SSH. Большинство пользователей telnet, rlogin, ftp, и других подобных программ не осознают, что их пароли пересылаются через интернет в незашифрованном виде. OpenSSH шифрует весь трафик (включая пароли) для предотвращения подслушивания, перехвата соединений и других видов сетевых атак. Кроме того, OpenSSH предоставляет различные способы создания туннелей, многочисленные методы аутентификации, а так же поддерживает все версии протокола SSH.

Пакет OpenSSH содержит программы sshдля замены rlogin и telnet,scpдля замены rcp, иsftpкак альтернативу для ftp. Пакет так же включает в себя демонsshd, и другие утилиты, такие какssh-add,ssh-agent,ssh-keysign,ssh-keyscan,ssh-keygenиsftp-server.

Установка пакета OpenSSH

Когда происходит подключение к другим компьютерам, OpenSSH запускает два процесса. Первый процесс является привилегированным и управляет выдачей прав доступа по мере возникновения в них необходимости. Второй процесс взаимодействует с сетью. Для того, чтобы иметь правильно настроенную среду, необходима дополнительная настройка, которую можно выполнить в роли пользователя root с помощью следующих команд:

install -v -m700 -d /var/lib/sshd &&

chown -v root:sys /var/lib/sshd &&

groupadd -g 50 sshd &&

useradd -c 'sshd PrivSep' -d /var/lib/sshd -g sshd \

-s /bin/false -u 50 sshd

Пакет OpenSSH очень чувствителен к изменениям в прикомпонованных библиотеках OpenSSL. После повторной компиляции пакет OpenSSH может не запуститься. В качестве альтернативы используйте ссылку на статическую библиотеку OpenSSL. Чтобы сделать ссылку на статическую библиотеку, выполните следующую команду:

sed -i 's@-lcrypto@/usr/lib/libcrypto.a -ldl@' configure

Установите пакет OpenSSH с помощью следующих команд:

sed -i.bak 's/ -ldes//' configure &&

./configure --prefix=/usr \

--sysconfdir=/etc/ssh \

--datadir=/usr/share/sshd \

--libexecdir=/usr/lib/openssh \

--with-md5-passwords \

--with-privsep-path=/var/lib/sshd &&

make

Если вы скомпоновали tcp_wrappers с использованием параметра --with-tcp-wrappers и если у вас есть файл с ограничениями /etc/hosts.deny, то убедитесь, что вы в строку sshd файла /etc/hosts.allow добавили адрес 127.0.0.1. В противном случае набор тестов не пройдет. Кроме того, тестовый набор требует установить копию scp для того, чтобы можно было завершить выполнение тестов, использующих мультиплексирование. Чтобы запустить набор тестов, сначала в директорий /usr/bin скопируйте программу scp, предварительно убедившись, что вы перед этим сделали резервные копии всех имеющихся там файлов.

Чтобы запустить тестовый набор, выполните следующие команды:

make tests 2>&1 | tee check.log

grep FATAL check.log

Если указанная выше команда не выдаст фатальной ошибки ("FATAL"), то в роли пользователя root приступите к установке:

make install &&

install -v -m755 -d /usr/share/doc/openssh-5.6p1 &&

install -v -m644 INSTALL LICENCE OVERVIEW README* WARNING.RNG \

/usr/share/doc/openssh-5.6p1

Пояснение команд

sed -i.bak 's/ -ldes//' configure: Данная команда помогает справиться с невозможностьюсборки пакета в случае, если вы используете параметр--with-kerberos5и собираете пакет Heimdal в соответствие с инструкциями. Во всех других случаях команда влияния не оказывает.

--sysconfdir=/etc/ssh:Этот параметр предотвращает установку конфигурационных файлов в директорий /usr/etc.

--datadir=/usr/share/sshd: Этот переключатель указывает поместить файл Ssh.bin (используется для аутентификации смарт-карт) в директорий/usr/share/sshd.

--with-md5-passwords: Этот параметр необходим в случае, если в LFS для теневых паролей Shadow использовалось конфигурация, предлагаемая по умолчанию.

--libexecdir=/usr/lib/openssh: Этот параметр изменяет путь, используемых при установке некоторых программ, и указывает использовать/usr/lib/opensshвместо/usr/libexec.

--with-pam: Этот параметр позволяется в сборку добавлять поддержку Linux-PAM.

--with-xauth=/usr/bin/xauth: Указывает место, где по умолчанию должен находиться модульxauth, используемый для аутентификации в X. Измените этот параметр, если пакетxauthбудет устанавлен в другом месте. Эту настройку можно также сделать в файлеsshd_config, использовав для этого ключевое слова XAuthLocation. Вы можете опустить этот параметр, если пакет Xorg уже установлен.

--with-kerberos5=/usr: Этот параметр позволяется в сборку добавлять поддержку Heimdal.

Конфигурирование пакета OpenSSH

Конфигурационные файлы

~/.ssh/*,/etc/ssh/ssh_configи/etc/ssh/sshd_config

В эти файлы вносить изменения не нужно. Тем не менее, вы можете изучить файлы /etc/ssh/ и внести в них некоторые изменения, соответствующие требованиям безопасности вашей системы. Одним из рекомендуемых изменений является запрет пользователю root входить в систему через ssh. Чтобы отключить возможность пользователя root входить в систему через ssh, выполните в роли пользователя root следующую команду:

echo "PermitRootLogin no" >> /etc/ssh/sshd_config

Если вы добавили поддержку LinuxPAM, то вам нужно для sshd добавить конфигурационный файл и разрешить использование LinuxPAM. В роли пользователя root выполните следующие команды:

sed 's@d/login@d/sshd@g' /etc/pam.d/login > /etc/pam.d/sshd &&

chmod 644 /etc/pam.d/sshd &&

echo "USEPAM yes" >> /etc/ssh/sshd_config

Дополнительную информацию о конфигурировании можно найти на страницах man команд sshd, ssh и ssh-agent.

Загрузочный скрипт

Чтобы запускать сервер SSH во время загрузки системы, установите загрузочный скрипт /etc/rc.d/init.d/sshd, который находится в пакете blfs-bootscripts-20111216.

make install-sshd

Описание пакета

Установленные программы: scp, sftp, sftp-server, slogin, ssh, sshd, ssh-add, ssh-agent, ssh-keygen, ssh-keyscan и ssh-keysign

Установленные библиотеки: Нет

Установленные директории: /etc/ssh, /var/lib/sshd, /usr/lib/openssh и /usr/share/doc/openssh-5.6p1

Краткое описание

scp

программа копирования файлов, который действует как программа rcp, за исключением лишь того, что она использует защищенный протокол

sftp

является программой, похожей на FTP, которая работает поверх протоколов SSH1 и SSH2

sftp-server

является подсистемой сервера SFTP. Эта программа обычно не вызывается непосредственно пользователем

slogin

символическая ссылка на ssh

ssh

клиентская программа, похожая на rlogin/rsh, за исключением лишь того, что она использует защищенный протокол

sshd

демон, который через ssh принимает запросы на вход в систему

ssh-add

инструментальное средство, с помощью которого в ssh-agent добавляются ключи

ssh-agent

является агентом аутентификации, которая может хранить закрытые ключи

ssh-keygen

является инструментальным средством генерации ключей

ssh-keyscan

утилита сбора открытых ключей с ряда хостов

ssh-keysign

используется программой ssh для доступа к ключам локальных хостов и генерации цифровой подписи, необходимой для аутентификации по протоколу SSH версии 2 и при использовании отдельного хоста. Эта программа обычно не вызывается непосредственно пользователем

Задание

1. Собрать топологию сети, представленную на рисунке

2. Изучить главу «Протокол SSH» и главу «ПакетOpenSSH».

3. Проверить работают ли на компьютерах ssh-серверы (ps ax | grep ssh). Если не работает то запустить его командой..

4. Попробовать подключиться с клиента на сервер с использованием протокола SSH. Изучить переданные пакеты с помощьюtcpdump. Посмотреть какие события были отмечены в файле журнала /var/log/auth.log

5. Перезагрузить удаленный сервер, не подключаясь к нему.

6. Удаленно перезапустить демон sshбез подключения.

7. Подключиться к удаленному серверу и перезапустить демон ssh. Обратить внимание на то что сеанс не завершился.

8. Запустить FTP-сервис на сервере.

9. Выполнить передачу файла через FTPс помощью утилитыwget. Проанализировать проходящие пакеты с помощью утилитыtcpdump(-ХХ). Запомнить скорость передачи.

10. Выполнить передачу через ssh. Проанализировать проходящие пакеты с помощью утилитыtcpdump(-ХХ). Запомнить скорость передачи. Сравнить передаваемые пакеты и скорости передачи данных.

11. Включить сжатие sshи повторить замер скорости. В каждом тесте анализировать результаты для файла состоящего из нулей и для файла состоящего из случайных последовательностей (ddif= /dev/urandomor=fileds=1Mcount=10), для текстового конфигурационного файла или бинарного файла.

12. Написать скрипт, который будет создавать файл размеров 10МБ со случайными данными на локальную машину.

Вопросы для самоконтроля.

1. Протокол SSH

2. Описание технологии протокола и работы протокола SSH-1

3. Описание технологии протокола и работы протокола SSH-2

4. Назначение пакета OpenSSH.

5. Перечислить рекомендуемые действия по безопасному использованию SSH

6. Установка пакета пакета OpenSSH.

7. Конфигурирование пакета OpenSSH.

Соседние файлы в папке лаб работы