Настройка тестовой среды для Hydra

HydraBeginner
Практиковаться сейчас

Введение

В этом практическом занятии вы узнаете, как настроить тестовую среду для Hydra, установив и настроив сервер OpenSSH на виртуальной машине LabEx. Эта контролируемая среда позволит вам безопасно практиковать методы взлома паролей в последующих упражнениях.

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

Установка локального SSH-сервера

На этом этапе вы установите сервер OpenSSH на виртуальную машину LabEx. Сначала разберемся, что такое SSH. SSH - это сокращение от Secure Shell (Безопасная оболочка), который представляет собой сетеевой протокол, создающий безопасный канал между двумя компьютерами по небезопасной сети. Это особенно важно, когда вам нужно удаленно получить доступ к системе, сохраняя шифрование вашего общения.

Сервер OpenSSH, который мы будем устанавливать, является наиболее распространенной реализацией протокола SSH в системах Linux. Настройка этого сервера позволяет создать контролируемую среду, в которой мы сможем безопасно тестировать инструменты для взлома паролей, такие как Hydra, в последующих частях практического занятия. Это аналогично тому, как специалисты по безопасности тестируют системы на наличие уязвимостей в безопасной, изолированной среде.

  1. Сначала необходимо обновить список пакетов. Это гарантирует, что ваша система знает о последних доступных версиях программных пакетов:

    sudo apt update
    

    Команда sudo предоставляет вам права администратора, а apt update обновляет список доступных пакетов в системе.

  2. Теперь установите пакет сервера OpenSSH. Это скачает и настроит все необходимые компоненты для запуска сервера SSH:

    sudo apt install -y openssh-server
    

    Флаг -y автоматически отвечает "да" на все запросы во время установки, упрощая процесс.

  3. Поскольку мы работаем в контейнере Docker (легкой, изолированной среде), нам нужно вручную запустить службу SSH. Обычно она запускается автоматически, но мы настроим это позже:

    sudo service ssh start
    
  4. Проверим, что сервер SSH работает корректно. Эта команда проверяет текущий статус службы SSH:

    sudo service ssh status
    

    Вы должны увидеть вывод, содержащий "active (running)", что подтверждает, что служба работает правильно.

  5. Наконец, проверим, что сервер 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 - это инструмент для взлома паролей, нам нужно временно включить аутентификацию по паролю для целей тестирования.

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

    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
    
  2. Откройте файл конфигурации сервера SSH для редактирования. Мы используем nano, простой текстовый редактор, подходящий для начинающих. Файл содержит все настройки, которые контролируют работу вашего сервера SSH:

    sudo nano /etc/ssh/sshd_config
    
  3. Найдите и измените следующие строки (или добавьте их, если они отсутствуют). Эти настройки включают аутентификацию по паролю и разрешают вход под учетной записью root, что необходимо для нашей тестовой среды:

    PasswordAuthentication yes
    PermitRootLogin yes
    
  4. Сохраните файл (Ctrl+O, Enter) и выйдите из nano (Ctrl+X). Помните, что изменения вступят в силу только после перезапуска службы SSH.

  5. Перезапустите службу SSH, чтобы применить изменения. Это сообщает системе перезагрузить файл конфигурации с нашими новыми настройками:

    sudo service ssh restart
    
  6. Проверьте, что новая конфигурация активна. Эта команда проверяет текущую конфигурацию SSH и фильтрует по нашим конкретным настройкам, чтобы подтвердить, что они корректно включены:

    sudo sshd -T | grep -E "passwordauthentication|permitrootlogin"
    

    Вы должны увидеть вывод, подтверждающий, что обе настройки включены. Если этого не происходит, убедитесь, что вы корректно сохранили файл и перезапустили службу.

Создание тестовых учетных записей пользователей

На этом этапе вы создадите тестовые пользовательские учетные записи с преднамеренно слабыми паролями. Эти учетные записи будут служить целями, когда мы позже используем Hydra для демонстрации брутфорс-атак на SSH. Создание таких тестовых учетных записей позволяет нам безопасно смоделировать реальные сценарии, когда злоумышленники могут использовать слабые учетные данные.

Создадим три тестовых пользователя с распространенными слабыми паролями. Эти пароли намеренно просты, так как мы хотим, чтобы Hydra смог их взломать во время нашего тестирования. В реальных системах вы всегда должны использовать надежные, сложные пароли.

  1. Создайте три тестовых пользователя с простыми паролями (мы будем использовать их для тестирования):

    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 устанавливает пароль для каждого пользователя.

  2. Проверьте, что пользователи были успешно созданы:

    id testuser1
    id testuser2
    id testuser3
    

    Команда id показывает информацию о пользователе. Вы должны увидеть вывод, подтверждающий существование каждого пользователя, включая его идентификатор пользователя (UID), идентификатор группы (GID) и членство в группах. Этот этап проверки гарантирует, что наши тестовые учетные записи правильно настроены перед дальнейшими действиями.

  3. Убедитесь, что пароли были установлены правильно, попробовав переключиться на каждого пользователя (вам нужно будет ввести только что установленные пароли):

    su - testuser1
    exit
    su - testuser2
    exit
    su - testuser3
    exit
    

    Команда su - username позволяет переключиться на другую пользовательскую учетную запись. После ввода каждого пароля вы должны видеть, как командная строка временно изменится, указывая, что вы вошли под учетной записью этого пользователя. Команда exit возвращает вас в исходную сессию. Этот этап подтверждает, что пароли работают как ожидается.

  4. (По желанию) Создайте текстовый файл, содержащий тестовые учетные данные для справки:

    echo -e "testuser1:password123\ntestuser2:qwerty\ntestuser3:letmein" > ~/project/test_credentials.txt
    

    Это создаст текстовый файл, в котором перечислены все тестовые учетные данные в формате имя_пользователя:пароль. Хотя это не является строго обязательным, наличие этого файла справки может быть полезно во время тестирования. Флаг -e позволяет интерпретировать экранированные последовательности, такие как \n для перехода на новую строку.

