Skip to content

Latest commit

 

History

History
213 lines (128 loc) · 11.3 KB

README.md

File metadata and controls

213 lines (128 loc) · 11.3 KB

Лабораторная работа #6.2 - Протоколы Telnet и SSH

Материалы

Работа

Нам потребуется 2 ВМ. Я буду использовать две Ubuntu Server

Настроим сеть NAT

Для начала создадим общую сеть NAT для виртуальных машин.

Откройте Файл -> Инструменты -> Менеджер сетей

Screenshot_20230504_193557

Выберите Сети NAT и нажмите Создать. Должно получится примерно как на скриншоте:

Screenshot_20230504_193718

Далее для каждой ВМ выполните откройте Настройки -> Сеть -> Выберите именно Сеть NAT для первого адаптера (не путать с просто NAT). Имя только что созданной сети. Настраиваемая машина в это время должна быть отключена

Screenshot_20230504_193826

Поздравляем, сеть настроена!

ВМ 1

Имеем:

Screenshot_20230504_192926

Установим telnetd - демон, который будет являться сервером telnet

sudo apt update && sudo apt-get install telnetd

Также установим openssh-server (обычно предустановлен)

sudo apt install openssh-server

ВМ 2

Имеем:

Screenshot_20230504_192959

Telnet

Подключимся к ВМ1 по технологии telnet, для этого выполним:

telnet 10.0.2.4

Где 10.0.2.4 - ip адрес ВМ1

Вводим логин/пароль и вот результат:

Screenshot_20230504_195126

Чтобы оборвать соединение, напишем в консоль:

exit

Справка:Telnet является старым протоколом, который был создан в 1969 году. Он работает на основе текстовых команд и не обеспечивает шифрование данных, как SSH, хотя интуитивно они выполняют одну и ту же функцию.

SSH

Теперь попробуем подключиться по SSH, для этого выполним:

ssh 10.0.2.4

Мы сразу видим, что клиент ssh нас предупреждает о том, что мы подключаемся к этому компьютеру впервые. Подстверждаем отпечаток ответив yes. Вводим данные для авторизации и вуаля:

Screenshot_20230504_200304

Выходим, прописав exit в консоль

SSH - Аутентификация по RSA ключу

Мы попробовали подключиться по SSH, используя пароль. Однако, SSH предоставляет куда более серьезные возможности идентификации, например, RSA-ключ. Зачем это нужно? Во-первых, Ваш пароль можно сбрутить. Если вы думаете, что ваш сервер никому не нужен, то вы ошибаетесь: китайские брутфорс-машины всегда рады халявному рак-боту. Во-вторых, не всегда хочется запоминать пароли, а иногда хочется просто подключиться к серверу без головной боли в один клик. Давайте попробуем настроить такую аутентификацию.

Для начала сгенерируем RSA ключ:

ssh-keygen -t rsa

image

Прожимаем везде enter. Ключ был сохранен в домашней директории, путь до файла ~/.ssh/id_rsa.pub

Затем отправим этот ключ на сервеер, выполнив:

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

Вводим пароль и видим, что ключ успешно установлен:

Screenshot_20230504_202301

Теперь попробуем подключиться к ВМ1. Мы видим, что ввод ключа не требуется: Screenshot_20230504_202449

Разорвем соединение exit

Мы успешно установили rsa ключ.

Отправка файлов по SSH

Утилита scp умеет копировать файлы из сервера к клиенту и обратно. Программа использует протокол SSH и имеет следующий синтаксис:

scp file.txt пользователь@ip_адрес_сервера:~

Эта команда скопирует локальный file.txt на удаленную машину пользователь@ip_адрес_сервера в ~ - т.е в домашнюю папку пользователя пользователь.

Давайте попробуем выполнить. Для этого создадим файл file.txt c произвольным содержимым:

echo "supa text" >> file.txt

И отправим этот файл на ВМ1 в домашнюю директорию jkearnsl:

scp file.txt [email protected]:~

Файл отправлен: Screenshot_20230504_204330

Смена порта SSH

Вернемся к ВМ1

Для редактирования конфигурации SSH сервера, перейдем к /etc/ssh/sshd_config и отредактируем строку #Port 22 на Port 42 например:

sudo nano /etc/ssh/sshd_config

Сохраняем Ctrl + o, enter, Ctrl + x Screenshot_20230504_204957

Перезапустим службу sshd для приминения изменений:

sudo systemctl restart sshd

Заодно можем включить автозагрузку (если не включена) процесса службы sshd для автостарта после перезагрузки командой:

sudo systemctl enable sshd

Попытаемся подключиться с ВМ2 к ВМ1, используя новый порт 42, используя флаг -p:

ssh 10.0.2.4 -p 42

Соединение успешно установлено.

Дополнительные моменты

Нас просят установить на ВМ1 net-tools и выполнить netstat -a | grep telnet

image

Вопрос: Объясните значения, обведённые синей рамкой.

Ответ: Из-за того, как работает TCP/IP, соединения не могут быть немедленно закрыты. Пакеты могут поступать не по порядку или быть повторно переданы после закрытия соединения.

  • LISTEN Сокет прослушивает входящие соединения.
  • ESTABLISHED Сокет имеет установленное соединение.
  • TIME_WAIT Соединение уже было закрыто одной из сторон, но еще не было полностью закрыто на другой стороне.

При TIME_WAIT сокет все еще связан с локальным и удаленным IP-адресами и портами, которые использовались для установки соединения, поэтому мы наблюдаем порт 60838.

Контрольные вопросы

1. В чём разница между telnet и SSH?

Telnet является старым протоколом, который был создан в 1969 году. Он работает на основе текстовых команд и не обеспечивает шифрование данных, как SSH, хотя интуитивно они выполняют одну и ту же функцию.

2. Что такое порт?

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

3. Какие порты используют по умолчанию telnet и SSH?

По умолчанию Telnet использует порт 23 для соединения, а SSH использует порт 22.

4. Какой командой в Linux можно проверить готова ли сетевая служба принимать соединения?

sudo netstat -a | grep telnet - на примере telnet

5. Какие способы аутентификации поддерживаются в SSH? В чём между ними разница?

Вообще я знаю 4ре способа, но нас ознакомили с 2мя:

  • Парольная аутентификация
  • Аутентификация с использованием открытых ключей (RSA, DSA)

Разница между ними в том, что в первом случае нам требуется вводить пару логин и пароль при каждом подключении, а во втором нам этого делать не нужно

Авторство: Бояршинов Н.О