SSH

SSH 포트 안내: 원격 서버 접속 보안

SSH가 포트 22를 사용하는 방법, 이를 노출하는 시기, 원격 액세스를 테스트하는 방법, 무차별 공격 및 자격 증명 위험을 줄이는 방법을 이해합니다.

기본 포트
22
프로토콜
TCP
주요 용도
보안 원격 관리

SSH 포트는 무엇인가요?

SSH, 즉 Secure Shell은 원격 서버 관리를 위한 표준 암호화 프로토콜입니다. 기본적으로 클라이언트가 인증하고, 서버 호스트 키를 확인하고, 보안 셸 세션, 터널 또는 자동화 연결을 여는 TCP 포트 22를 수신합니다.

  • 포트 22는 기본 SSH 포트입니다.

    대부분의 Linux 서버, 네트워크 장치, Git 서비스, 배포 도구 및 SFTP 설정에서는 달리 구성하지 않는 한 TCP 22에서 SSH에 연결할 수 있을 것으로 예상합니다.

  • SSH 노출은 의도적이어야 함

    개방형 SSH 포트는 관리에 유용하지만 취약한 비밀번호나 유출된 키를 찾기 위해 공격자가 검색하는 첫 번째 서비스 중 하나이기도 합니다.

SSH 작동 방식

SSH는 클라이언트와 원격 서버 사이에 암호화된 채널을 생성합니다. 연결 설정 중에 클라이언트는 서버 호스트 키를 확인하고 양측이 암호화를 협상하며 사용자는 비밀번호, SSH 키, 인증서, 하드웨어 지원 키 또는 기타 구성된 방법을 사용하여 인증합니다.

인증 후 SSH는 대화형 셸을 제공하고, 단일 원격 명령을 실행하고, 포트를 전달하고, 파일을 복사하거나 Git, rsync, Ansible 및 배포 파이프라인과 같은 강력한 도구를 사용할 수 있습니다. 이러한 유연성은 SSH가 운영상 중요한 이유이자 노출에 신중한 정책이 필요한 이유입니다.

SSH 접속을 열어야 하는 경우

관리자, 자동화 도구, CI/CD 작업, 구성 관리, Git 서비스 또는 Break Glass 워크플로가 서버나 장치에 대한 원격 액세스가 필요한 경우 SSH를 엽니다. 퍼블릭 클라우드 서버의 경우 SSH는 더 높은 수준의 도구가 설치되기 전에 사용되는 첫 번째 관리 경로인 경우가 많습니다.

소규모 그룹에만 액세스가 필요한 경우 전체 인터넷에 SSH를 게시하지 마십시오. 가능하다면 VPN, 배스천 호스트, 제로 트러스트 액세스, 클라우드 직렬 콘솔, 소스 IP 허용 목록 또는 개인 네트워크 연결을 선호하세요. 공개 SSH가 불가피하다면 처음부터 강력한 인증과 모니터링을 시행하세요.

22번 포트를 열기 전

포트 22를 열기 전에 sshd가 실행 중인지, 의도한 인터페이스에서 수신 대기 중인지, 실제로 원하는 인증 모델에 맞게 구성되었는지 확인하세요. 비밀번호 허용 여부, 로그인할 수 있는 사용자, 루트 로그인 비활성화 여부, 관리 작업 감사 방법을 결정합니다.

포트 검사기는 네트워크 외부에서 TCP 22에 연결할 수 있는지 확인할 수 있지만 사용자가 안전하게 로그인할 수 있는지 여부는 증명할 수 없습니다. ssh -vvv, 서버 로그 및 계정 수준 테스트를 사용하여 호스트 키 신뢰, 키 권한, MFA 정책, 셸 액세스 및 sudo 규칙을 검증합니다.

Windows, Linux 및 macOS에서 SSH를 여는 방법

Windows Server에서 OpenSSH 서버를 설치 및 활성화하고, sshd 서비스를 시작한 다음, Windows Defender 방화벽에서 인바운드 TCP 22를 허용합니다. 클라우드 호스팅 Windows 서버에는 일치하는 클라우드 방화벽 또는 보안 그룹 규칙도 필요합니다.

Linux에서는 OpenSSH 서버를 설치하고 sshd_config를 확인한 후 ufw, Firewalld, nftables 또는 iptables와 같은 호스트 방화벽을 통해 TCP 22를 허용합니다. 또한 클라우드 인스턴스에서는 공급자 보안 그룹이 동일한 소스 네트워크를 허용해야 합니다.

