리눅스에서 SSH 포트 변경하기
SSH를 통해 인터넷상에서 컴퓨터나 서버에 접속하는 사용자라면 꼭 알아두면 좋은 팁이 있습니다. 바로 SSH 포트를 기본값인 22에서 다른 포트로 변경하는 것입니다.
물론 이 방법만으로 서버가 완벽하게 보호되는 것은 아닙니다. 하지만 자동화된 무차별 대입(brute force) 공격의 대부분이 기본 포트 22를 대상으로 삼기 때문에, 포트를 변경하는 것만으로도 불필요한 공격 시도를 크게 줄일 수 있습니다.
이 글에서는 우분투(Ubuntu) 머신을 기준으로 단계별로 설명합니다.
⚠️ 주의: 이 변경 작업은 원격 SSH 연결 상태에서 진행하지 마세요. 설정 과정에서 실수하면 서버와의 접속을 완전히 잃을 수 있습니다. 가능하다면 콘솔이나 로컬 터미널에서 직접 작업하는 것이 안전합니다.
1단계: 현재 SSH 서비스 상태 및 포트 확인
먼저 SSH 서비스가 실행 중인지, 실행 중이라면 어떤 포트를 사용하고 있는지 확인합니다. 다음 명령어를 입력하세요.
# netstat -tulpn
출력 결과에 포트 22에 대한 항목이 보이면, 그것이 바로 SSH 서비스입니다.
2단계: SSH 설정 파일 수정
이제 실제 포트 변경 작업을 진행합니다. 텍스트 편집기로 SSH 데몬 설정 파일을 엽니다.
# sudo vim /etc/ssh/sshd_config
파일 초반 부분에 'Port 22'라고 적힌 줄이 있습니다. 숫자 22를 원하는 포트 번호로 변경합니다. 예를 들어 678로 바꾸려면 다음과 같이 입력합니다.
Port 678
포트 번호는 1024~65535 범위에서 다른 서비스와 충돌하지 않는 번호로 선택하는 것이 좋습니다. 수정 후에는 파일을 저장하고 종료합니다.
3단계: SSH 서비스 재시작
새로운 설정이 적용되도록 SSH 서버를 재시작해야 합니다. 다음 명령어를 실행하세요.
# sudo /etc/init.d/ssh restart
systemd 기반의 최신 배포판에서는 다음 명령어를 사용할 수도 있습니다.
# sudo systemctl restart ssh
4단계: 재시작 확인 및 방화벽 설정
SSH 서비스가 정상적으로 재시작되었는지 확인합니다. 앞서 사용한 netstat -tulpn 또는 ss -tulpn 명령어로 새 포트가 제대로 열려 있는지 점검하세요.
방화벽을 사용 중이라면 새로운 SSH 포트에 대한 접근을 반드시 허용해야 합니다. 예를 들어 UFW 방화벽에서는 다음과 같이 설정합니다.
# sudo ufw allow 678/tcp
방화벽 허용 없이 서비스를 재시작하면 접속이 차단될 수 있으니 순서에 유의하세요.
5단계: 새 포트로 접속하기
기존에는 # ssh user@servername.com처럼 포트를 명시하지 않고 서버에 접속했을 것입니다. SSH 클라이언트는 기본 포트로 22를 사용하도록 미리 설정되어 있어 포트를 따로 지정할 필요가 없었기 때문입니다.
하지만 포트를 변경한 이후에는 접속 시 지정한 포트를 옵션으로 알려줘야 합니다. 새 접속 명령어는 다음과 같은 형식이 됩니다.
# ssh -p 678 user@servername.com
마무리
기본 포트 변경은 거창한 보안 조치는 아니지만, 이런 사소한 설정 하나하나가 쌓여 리눅스 서버를 더욱 안전하게 지켜줍니다. 여기에 SSH 키 기반 인증이나 fail2ban 같은 도구를 함께 활용하면 한층 탄탄한 보안 체계를 구축할 수 있습니다.