Введение
В этом практическом занятии вы узнаете, как настроить тестовую среду для Hydra, установив и настроив сервер OpenSSH на виртуальной машине LabEx. Эта контролируемая среда позволит вам безопасно практиковать методы взлома паролей в последующих упражнениях.
Вы настроите сервер SSH для включения аутентификации по паролю и входа под учетной записью root, что является важным условием для тестирования Hydra. Процесс включает в себя изменение конфигурационных файлов, перезапуск служб и проверку настройки для последующего проведения тестов безопасности.
Установка локального SSH-сервера
На этом этапе вы установите сервер OpenSSH на виртуальную машину LabEx. Сначала разберемся, что такое SSH. SSH - это сокращение от Secure Shell (Безопасная оболочка), который представляет собой сетеевой протокол, создающий безопасный канал между двумя компьютерами по небезопасной сети. Это особенно важно, когда вам нужно удаленно получить доступ к системе, сохраняя шифрование вашего общения.
Сервер OpenSSH, который мы будем устанавливать, является наиболее распространенной реализацией протокола SSH в системах Linux. Настройка этого сервера позволяет создать контролируемую среду, в которой мы сможем безопасно тестировать инструменты для взлома паролей, такие как Hydra, в последующих частях практического занятия. Это аналогично тому, как специалисты по безопасности тестируют системы на наличие уязвимостей в безопасной, изолированной среде.
Сначала необходимо обновить список пакетов. Это гарантирует, что ваша система знает о последних доступных версиях программных пакетов:
sudo apt updateКоманда
sudoпредоставляет вам права администратора, аapt updateобновляет список доступных пакетов в системе.Теперь установите пакет сервера OpenSSH. Это скачает и настроит все необходимые компоненты для запуска сервера SSH:
sudo apt install -y openssh-serverФлаг
-yавтоматически отвечает "да" на все запросы во время установки, упрощая процесс.Поскольку мы работаем в контейнере Docker (легкой, изолированной среде), нам нужно вручную запустить службу SSH. Обычно она запускается автоматически, но мы настроим это позже:
sudo service ssh startПроверим, что сервер SSH работает корректно. Эта команда проверяет текущий статус службы SSH:
sudo service ssh statusВы должны увидеть вывод, содержащий "active (running)", что подтверждает, что служба работает правильно.
Наконец, проверим, что сервер SSH прослушивает на стандартном порту (22). Порты можно сравнить с дверьми, через которые службы общаются, и SSH обычно использует порт 22:
ss -tulnp | grep sshdКоманда
ssпоказывает статистику сокетов, и мы фильтруем записи, связанные с SSH. Вы должны увидеть вывод, показывающий, чтоsshdпрослушивает на*:22или0.0.0.0:22, что означает, что он готов принимать подключения на всех сетевых интерфейсах.
Настройка SSH-сервера для тестирования
На этом этапе вы настроите сервер SSH для включения аутентификации по паролю, что необходимо для тестирования с использованием Hydra в последующих шагах. SSH (Secure Shell, безопасная оболочка) - это протокол, который позволяет безопасно получать удаленный доступ к системам. По умолчанию современные конфигурации SSH приоритизируют безопасность, отключая аутентификацию по паролю в пользу аутентификации на основе ключей. Однако, так как Hydra - это инструмент для взлома паролей, нам нужно временно включить аутентификацию по паролю для целей тестирования.
Сначала создайте резервную копию исходного файла конфигурации SSH. Это хорошая практика перед внесением каких-либо изменений в систему, которая позволяет восстановить исходные настройки при необходимости:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bakОткройте файл конфигурации сервера SSH для редактирования. Мы используем nano, простой текстовый редактор, подходящий для начинающих. Файл содержит все настройки, которые контролируют работу вашего сервера SSH:
sudo nano /etc/ssh/sshd_configНайдите и измените следующие строки (или добавьте их, если они отсутствуют). Эти настройки включают аутентификацию по паролю и разрешают вход под учетной записью root, что необходимо для нашей тестовой среды:
PasswordAuthentication yes PermitRootLogin yesСохраните файл (Ctrl+O, Enter) и выйдите из nano (Ctrl+X). Помните, что изменения вступят в силу только после перезапуска службы SSH.
Перезапустите службу SSH, чтобы применить изменения. Это сообщает системе перезагрузить файл конфигурации с нашими новыми настройками:
sudo service ssh restartПроверьте, что новая конфигурация активна. Эта команда проверяет текущую конфигурацию SSH и фильтрует по нашим конкретным настройкам, чтобы подтвердить, что они корректно включены:
sudo sshd -T | grep -E "passwordauthentication|permitrootlogin"Вы должны увидеть вывод, подтверждающий, что обе настройки включены. Если этого не происходит, убедитесь, что вы корректно сохранили файл и перезапустили службу.
Создание тестовых учетных записей пользователей
На этом этапе вы создадите тестовые пользовательские учетные записи с преднамеренно слабыми паролями. Эти учетные записи будут служить целями, когда мы позже используем Hydra для демонстрации брутфорс-атак на SSH. Создание таких тестовых учетных записей позволяет нам безопасно смоделировать реальные сценарии, когда злоумышленники могут использовать слабые учетные данные.
Создадим три тестовых пользователя с распространенными слабыми паролями. Эти пароли намеренно просты, так как мы хотим, чтобы Hydra смог их взломать во время нашего тестирования. В реальных системах вы всегда должны использовать надежные, сложные пароли.
Создайте три тестовых пользователя с простыми паролями (мы будем использовать их для тестирования):
sudo useradd -m -s /bin/bash testuser1 echo "testuser1:password123" | sudo chpasswd sudo useradd -m -s /bin/bash testuser2 echo "testuser2:qwerty" | sudo chpasswd sudo useradd -m -s /bin/bash testuser3 echo "testuser3:letmein" | sudo chpasswdКоманда
useraddсоздает каждого пользователя с домашней директорией (-m) и устанавливает для них оболочку bash (-s /bin/bash). Затем командаchpasswdустанавливает пароль для каждого пользователя.Проверьте, что пользователи были успешно созданы:
id testuser1 id testuser2 id testuser3Команда
idпоказывает информацию о пользователе. Вы должны увидеть вывод, подтверждающий существование каждого пользователя, включая его идентификатор пользователя (UID), идентификатор группы (GID) и членство в группах. Этот этап проверки гарантирует, что наши тестовые учетные записи правильно настроены перед дальнейшими действиями.Убедитесь, что пароли были установлены правильно, попробовав переключиться на каждого пользователя (вам нужно будет ввести только что установленные пароли):
su - testuser1 exit su - testuser2 exit su - testuser3 exitКоманда
su - usernameпозволяет переключиться на другую пользовательскую учетную запись. После ввода каждого пароля вы должны видеть, как командная строка временно изменится, указывая, что вы вошли под учетной записью этого пользователя. Командаexitвозвращает вас в исходную сессию. Этот этап подтверждает, что пароли работают как ожидается.(По желанию) Создайте текстовый файл, содержащий тестовые учетные данные для справки:
echo -e "testuser1:password123\ntestuser2:qwerty\ntestuser3:letmein" > ~/project/test_credentials.txtЭто создаст текстовый файл, в котором перечислены все тестовые учетные данные в формате имя_пользователя:пароль. Хотя это не является строго обязательным, наличие этого файла справки может быть полезно во время тестирования. Флаг
-eпозволяет интерпретировать экранированные последовательности, такие как\nдля перехода на новую строку.
Запуск службы SSH
На этом этапе вы убедитесь, что служба SSH корректно запущена и настроена на автоматический запуск. SSH (Secure Shell, безопасная оболочка) - это сетеевой протокол, который позволяет безопасно получать удаленный доступ между компьютерами. В нашей тестовой среде Hydra нам нужно, чтобы SSH работал непрерывно, чтобы мы могли надежно проводить тесты по взлому паролей.
Сначала проверим, активна ли в данный момент служба SSH. Эта команда показывает текущий статус демона SSH (sshd):
sudo service ssh statusЕсли служба не запущена, в выводе вы увидите "inactive (dead)". Это означает, что служба SSH в настоящее время остановлена и не принимает никаких подключений.
Если служба не запущена, нам нужно ее запустить. Эта команда инициализирует демон SSH:
sudo service ssh startПосле запуска службы убедимся, что она корректно работает. Теперь команда статуса должна показать другой вывод:
sudo service ssh statusТеперь в выводе вы должны увидеть "active (running)", что означает, что служба SSH готова принимать подключения.
Поскольку мы работаем в контейнере Docker (легкой изолированной среде), нам нужно убедиться, что SSH запускается автоматически при перезапуске контейнера. Эта строка добавляет команду запуска в файл конфигурации bash:
echo 'sudo service ssh start' >> ~/.bashrcФайл .bashrc запускается автоматически при запуске новой сессии терминала, поэтому это гарантирует, что SSH всегда будет запускаться при запуске контейнера.
Наконец, убедимся, что SSH прослушивает правильный сетевой порт (порт 22 - это порт по умолчанию для SSH). Эта команда показывает все активные сетевые подключения:
sudo netstat -tulnp | grep sshdВы должны увидеть вывод, показывающий, что sshd прослушивает на 0.0.0.0:22, что означает, что сервер SSH правильно настроен для приема подключений с любого сетевого интерфейса на стандартном порте SSH.
Проверка доступности SSH - сервера
На этом последнем этапе мы проверим, что ваш SSH-сервер правильно настроен и доступен. Это крайне важно, так как Hydra (инструмент для взлома паролей, который мы будем использовать в последующих лабораторных работах) требует работающей службы SSH для проведения тестов. Мы выполним несколько проверок, чтобы убедиться, что все работает как ожидается.
Сначала проверим, запущена ли на самом деле служба SSH. Иногда службы могут не запуститься или аварийно завершить работу, поэтому это наша первая проверка на работоспособность:
sudo service ssh statusВ выводе должно быть четко указано "active (running)". Если этого нет, нам нужно будет провести устранение неполадок с службой перед дальнейшими действиями.
Теперь протестируем локальный доступ по SSH с использованием одной из тестовых учетных записей, которые мы создали ранее. Это имитирует то, как Hydra будет пытаться подключиться:
ssh testuser1@localhostПри запросе введите пароль "password123" (тот, который мы установили ранее). После успешного входа введите
exit, чтобы вернуться в основную сессию. Это подтверждает, что базовая аутентификация по паролю работает.Теперь проверим аутентификацию по паролю (так как Hydra в основном использует брутфорс для взлома паролей). Мы заставим SSH использовать аутентификацию по паролю и намеренно укажем неверный пароль:
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no testuser1@localhostПри запросе введите любой неверный пароль. Сервер должен отклонить подключение, что является ожидаемым поведением.
Далее проверим, что SSH-сервер прослушивает правильный сетевой интерфейс и порт. Это гарантирует, что удаленные подключения (например, от Hydra) могут достичь службы:
sudo netstat -tulnp | grep sshdВы должны увидеть, что sshd прослушивает на 0.0.0.0:22, что означает, что он принимает подключения с любого сетевого интерфейса на стандартном порте SSH (22).
Наконец, рассмотрим журналы аутентификации, чтобы увидеть записи о наших тестовых попытках. Журналы очень полезны для устранения неполадок и понимания того, что происходит в фоновом режиме:
sudo tail -n 10 /var/log/auth.logНайдите записи, показывающие ваш успешный вход (шаг 2) и неудачную попытку (шаг 3). Эти журналы также будут важны при анализе попыток атаки Hydra в будущем.
Резюме
В этой лабораторной работе вы научились настраивать тестовую среду для Hydra путем установки и настройки сервера OpenSSH на виртуальной машине LabEx. Процесс включал обновление пакетов, установку SSH-сервера и проверку его статуса работы, а также настройку параметров аутентификации для тестирования.
Вы также практиковались в создании тестовых учетных записей для имитации реальных сценариев и подготовке среды для тестирования безопасности паролей. В этой лабораторной работе вы получили важный практический опыт в настройке SSH-серверов и создании контролируемых сред для экспериментов с инструментами безопасности.


