ПРАКТИЧЕСКАЯ РАБОТА 8. Настройка и использование SSH.
Цель:
Обеспечить возможность управления удаленным сервером при помощи ssh.
Контрольные вопросы:
1. Что такое SSH, как он работает?
Ответ:
SSH (Secure Shell) – это сетевой протокол, который позволяет безопасно управлять операционной системой по сети. Он обеспечивает защищенное соединение между клиентом и сервером, шифруя весь передаваемый трафик.
Как работает SSH:
- Установка соединения: Клиент инициирует соединение с SSH-сервером.
- Обмен ключами: Сервер отправляет клиенту свой публичный ключ. Клиент проверяет этот ключ (если он уже известен, то сравнивает с сохраненным, если нет – предлагает принять).
- Шифрование: Используя публичный ключ сервера, клиент генерирует сессионный ключ, который затем шифруется и отправляется серверу. Сервер расшифровывает его своим приватным ключом. После этого весь дальнейший обмен данными шифруется с помощью этого сессионного ключа.
- Аутентификация: Клиент проходит аутентификацию на сервере. Это может быть сделано с помощью пароля или SSH-ключей.
- Защищенный канал: После успешной аутентификации устанавливается защищенный канал, по которому можно выполнять команды, передавать файлы и т.д.
2. Как создать пару SSH-ключей? Какие алгоритмы шифрования для ключей существуют?
Ответ:
Создать пару SSH-ключей можно с помощью команды ssh-keygen в терминале Linux или macOS, а также в Git Bash или WSL в Windows.
Пример команды:
ssh-keygen -t rsa -b 4096 -C "ваш_email@example.com"
-t rsa: указывает тип ключа (RSA).-b 4096: указывает длину ключа в битах (4096 бит – это хороший уровень безопасности).-C "ваш_email@example.com": добавляет комментарий к ключу, обычно это адрес электронной почты для идентификации.
После выполнения команды система запросит место сохранения ключей (по умолчанию ~/.ssh/id_rsa для приватного и ~/.ssh/id_rsa.pub для публичного) и парольную фразу (passphrase) для защиты приватного ключа.
Основные алгоритмы шифрования для SSH-ключей:
- RSA (Rivest-Shamir-Adleman): Один из самых распространенных и старых алгоритмов. Надежен, если используется достаточная длина ключа (например, 2048 или 4096 бит).
- DSA (Digital Signature Algorithm): Менее распространен, чем RSA, и имеет фиксированную длину ключа (1024 бита), что делает его менее безопасным по сравнению с современными стандартами.
- ECDSA (Elliptic Curve Digital Signature Algorithm): Основан на эллиптических кривых. Обеспечивает высокий уровень безопасности при меньшей длине ключа по сравнению с RSA, что делает его более производительным.
- Ed25519: Современный алгоритм на основе эллиптических кривых (кривая Эдвардса). Считается очень безопасным и быстрым, часто рекомендуется как предпочтительный вариант.
3. Какая разница между SSH и Telnet/FTP?
Ответ:
Основное отличие между SSH и Telnet/FTP заключается в безопасности и шифровании данных.
- SSH (Secure Shell):
- Безопасность: Высокая. Весь трафик (логины, пароли, команды, передаваемые файлы) шифруется.
- Аутентификация: Поддерживает аутентификацию по паролю и по ключам.
- Функциональность: Используется для удаленного управления сервером (выполнение команд), безопасной передачи файлов (через SCP или SFTP, которые работают поверх SSH), туннелирования трафика.
- Порт по умолчанию: 22.
- Telnet:
- Безопасность: Низкая. Весь трафик передается в открытом (незашифрованном) виде, включая логины и пароли. Это делает его уязвимым для перехвата данных.
- Аутентификация: Только по паролю.
- Функциональность: Используется для удаленного управления сервером (выполнение команд).
- Порт по умолчанию: 23.
- Применение: В настоящее время практически не используется для удаленного управления из-за отсутствия безопасности, но может применяться для тестирования сетевых служб.
- FTP (File Transfer Protocol):
- Безопасность: Низкая. Логины, пароли и данные передаются в открытом виде. Существуют защищенные версии (FTPS, SFTP), но сам FTP по умолчанию небезопасен.
- Аутентификация: По паролю.
- Функциональность: Предназначен исключительно для передачи файлов между клиентом и сервером.
- Порты по умолчанию: 20 (для данных) и 21 (для управления).
- Применение: Используется для передачи файлов, но для безопасной передачи рекомендуется использовать SFTP (который работает поверх SSH) или FTPS.
Таким образом, SSH является предпочтительным выбором для удаленного управления и передачи файлов благодаря своей безопасности, в то время как Telnet и FTP (без шифрования) считаются устаревшими и небезопасными для использования в открытых сетях.
4. Какой порт по умолчанию использует SSH? Как изменить порт при подключении?
Ответ:
SSH по умолчанию использует порт 22.
Изменить порт при подключении можно несколькими способами:
- При подключении через командную строку:
Используйте опцию
-p(или-Pв некоторых старых версиях) с указанием нового номера порта.Пример:
ssh -p 2222 user@remote_hostЗдесь
2222– это новый порт, на котором слушает SSH-сервер. - Через конфигурационный файл SSH клиента (
~/.ssh/config):Вы можете добавить запись для конкретного хоста в файл
~/.ssh/config, чтобы не указывать порт каждый раз.Пример содержимого файла
~/.ssh/config:Host my_server Hostname remote_host.com User user Port 2222После этого можно подключаться просто командой:
ssh my_serverИ клиент автоматически будет использовать порт 2222.
- На стороне сервера:
Чтобы SSH-сервер слушал на другом порту, нужно отредактировать его конфигурационный файл
/etc/ssh/sshd_config. Найдите строку#Port 22, раскомментируйте ее (удалите#) и измените номер порта на желаемый (например,Port 2222). После этого необходимо перезапустить службу SSH-сервера (например,sudo systemctl restart sshd).Изменение порта на сервере повышает безопасность, так как уменьшает количество автоматических атак на стандартный порт 22.
5. Что такое SSH-ключ и зачем он нужен?
Ответ:
SSH-ключ – это пара криптографических ключей, состоящая из приватного (закрытого) ключа и публичного (открытого) ключа. Они используются для аутентификации пользователя на SSH-сервере без необходимости ввода пароля, обеспечивая при этом более высокий уровень безопасности.
Приватный ключ:
- Хранится на клиентской машине (у пользователя).
- Должен быть строго конфиденциальным и защищенным (обычно парольной фразой).
- Никогда не передается по сети.
Публичный ключ:
- Хранится на SSH-сервере в файле
~/.ssh/authorized_keysпользователя, к которому осуществляется подключение. - Может быть свободно передан, так как не содержит конфиденциальной информации.
Зачем нужен SSH-ключ:
- Повышенная безопасность: SSH-ключи гораздо сложнее подобрать, чем пароль, особенно если используется длинный ключ (например, 4096 бит) и надежный алгоритм. Даже если злоумышленник перехватит публичный ключ, он не сможет получить доступ без соответствующего приватного ключа.
- Удобство: После настройки аутентификации по ключам не нужно каждый раз вводить пароль при подключении к серверу. Это особенно удобно при частых подключениях или автоматизации задач.
- Автоматизация: SSH-ключи позволяют автоматизировать скрипты и процессы, которые требуют подключения к удаленным серверам, без ручного ввода пароля.
- Защита от брутфорс-атак: Использование ключей значительно снижает риск успешных атак методом перебора паролей, так как парольная аутентификация может быть отключена на сервере.
Принцип работы: Когда клиент пытается подключиться к серверу, сервер использует публичный ключ для шифрования случайного сообщения и отправляет его клиенту. Клиент расшифровывает это сообщение своим приватным ключом и отправляет результат обратно серверу. Если расшифровка прошла успешно, сервер подтверждает подлинность клиента.
6. Какие основные методы аутентификации в SSH вы знаете?
Ответ:
В SSH существуют несколько основных методов аутентификации:
- Аутентификация по паролю (Password Authentication):
- Самый простой и распространенный метод.
- Пользователь вводит свой логин и пароль, которые передаются на сервер в зашифрованном виде.
- Менее безопасен по сравнению с ключами, так как пароли могут быть подобраны методом перебора (брутфорс) или скомпрометированы.
- Аутентификация по ключам (Public Key Authentication):
- Наиболее рекомендуемый и безопасный метод.
- Использует пару криптографических ключей: приватный (на клиенте) и публичный (на сервере).
- Пользователю не нужно вводить пароль (если приватный ключ не защищен парольной фразой).
- Значительно устойчивее к брутфорс-атакам.
- Аутентификация по хосту (Host-based Authentication):
- Позволяет одному хосту автоматически аутентифицироваться на другом хосте без ввода пароля или использования ключей пользователя.
- Основана на доверии между хостами, которые должны быть настроены для взаимной аутентификации.
- Менее распространен в повседневном использовании, чаще применяется в специфических сетевых конфигурациях.
- Аутентификация с использованием PAM (Pluggable Authentication Modules):
- SSH может использовать PAM для аутентификации, что позволяет интегрировать его с различными механизмами аутентификации, такими как LDAP, Kerberos, двухфакторная аутентификация и т.д.
- Это гибкий метод, позволяющий системным администраторам настраивать сложные политики аутентификации.
7. В чём преимущество аутентификации по ключам перед аутентификацией по паролю?
Ответ:
Преимущества аутентификации по ключам перед аутентификацией по паролю значительны и делают ее предпочтительным методом для большинства сценариев:
- Высокий уровень безопасности:
- Сложность подбора: SSH-ключи (особенно длиной 2048 бит и более) практически невозможно подобрать методом перебора за разумное время, в отличие от паролей, которые могут быть слабыми или скомпрометированными.
- Отсутствие передачи секрета: Приватный ключ никогда не передается по сети. Сервер проверяет подлинность клиента, используя только публичный ключ и криптографические операции, что исключает возможность перехвата секрета.
- Защита от фишинга: Пользователю не нужно вводить пароль, что снижает риск стать жертвой фишинговых атак, направленных на кражу учетных данных.
- Удобство использования:
- Без ввода пароля: После первоначальной настройки пользователю не нужно каждый раз вводить пароль при подключении к серверу, что экономит время и упрощает работу.
- Автоматизация: Позволяет легко автоматизировать скрипты и процессы, требующие удаленного доступа, без необходимости ручного ввода пароля.
- Гибкость и контроль:
- Управление доступом: Можно легко отозвать доступ, удалив публичный ключ с сервера, не меняя пароль пользователя.
- Разделение доступа: Разным пользователям можно выдавать разные ключи для доступа к одному и тому же аккаунту, что упрощает управление правами.
- Защита приватного ключа: Приватный ключ может быть защищен парольной фразой, что добавляет дополнительный уровень безопасности: даже если злоумышленник получит доступ к приватному ключу, ему потребуется знать парольную фразу.
- Защита от брутфорс-атак:
- Серверы, настроенные на аутентификацию только по ключам, могут полностью отключить аутентификацию по паролю, что делает их неуязвимыми для атак методом перебора паролей.
В целом, аутентификация по ключам является более безопасным, удобным и гибким методом для управления удаленными системами по сравнению с аутентификацией по паролю.