macOS에서는 신뢰할 수 있는 네트워크에 SSH가 필요할 때 원격 로그인을 활성화합니다. 인터넷 노출의 경우 키 기반 인증, 방화벽 범위 지정, 로깅, 적시 업데이트 등 서버와 동일한 제어를 적용합니다.

  • 서비스 계층: sshd가 설치되어 실행되고 선택한 TCP 포트에서 수신 대기해야 합니다.
  • 네트워크 계층: 호스트 방화벽, 클라우드 방화벽, 라우터 NAT, VPN 정책 모두 의도한 소스 네트워크를 허용해야 합니다.
  • ID 계층: SSH 키, 인증서 또는 하드웨어 지원 키를 선호합니다. 광범위한 비밀번호 접근을 피하세요.
  • 감사 계층: 성공적인 로그인, 실패한 시도, 소스 IP, 사용자 변경, sudo 이벤트 및 키 순환을 캡처합니다.

SSH 연결을 테스트하는 방법

공개 호스트 이름이나 IP 주소 및 포트 22에 대해 외부 포트 검사로 시작합니다. 결과가 열려 있으면 SSH에 대한 TCP 경로에 연결할 수 있습니다. 그런 다음 ssh user@example.com 또는 ssh -vvv user@example.com을 실행하여 호스트 키, 인증 방법 및 세션 설정을 확인합니다.

서버에서 ss -tlnp, netstat 또는 PowerShell을 사용하여 리스너를 확인합니다. 클라우드 서버가 포함된 경우 호스트 방화벽 규칙을 클라우드 보안 그룹과 비교하십시오. 왜냐하면 다른 계층이 올바르다고 보이더라도 두 계층 중 하나가 SSH를 차단할 수 있기 때문입니다.

SSH용 테스트 포트 22

일반적인 SSH 문제 해결 사례

포트 22가 닫히면 sshd가 중지되거나, 다른 포트에 설치되거나, 개인 인터페이스에만 바인딩되거나, 호스트 방화벽에 의해 차단될 수 있습니다. 확인 시간이 초과되면 클라우드 보안 그룹, 라우터 NAT 규칙, ISP 필터, VPN 정책 또는 소스 IP 허용 목록에 의해 패킷이 삭제될 수 있습니다.

포트가 열려 있지만 로그인에 실패한 경우 사용자 이름, 키 권한, Authorized_keys 파일, 비밀번호 정책, MFA 요구 사항, AllowUsers 또는 DenyUsers 규칙, 루트 로그인 설정 및 서버 로그를 검사합니다. 많은 SSH 실패는 포트 문제가 아닌 인증 문제입니다.

SSH 보안 체크리스트

루트 로그인을 비활성화하고, 비밀번호보다 키나 인증서를 선호하고, 키를 순환하고, 오래된 계정을 제거하고, 연결할 수 있는 사람을 제한합니다. 권한 있는 액세스를 위해 MFA 또는 하드웨어 지원 키를 사용하고 개인 키가 암호 문구 또는 보안 하드웨어 저장소로 보호되는지 확인하세요.

소스 허용 목록, 배스천 호스트, VPN, 속도 제한, 침입 탐지 및 적시 OpenSSH 패치를 통해 공격 표면을 줄입니다. SSH를 비표준 포트로 이동하면 잡음이 많은 스캔을 줄일 수 있지만 보안 제어가 아닌 잡음 감소로만 처리해야 합니다.

자주 묻는 질문

SSH는 어떤 포트를 사용하나요?

SSH는 기본적으로 TCP 포트 22를 사용합니다. 서버가 그런 식으로 구성되어 있고 클라이언트가 사용자 정의 포트를 지정하는 경우 다른 포트에서 실행될 수 있습니다.

22번 포트를 열어도 안전합니까?

의도적으로 접근을 강화하면 안전할 수 있습니다. 키나 인증서를 사용하고, 루트 로그인을 비활성화하고, 소스 네트워크를 제한하고, 실패한 시도를 모니터링하고, SSH 서버를 패치된 상태로 유지하세요.

포트 22가 열려 있는데 SSH 로그인이 실패하는 이유는 무엇입니까?

인증이 실패하더라도 TCP 포트에 연결할 수 있습니다. 사용자 이름, 키 권한, Authorized_keys, MFA, 허용된 사용자 규칙, 셸 설정 및 SSH 서버 로그를 확인하세요.

SSH를 다른 포트로 바꿔야 하나요?

포트를 변경하면 자동 검색 노이즈를 줄일 수 있지만 강력한 인증, 액세스 제어, 로깅 및 패치를 대체할 수는 없습니다.