Запуск службы SSH

На этом этапе вы убедитесь, что служба SSH корректно запущена и настроена на автоматический запуск. SSH (Secure Shell, безопасная оболочка) - это сетеевой протокол, который позволяет безопасно получать удаленный доступ между компьютерами. В нашей тестовой среде Hydra нам нужно, чтобы SSH работал непрерывно, чтобы мы могли надежно проводить тесты по взлому паролей.

  1. Сначала проверим, активна ли в данный момент служба SSH. Эта команда показывает текущий статус демона SSH (sshd):

    sudo service ssh status
    

    Если служба не запущена, в выводе вы увидите "inactive (dead)". Это означает, что служба SSH в настоящее время остановлена и не принимает никаких подключений.

  2. Если служба не запущена, нам нужно ее запустить. Эта команда инициализирует демон SSH:

    sudo service ssh start
    
  3. После запуска службы убедимся, что она корректно работает. Теперь команда статуса должна показать другой вывод:

    sudo service ssh status
    

    Теперь в выводе вы должны увидеть "active (running)", что означает, что служба SSH готова принимать подключения.

  4. Поскольку мы работаем в контейнере Docker (легкой изолированной среде), нам нужно убедиться, что SSH запускается автоматически при перезапуске контейнера. Эта строка добавляет команду запуска в файл конфигурации bash:

    echo 'sudo service ssh start' >> ~/.bashrc
    

    Файл .bashrc запускается автоматически при запуске новой сессии терминала, поэтому это гарантирует, что SSH всегда будет запускаться при запуске контейнера.

  5. Наконец, убедимся, что SSH прослушивает правильный сетевой порт (порт 22 - это порт по умолчанию для SSH). Эта команда показывает все активные сетевые подключения:

    sudo netstat -tulnp | grep sshd
    

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

Проверка доступности SSH - сервера

На этом последнем этапе мы проверим, что ваш SSH-сервер правильно настроен и доступен. Это крайне важно, так как Hydra (инструмент для взлома паролей, который мы будем использовать в последующих лабораторных работах) требует работающей службы SSH для проведения тестов. Мы выполним несколько проверок, чтобы убедиться, что все работает как ожидается.

  1. Сначала проверим, запущена ли на самом деле служба SSH. Иногда службы могут не запуститься или аварийно завершить работу, поэтому это наша первая проверка на работоспособность:

    sudo service ssh status
    

    В выводе должно быть четко указано "active (running)". Если этого нет, нам нужно будет провести устранение неполадок с службой перед дальнейшими действиями.

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

    ssh testuser1@localhost
    

    При запросе введите пароль "password123" (тот, который мы установили ранее). После успешного входа введите exit, чтобы вернуться в основную сессию. Это подтверждает, что базовая аутентификация по паролю работает.

  3. Теперь проверим аутентификацию по паролю (так как Hydra в основном использует брутфорс для взлома паролей). Мы заставим SSH использовать аутентификацию по паролю и намеренно укажем неверный пароль:

    ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no testuser1@localhost
    

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

  4. Далее проверим, что SSH-сервер прослушивает правильный сетевой интерфейс и порт. Это гарантирует, что удаленные подключения (например, от Hydra) могут достичь службы:

    sudo netstat -tulnp | grep sshd
    

    Вы должны увидеть, что sshd прослушивает на 0.0.0.0:22, что означает, что он принимает подключения с любого сетевого интерфейса на стандартном порте SSH (22).

  5. Наконец, рассмотрим журналы аутентификации, чтобы увидеть записи о наших тестовых попытках. Журналы очень полезны для устранения неполадок и понимания того, что происходит в фоновом режиме:

    sudo tail -n 10 /var/log/auth.log
    

    Найдите записи, показывающие ваш успешный вход (шаг 2) и неудачную попытку (шаг 3). Эти журналы также будут важны при анализе попыток атаки Hydra в будущем.

Резюме

В этой лабораторной работе вы научились настраивать тестовую среду для Hydra путем установки и настройки сервера OpenSSH на виртуальной машине LabEx. Процесс включал обновление пакетов, установку SSH-сервера и проверку его статуса работы, а также настройку параметров аутентификации для тестирования.

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