ПРАКТИЧЕСКАЯ РАБОТА 8. Настройка и использование SSH.
Цель: Обеспечить возможность управления удаленным сервером при помощи ssh.
Контрольные вопросы:
1. Что такое SSH, как он работает? SSH (Secure Shell) — это сетевой протокол, который позволяет безопасно управлять удаленными компьютерами по незащищенной сети. Он обеспечивает шифрование всего трафика между клиентом и сервером, защищая данные от перехвата и подделки. Как он работает: * Когда вы подключаетесь к удаленному серверу по SSH, клиент и сервер сначала обмениваются ключами шифрования. Это происходит с использованием асимметричного шифрования (например, RSA или ECDSA). * После обмена ключами устанавливается зашифрованный канал связи. Все данные, которые передаются по этому каналу (команды, пароли, вывод), шифруются. * Аутентификация пользователя может происходить по паролю или по ключам. При аутентификации по паролю пароль передается по зашифрованному каналу. При аутентификации по ключам используется пара ключей: публичный ключ хранится на сервере, а приватный — у клиента. Сервер проверяет подлинность клиента, используя его публичный ключ.
2. Как создать пару SSH-ключей? Какие алгоритмы шифрования для ключей существуют? Создать пару SSH-ключей можно с помощью команды `ssh-keygen` в терминале. Пример команды: `ssh-keygen -t rsa -b 4096` * `-t rsa` указывает тип алгоритма (RSA). * `-b 4096` указывает длину ключа в битах (4096 бит для RSA считается безопасным). После выполнения команды система предложит выбрать место для сохранения ключей и ввести парольную фразу (passphrase) для защиты приватного ключа. Существующие алгоритмы шифрования для ключей: * RSA (Rivest-Shamir-Adleman): Один из старейших и наиболее распространенных алгоритмов. * DSA (Digital Signature Algorithm): Менее распространен, чем RSA, и имеет некоторые ограничения. * ECDSA (Elliptic Curve Digital Signature Algorithm): Использует эллиптические кривые, что позволяет создавать более короткие ключи с такой же или даже большей стойкостью, чем RSA. * EdDSA (Edwards-curve Digital Signature Algorithm): Современный алгоритм, основанный на эллиптических кривых, часто считается более безопасным и эффективным, чем ECDSA.
3. Какая разница между SSH и Telnet/FTP? Основное отличие между SSH и Telnet/FTP заключается в безопасности. * SSH (Secure Shell): * Обеспечивает шифрование всего трафика (данных, паролей, команд). * Использует сильные алгоритмы шифрования для защиты от перехвата и подделки. * Поддерживает различные методы аутентификации, включая аутентификацию по ключам, которая более безопасна, чем пароли. * Используется для удаленного управления серверами, передачи файлов (через SFTP или SCP) и туннелирования трафика. * Telnet: * Передает все данные, включая логины и пароли, в открытом (незашифрованном) виде. * Очень уязвим для перехвата данных. * Считается устаревшим и небезопасным для использования в незащищенных сетях. * Используется только для удаленного доступа к командной строке. * FTP (File Transfer Protocol): * Предназначен исключительно для передачи файлов. * По умолчанию передает логины, пароли и сами файлы в открытом (незашифрованном) виде. * Также уязвим для перехвата данных. * Для безопасной передачи файлов рекомендуется использовать SFTP (SSH File Transfer Protocol) или FTPS (FTP Secure), которые добавляют шифрование. Таким образом, SSH является безопасной альтернативой Telnet и FTP, обеспечивая конфиденциальность и целостность данных.
4. Какой порт по умолчанию использует SSH? Как изменить порт при подключении? По умолчанию SSH использует порт 22. Изменить порт при подключении можно несколькими способами: * При подключении через командную строку: Используйте опцию `-p` с указанием нового порта. Пример: `ssh -p 2222 user@remote_host` (где 2222 — новый порт). * В конфигурационном файле SSH клиента (`~/.ssh/config`): Вы можете добавить запись для конкретного хоста:
Host remote_host
Hostname remote_host_ip_or_domain
Port 2222
User user
После этого можно будет подключаться просто командой `ssh remote_host`.
* На стороне сервера (для изменения порта, на котором слушает SSH-сервер):
Необходимо отредактировать файл конфигурации SSH-сервера, обычно это `/etc/ssh/sshd_config`.
Найдите строку `Port 22` и измените ее на `Port 2222` (или любой другой желаемый порт).
После изменения необходимо перезапустить службу SSH-сервера:
`sudo systemctl restart sshd` (для систем на основе systemd, таких как Ubuntu).
Важно: После изменения порта на сервере, все клиенты должны будут использовать новый порт для подключения.
5. Что такое SSH-ключ и зачем он нужен? SSH-ключ — это пара криптографических ключей, состоящая из публичного (открытого) и приватного (закрытого) ключей. * Публичный ключ: Может быть свободно распространен и хранится на сервере, к которому вы хотите подключиться. * Приватный ключ: Должен храниться в секрете на вашем локальном компьютере и никогда не должен быть передан никому. Зачем он нужен: SSH-ключи используются для безопасной аутентификации пользователя на удаленном сервере без необходимости ввода пароля. Это обеспечивает более высокий уровень безопасности по сравнению с парольной аутентификацией по нескольким причинам: * Стойкость к подбору: Ключи намного длиннее и сложнее, чем обычные пароли, что делает их практически невозможными для подбора методом грубой силы. * Отсутствие передачи пароля: Приватный ключ никогда не передается по сети, что исключает его перехват. * Удобство: После настройки аутентификации по ключам вам не нужно каждый раз вводить пароль. * Автоматизация: Ключи позволяют автоматизировать скрипты и процессы, которые требуют доступа к удаленным серверам. * Дополнительная защита: Приватный ключ может быть защищен парольной фразой, что добавляет еще один уровень безопасности.
6. Какие основные методы аутентификации в SSH вы знаете? Основные методы аутентификации в SSH: * Аутентификация по паролю (Password Authentication): Пользователь вводит свой логин и пароль. Пароль передается по зашифрованному каналу. Это самый простой, но наименее безопасный метод, так как пароли могут быть слабыми или скомпрометированы. * Аутентификация по ключам (Public Key Authentication): Используется пара SSH-ключей (публичный и приватный). Публичный ключ хранится на сервере, приватный — у клиента. Сервер проверяет подлинность клиента, используя его публичный ключ и криптографическую подпись, созданную приватным ключом. Это наиболее рекомендуемый и безопасный метод. * Аутентификация по хосту (Host-based Authentication): Позволяет одному хосту автоматически аутентифицироваться на другом хосте, если они доверяют друг другу. Используется для автоматизации и в специфических сетевых конфигурациях. Менее распространен для обычных пользователей. * Интерактивная аутентификация (Keyboard-Interactive Authentication): Гибкий метод, который позволяет серверу запрашивать у пользователя любую информацию, например, одноразовые пароли, ответы на вопросы безопасности или другие формы двухфакторной аутентификации.
7. В чём преимущество аутентификации по ключам перед аутентификацией по паролю? Преимущества аутентификации по ключам перед аутентификацией по паролю: * Высокая безопасность: SSH-ключи намного сложнее подобрать, чем пароли. Длина ключей (например, 4096 бит для RSA) делает их практически неуязвимыми для атак методом грубой силы. Пароли, даже сложные, могут быть скомпрометированы или угаданы. * Отсутствие передачи пароля: Приватный ключ никогда не покидает ваш локальный компьютер. Сервер проверяет подлинность клиента, используя только публичный ключ и криптографическую подпись, что исключает возможность перехвата пароля по сети. * Удобство: После настройки аутентификации по ключам вам не нужно каждый раз вводить пароль при подключении к серверу. Это значительно ускоряет и упрощает работу. * Автоматизация: Аутентификация по ключам идеально подходит для автоматизации задач, скриптов и развертывания, так как не требует ручного ввода пароля. * Защита приватного ключа: Приватный ключ может быть дополнительно защищен парольной фразой. Даже если злоумышленник получит доступ к вашему приватному ключу, ему все равно потребуется знать парольную фразу, чтобы его использовать. * Устойчивость к фишингу: Поскольку нет необходимости вводить пароль, снижается риск фишинговых атак, направленных на его кражу. В целом, аутентификация по ключам обеспечивает значительно более высокий уровень безопасности, удобства и гибкости по сравнению с аутентификацией по паролю.