들어가며
우분투 서버를 구축한 후 외부에서 안전하게 원격 제어를 하기 위해 가장 먼저 다루어야 하는 도구가 바로 SSH(Secure Shell)입니다. 기본 상태의 SSH 설정은 편의성에 초점이 맞춰져 있어 무작위 대입 공격이나 무단 접근 시도에 노출될 위험이 큽니다. 이번 글에서는 초보 서버 관리자도 쉽게 따라 할 수 있는 기본적인 SSH 보안 강화 요령과, 접속 불가 상황이 발생했을 때 안전하게 원인을 진단하고 대처하는 절차를 살펴봅니다.
SSH 보안 강화를 위한 사전 점검 사항
설정 파일을 수정하기 전에 현재 서버의 SSH 서비스 상태를 확인하고, 접속 끊김에 대비해 관리자 계정 권한이 올바르게 작동하는지 점검해야 합니다. 설정 오류로 인해 접속이 차단되는 상황을 방지하기 위해, 원격 세션을 유지한 채 새로운 터미널 창을 열어 테스트 접속을 시도할 준비를 하는 것이 안전합니다.
- 현재 우분투 시스템의 SSH 패키지 및 서비스 상태 확인
- sudo 권한을 가진 일반 사용자 계정 존재 여부 재확인
- 방화벽(UFW)에서 SSH 포트(기본 22번 또는 변경된 포트) 허용 여부
안전한 SSH 기본 설정 변경 요령
SSH 설정 파일은 /etc/ssh/sshd_config 경로에 위치합니다. 파일을 수정하기 전 반드시 원본 파일을 백업해 두어야 문제 발생 시 즉시 복구할 수 있습니다.
1. 설정 파일 백업
설정 변경 작업 전 아래 명령어를 실행하여 원본 상태를 보존합니다.
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
2. 주요 보안 설정 항목 점검
편집기를 통해 /etc/ssh/sshd_config 파일을 열고 다음 항목들을 환경에 맞게 점검합니다.
- Port: 기본 22번 포트 대신 임의의 높은 포트로 변경하여 무작위 스캔 공격을 줄일 수 있습니다.
- PermitRootLogin: 루트(root) 계정의 직접 원격 로그인을 차단(
no또는prohibit-password)하여 보안성을 높입니다. - PasswordAuthentication: 비밀번호 대신 SSH 키 기반 인증을 사용한다면
no로 설정할 수 있으나, 초기에는 신중히 적용해야 합니다.
3. 설정 적용 및 검증
설정을 수정한 후에는 문법 오류가 없는지 검증하고 서비스를 재시작합니다.
sudo sshd -t
sudo systemctl restart ssh
SSH 원격 접속 문제 진단 순서
원격 접속이 갑자기 되지 않을 때는 감으로 대처하기보다 체계적인 순서로 로그와 네트워크 상태를 점검하는 것이 빠릅니다.
| 점검 단계 | 확인 내용 | 주요 명령어 |
|---|---|---|
| 1단계 | 서비스 실행 상태 확인 | sudo systemctl status ssh |
| 2단계 | 포트 리스닝 상태 확인 | sudo ss -tulpn | grep sshd |
| 3단계 | 방화벽 규칙 확인 | sudo ufw status |
| 4단계 | 인증 및 접속 실패 로그 확인 | sudo journalctl -u ssh -e |
실패 시 롤백 및 복구 방법
설정 변경 후 접속이 불가능해졌다면, 앞서 생성해 둔 백업 파일을 활용하여 원래 상태로 되돌릴 수 있습니다. 클라우드 호스팅 환경을 이용 중이라면 웹 콘솔이나 복구 콘솔(Serial Console)을 통해 서버에 직접 접속한 뒤 아래 작업을 수행합니다.
sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
sudo systemctl restart ssh
초보자가 자주 하는 실수
SSH 설정을 다룰 때 초보 관리자들이 흔히 겪는 시행착오를 정리했습니다.
- 현재 세션을 닫은 상태에서 설정 테스트하기: 설정을 바꾼 후 반드시 새로운 터미널 창을 열어 접속 테스트를 마친 뒤 기존 세션을 닫아야 합니다.
- 포트 변경 후 방화벽 미반영: SSH 포트를 22번에서 다른 번호로 바꾸고 UFW 방화벽에 새 포트를 허용하지 않아 접속이 차단되는 경우입니다.
- 백업 파일 미생성: 원본을 백업하지 않아 문법 오류 수정 시 원상복구가 어려워지는 상황입니다.
실전 점검 체크리스트
안전한 서버 운영을 마무리하기 위해 아래 항목을 최종 확인하세요.
- [ ] SSH 설정 파일 변경 전
sshd_config.bak백업 완료 - [ ] 루트 계정 직접 원격 로그인 차단 설정 적용
- [ ] 변경된 SSH 포트 번호에 맞춰 UFW 방화벽 규칙 갱신
- [ ] 설정 변경 후
sudo sshd -t명령어로 문법 검증 완료 - [ ] 새 터미널 창을 열어 정상 로그인 가능 여부 테스트 완료
- [ ]
journalctl명령어로 최근 인증 로그 점검
맺음말
SSH 보안 설정과 접속 장애 진단은 우분투 서버를 운영하는 동안 지속해서 마주하는 기본적이면서도 중요한 작업입니다. 설정을 변경할 때는 항상 백업과 검증 단계를 거치고, 문제가 발생했을 때는 시스템 로그를 차분히 살펴보는 습관을 통해 안정적인 서버 환경을 유지할 수 있습니다.