우분투 SSH 보안 설정과 접속 진단이 중요한 이유
우분투 서버를 클라우드나 원격 환경에 구축한 뒤 가장 먼저 마주하는 서비스는 단연 SSH(Secure Shell)입니다. 원격지에서 안전하게 서버를 관리하기 위한 필수 도구이지만, 기본 설정 상태 그대로 운영하면 무차별 대입 공격(Brute-force attack)이나 무단 접근 시도의 표적이 되기 쉽습니다. 이번 글에서는 초보자도 쉽게 따라 할 수 있는 기본적인 SSH 보안 강화 조치와, 접속에 실패했을 때 원인을 침착하게 진단하는 절차를 살펴봅니다.
사전 준비 사항
SSH 설정을 변경하기 전에는 반드시 다음 사항을 확인해야 합니다.
- sudo 권한이 있는 일반 사용자 계정이 준비되어 있어야 합니다.
- 설정 오류로 인해 원격 접속이 끊어질 경우를 대비해, 클라우드 제공업체가 제공하는 콘솔(웹 기반 터미널) 접근 권한이 살아있는지 확인합니다.
- 현재 사용 중인 SSH 설정 파일의 원본을 백업할 준비를 합니다.
안전한 SSH 기본 보안 설정 절차
SSH 데몬 설정 파일은 /etc/ssh/sshd_config 경로에 위치합니다. 설정을 변경하기 전에는 반드시 백업 파일을 생성해야 합니다.
1. 설정 파일 백업
다음 명령어로 원본 설정 파일의 복사본을 만들어 둡니다.
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
2. 루트(Root) 직접 로그인 차단
최고 관리자 계정인 root로 직접 원격 접속하는 것은 보안상 매우 위험합니다. 일반 계정으로 로그인한 뒤 sudo 명령어를 사용하는 방식을 권장합니다. 설정 파일에서 다음 항목을 수정합니다.
PermitRootLogin no
3. 포트 번호 변경 (선택 사항)
기본 포트인 22번은 자동화된 스캔 봇의 주요 공격 대상입니다. 포트를 변경하면 불필요한 로그 기록을 크게 줄일 수 있습니다.
Port 2222
포트를 변경할 경우, 우분투 방화벽(UFW)에서 해당 포트가 미리 열려 있어야 접속이 차단되지 않습니다.
4. 비밀번호 인증 강화 또는 공개키 인증 사용
가능하다면 비밀번호 대신 SSH 공개키(Public Key) 인증 방식을 사용하는 것이 가장 안전합니다. 비밀번호 인증을 유지해야 한다면 빈 비밀번호 접속은 반드시 차단해야 합니다.
PermitEmptyPasswords no
5. 설정 적용 및 문법 검증
설정을 변경한 후에는 문법에 오류가 없는지 검사하고 서비스를 재시작해야 합니다.
sudo sshd -t
sudo systemctl restart ssh
SSH 접속 문제 진단 순서
서버에 원격 접속이 되지 않을 때는 당황하지 말고 아래 순서대로 원인을 좁혀나갑니다.
- 네트워크 연결 확인: 로컬 PC에서 서버의 IP로 핑(Ping) 테스트나 네트워크 경로를 확인합니다.
- 방화벽 상태 점검: UFW나 클라우드 보안 그룹에서 SSH 포트(기본 22 또는 변경된 포트)가 허용되어 있는지 확인합니다.
- 서비스 상태 확인: 웹 콘솔 등을 통해 서버에 접속한 뒤 SSH 데몬이 정상 구동 중인지 확인합니다. (
sudo systemctl status ssh) - 로그 분석: 인증 실패나 설정 오류 기록을 살펴봅니다. (
sudo journalctl -u ssh)
초보자가 자주 하는 실수
SSH를 설정하고 운영할 때 다음 사항을 주의해야 합니다.
- 세션을 닫은 채로 테스트하기: 설정 파일을 수정하고 서비스를 재시작하기 전에, 현재 열려 있는 관리자 세션을 종료하면 안 됩니다. 반드시 새 터미널 창을 열어 정상 접속 여부를 확인한 뒤 기존 세션을 닫아야 합니다.
- 방화벽 설정 누락: 포트 번호를 변경하거나 방화벽을 강화하면서 UFW 설정을 갱신하지 않아 원격 접속이 영구히 차단되는 경우가 많습니다.
- 권한 설정 오류: 홈 디렉토리나
.ssh폴더, 그리고authorized_keys파일의 소유권이나 권한이 잘못되면 공개키 인증이 작동하지 않습니다.
안전한 SSH 운영 체크리스트
서버 보안을 점검할 때 아래 항목들을 차례대로 확인해 보세요.
- [ ]
/etc/ssh/sshd_config원본 백업이 완료되었는가? - [ ] 루트 계정의 원격 직접 로그인이 차단되어 있는가?
- [ ] 빈 비밀번호 로그인이 비활성화되어 있는가?
- [ ] 설정 변경 후
sshd -t명령어로 문법 오류를 검사했는가? - [ ] 기존 세션을 유지한 채 새 창에서 정상 접속 테스트를 마쳤는가?
- [ ] 방화벽(UFW)에 변경된 포트가 올바르게 등록되어 있는가?
마무리
SSH 보안 설정은 우분투 서버를 외부 위협으로부터 보호하는 가장 기본적인 방어선입니다. 복잡한 도구를 도입하기 전에 방화벽과 기본 설정 파일의 값만 올바르게 다듬어도 무단 접근 시도의 대부분을 예방할 수 있습니다. 변경 작업을 수행할 때는 항상 안전장치를 마련하고 단계별로 검증하는 습관을 기르는 것이 좋습니다.