Linux(Ubuntu, CentOS) 서버를 개설하고 외부 IP에 노출시키면 몇 분 지나지 않아 수천 건의 무작위 대입 공격(Brute Force Attack) 패킷이 들어옵니다. 공격자들은 기본 포트인 22번과 최고 권한 계정인 root를 집중적으로 노립니다.
본 가이드에서는 서버 보안의 기본이자 필수 단계인 SSH 기본 포트 변경과 Root 직접 접속 차단 방법을 단계별로 정리합니다.
1. SSH 포트 변경 및 Root 차단이 필요한 이유
- 자동화 스캐너 회피: 인터넷 상의 자동화 공격 봇(Bot) 대부분은 22번 포트만 무작위 수집합니다. 포트 변경만으로도 공격 시도의 90% 이상을 사전 차단할 수 있습니다.
- 권한 탈취 방지:
root계정의 비밀번호가 유출되면 서버의 모든 제어권이 넘어가므로, 일반 사용자 계정으로 우선 접속 후sudo권한을 얻는 방식이 안전합니다.
2. 단계별 설정 및 적용 방법
[1단계] 새로운 일반 사용자 계정 생성 및 sudo 권한 부여
Root 접속을 차단하기 전에, 로그인할 일반 계정이 준비되어 있어야 합니다.
Bash
# 신규 사용자 생성 (예: devuser)
sudo adduser devuser
# sudo 권한 부여
# Ubuntu/Debian:
sudo usermod -aG sudo devuser
# CentOS/RHEL:
sudo usermod -aG wheel devuser
[2단계] SSH 설정 파일(/etc/ssh/sshd_config) 수정
nano 또는 vi 에디터로 SSH 설정 파일을 편집합니다.
Bash
sudo nano /etc/ssh/sshd_config
설정 파일 내부에서 다음 항목을 찾아 수정합니다.
Plaintext
# 1. 기본 22번 포트 대신 사용하지 않는 사용자 정의 포트 지정 (예: 22222)
Port 22222
# 2. Root 계정 직접 로그인 차단
PermitRootLogin no
[3단계] 방화벽 포트 미리 개방 (※ 매우 중요)
SSH 서비스를 재시작하기 전에 신규 지정한 포트(22222)를 방화벽에서 미리 허용하지 않으면 서버에서 영구 튕겨 나갈 수 있습니다.
Bash
# UFW (Ubuntu) 사용 시
sudo ufw allow 22222/tcp
sudo ufw reload
# firewalld (CentOS/RHEL) 사용 시
sudo firewall-cmd --permanent --zone=public --add-port=22222/tcp
sudo firewall-cmd --reload
(AWS/GCP 등 클라우드 사용 시 인바운드 규칙 22222 포트 개방 필수)
[4단계] SSH 서비스 재시작 및 테스트
기존 SSH 세션을 절대 끊지 않은 상태에서 새로운 터미널 창을 열어 신규 포트로 접속 테스트를 진행합니다.
Bash
# SSH 서비스 재시작
sudo systemctl restart ssh # CentOS는 sshd
# [새로운 터미널 창에서 접속 테스트]
ssh -p 22222 devuser@<서버_IP_주소>
정상 접속이 확인되면 기존 세션을 종료하셔도 됩니다.