Hydra 테스트 환경 설정

HydraBeginner
지금 연습하기

소개

이 랩에서는 LabEx VM 에 OpenSSH 서버를 설치하고 구성하여 Hydra 에 대한 테스트 환경을 설정하는 방법을 배우게 됩니다. 이 제어된 환경을 통해 이후 연습에서 비밀번호 크래킹 기술을 안전하게 연습할 수 있습니다.

Hydra 테스트에 필수적인 비밀번호 인증 및 root 로그인을 활성화하도록 SSH 서버를 구성합니다. 이 과정에는 구성 파일 수정, 서비스 재시작, 후속 보안 테스트를 위한 설정 확인 등이 포함됩니다.

로컬 SSH 서버 설치

이 단계에서는 LabEx VM 에 OpenSSH 서버를 설치합니다. 먼저 SSH 가 무엇인지 이해해 보겠습니다. SSH 는 Secure Shell 의 약자로, 안전하지 않은 네트워크를 통해 두 컴퓨터 간에 안전한 채널을 생성하는 네트워크 프로토콜입니다. 이는 통신을 암호화하면서 원격으로 시스템에 액세스해야 할 때 특히 중요합니다.

우리가 설치하는 OpenSSH 서버는 Linux 시스템에서 SSH 프로토콜의 가장 일반적인 구현입니다. 이를 설정함으로써, 나중에 이 랩에서 Hydra 와 같은 비밀번호 크래킹 도구를 안전하게 테스트할 수 있는 제어된 환경을 만들고 있습니다. 이는 보안 전문가가 안전하고 격리된 환경에서 시스템의 취약점을 테스트하는 방식과 유사합니다.

  1. 먼저 패키지 목록을 업데이트해야 합니다. 이렇게 하면 시스템이 최신 소프트웨어 패키지 버전을 인식하도록 할 수 있습니다.

    sudo apt update
    

    sudo 명령은 관리자 권한을 부여하고, apt update는 시스템의 사용 가능한 패키지 목록을 새로 고칩니다.

  2. 이제 OpenSSH 서버 패키지를 설치합니다. 이렇게 하면 SSH 서버를 실행하는 데 필요한 모든 구성 요소가 다운로드되어 설정됩니다.

    sudo apt install -y openssh-server
    

    -y 플래그는 설치 중에 발생하는 모든 프롬프트에 자동으로 "yes"로 응답하여 프로세스를 더 원활하게 만듭니다.

  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 관련 항목을 필터링하고 있습니다. *:22 또는 0.0.0.0:22에서 sshd가 수신 대기하는 출력을 확인해야 합니다. 즉, 모든 네트워크 인터페이스에서 연결을 수락할 준비가 되었음을 의미합니다.

테스트를 위한 SSH 서버 구성

이 단계에서는 이후 단계에서 Hydra 로 테스트하는 데 필요한 비밀번호 인증을 활성화하도록 SSH 서버를 구성합니다. 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 명령은 사용자 정보를 표시합니다. 각 사용자가 사용자 ID(UID), 그룹 ID(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
    

    이렇게 하면 모든 테스트 자격 증명이 username:password 형식으로 나열된 텍스트 파일이 생성됩니다. 엄격하게 필요하지는 않지만, 이 참조 파일이 있으면 테스트 중에 도움이 될 수 있습니다. -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 의 공격 시도를 분석할 때도 중요합니다.

요약

이 랩에서는 LabEx VM 에 OpenSSH 서버를 설치하고 구성하여 Hydra 에 대한 테스트 환경을 설정하는 방법을 배웠습니다. 이 프로세스에는 패키지 업데이트, SSH 서버 설치, 작동 상태 확인, 테스트 목적으로 인증 설정을 구성하는 작업이 포함되었습니다.

또한 실제 시나리오를 시뮬레이션하기 위해 테스트 사용자 계정을 생성하는 연습을 했으며, 비밀번호 보안 테스트를 위한 환경을 준비했습니다. 이 랩은 SSH 서버를 구성하고 보안 도구 실험을 위한 제어된 환경을 구축하는 데 필수적인 실습 경험을 제공했습니다.