대상 OS: Ubuntu Server 24.04 LTS

SSH 포트를 22에서 다른 포트로 바꾸면 무차별 스캔 노이즈는 줄 수 있지만, 보안의 핵심은 아닙니다. 공격자는 포트 스캔을 하고, 취약한 인증/권한 구성이 남아 있으면 결국 들어옵니다. 포트 변경은 ‘옵션’이고, 아래 항목들이 ‘필수’입니다.

포트 변경 전에 반드시 먼저 할 것(우선순위 순)

  1. 1) 키 기반 인증 + 비밀번호 로그인 차단

    가장 효과가 큰 조치입니다. 비밀번호 기반은 크리덴셜 스터핑/브루트포스에 지속적으로 노출됩니다.

    # sshd 설정 편집
    sudoedit /etc/ssh/sshd_config
    
    # 권장 예시(환경에 맞게)
    # PasswordAuthentication no
    # PubkeyAuthentication yes
    # KbdInteractiveAuthentication no
    # ChallengeResponseAuthentication no
    
    # 설정 문법 검사
    sudo sshd -t
    
    # 적용
    sudo systemctl reload ssh


  2. 2) root 직접 로그인 금지 + 최소 권한 운영

    root 로그인은 감사/추적이 어려워지고, 계정 탈취 시 피해가 커집니다. 일반 사용자로 접속 후 sudo로 승격하는 구조가 기본입니다.

    # sshd_config 권장
    # PermitRootLogin no
    
    sudo sshd -t
    sudo systemctl reload ssh
    
    # sudo 권한은 필요한 사용자만
    getent group sudo
    sudo -l


  3. 3) 접속 허용 대상을 줄이기(AllowUsers/AllowGroups)

    운영에 필요한 계정만 SSH로 들어오게 하면, 계정이 많아도 공격 표면이 줄어듭니다.

    sudoedit /etc/ssh/sshd_config
    
    # 예시: 특정 계정만 허용
    # AllowUsers deploy admin
    
    # 또는 특정 그룹만 허용
    # AllowGroups sshlogin
    
    # 그룹 운영 예시
    sudo groupadd -f sshlogin
    sudo usermod -aG sshlogin deploy
    sudo usermod -aG sshlogin admin
    
    sudo sshd -t
    sudo systemctl reload ssh


  4. 4) 방화벽(UFW)로 “필요한 IP/대역만” 열기

    가능하다면 SSH는 전 세계에 열지 말고, 사내 고정 IP/VPN 대역 등으로 제한하세요. 이게 포트 변경보다 훨씬 강합니다.

    # UFW 활성화 상태 확인
    sudo ufw status verbose
    
    # 예: 회사 고정 IP에서만 22/tcp 허용
    sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
    
    # 예: VPN 대역만 허용
    sudo ufw allow from 10.8.0.0/24 to any port 22 proto tcp
    
    # 그 외는 차단(기본 정책)
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    
    sudo ufw status numbered


  5. 5) Fail2ban(또는 유사 대책)으로 무차별 시도 비용 올리기

    비밀번호 로그인을 껐더라도, 스캔/시도는 계속 옵니다. fail2ban은 로그 기반으로 공격 IP를 일정 시간 차단해 노이즈/자원 소모를 줄입니다.

    sudo apt update
    sudo apt install -y fail2ban
    
    # 기본 jail 설정(SSH만 최소로)
    sudo tee /etc/fail2ban/jail.d/sshd.local >/dev/null