들어가는 글
우분투 서버를 구축한 뒤 가장 먼저 마주하는 작업 중 하나는 원격 관리를 위한 SSH 접속 환경 조성입니다. 하지만 기본 설정 상태 그대로 운영하는 우분투 서버는 무작위 대입 공격(Brute-force attack)이나 무단 스캔의 표적이 되기 쉽습니다. 이번 글에서는 초보 운영자가 실수하기 쉬운 부분을 피하면서 우분투 SSH 보안을 안전하게 강화하는 방법과, 접속 불가 상황이 발생했을 때 차근차근 원인을 찾아내는 진단 요령을 살펴봅니다. 사전 준비부터 검증, 실수 방지 팁까지 실무에서 바로 활용할 수 있는 내용을 정리했습니다.
1. 사전 준비 및 현재 SSH 설정 확인하기
보안 설정을 변경하기 전에, 현재 우분투 서버에서 SSH 데몬(sshd)이 정상 작동하고 있는지, 설정 파일의 위치가 어디인지 확인해야 합니다. 설정 파일을 수정하다가 실수로 접속이 끊기는 상황을 방지하기 위해, 관리자 권한을 가진 터미널 창을 여러 개 열어둔 상태에서 작업을 진행하는 것이 안전합니다.
- SSH 서비스 상태 확인:
sudo systemctl status ssh - 설정 파일 경로:
/etc/ssh/sshd_config
설정 파일을 직접 편집하기 전에는 반드시 원본 백업본을 생성해야 합니다. 백업은 예기치 못한 문법 오류나 설정 누락 시 빠르게 원상 복구할 수 있는 가장 확실한 수단입니다.
2. 안전한 SSH 보안 기본 설정 적용 방법
우분투 서버의 SSH 보안을 높이기 위해 설정 파일(/etc/ssh/sshd_config)에서 주로 수정하는 항목과 의미는 다음과 같습니다. 텍스트 편집기(예: nano)를 이용해 설정 파일을 엽니다.
sudo nano /etc/ssh/sshd_config
- 루트 로그인 차단 (PermitRootLogin): 최고 권한 계정으로 직접 원격 접속하는 것을 막아줍니다. 설정을
no또는prohibit-password로 변경합니다. - 비밀번호 인증 제한 및 공개키 인증 활성화 (PasswordAuthentication): 무작위 대입 공격을 방어하기 위해 비밀번호 로그인을 끄고 SSH 키 기반 인증만 허용하는 것이 안전합니다. 단, 키 인증이 완벽히 구성된 것을 테스트한 후에 변경해야 합니다.
- 포트 번호 변경 (Port): 기본 포트인 22번 대신 다른 포트를 지정하면 무단 스캔 빈도를 낮출 수 있습니다. (예:
Port 2222)
3. 설정 변경 후 검증 및 방화벽 확인
설정 파일을 수정한 후에는 반드시 문법 오류가 없는지 검증한 뒤 서비스를 재시작해야 합니다. 문법 검증 명령어를 사용하면 설정 오류로 인해 원격 접속이 완전히 차단되는 대참사를 예방할 수 있습니다.
- 설정 파일 문법 검증:
sudo sshd -t - SSH 서비스 재시작:
sudo systemctl restart ssh
만약 포트 번호를 변경했다면 우분투 기본 방화벽(UFW)에서 해당 포트가 허용되어 있는지 반드시 확인해야 합니다. UFW를 갱신하지 않고 서비스를 재시작하면 다음 접속 시도부터 연결이 거부됩니다.
- 변경한 포트 방화벽 허용 예시:
sudo ufw allow 2222/tcp - 방화벽 상태 확인:
sudo ufw status
4. 원격 접속 장애 진단 순서
설정 변경 후 또는 네트워크 환경 변화로 인해 SSH 접속이 안 될 때는 감으로 해결하려 하지 말고 다음 순서에 따라 진단해야 합니다.
| 진단 단계 | 점검 내용 | 참고 명령어 |
|---|---|---|
| 1단계 | 로컬 네트워크 및 서버 전원 상태 | ping [서버 IP] |
| 2단계 | SSH 포트 리슨 여부 확인 | sudo ss -tuln | grep ssh |
| 3단계 | 우분투 시스템 로그 점검 | journalctl -u ssh -e |
| 4단계 | 클라이언트 상세 로그 확인 | ssh -v user@ip -p 포트 |
5. 초보자가 자주 하는 실수와 주의사항
SSH 설정을 다룰 때 초보 운영자가 흔히 저지르는 실수는 다음과 같습니다.
- 기존 연결을 유지한 채 테스트하지 않는 경우: 설정을 바꾼 뒤 현재 세션을 닫고 새 세션을 열어 테스트해야 합니다. 기존 세션만 믿고 로그아웃했다가 접속이 안 되면 복구가 까다로워집니다.
- 공개키 인증이 안 되었는데 비밀번호 로그인을 꺼버린 경우: SSH 키 쌍이 정상 등록되었는지 확인하기 전에
PasswordAuthentication no를 적용하면 영구적으로 로그인이 차단될 수 있습니다. - UFW 방화벽 규칙 누락: 포트를 변경하거나 방화벽을 활성화하면서 기존 SSH 포트나 새 포트를 열어두지 않아 접속이 막히는 경우입니다. 클라우드 서비스(AWS, GCP 등)를 사용 중이라면 외부 보안 그룹(Security Group) 설정도 함께 확인해야 합니다.
6. SSH 보안 및 접속 진단 체크리스트
작업을 마무리하기 전 아래 항목을 차례대로 점검해 보세요.
- [ ] 수정 전
/etc/ssh/sshd_config백업 파일을 생성했는가? - [ ]
sudo sshd -t명령어로 설정 파일 문법에 오류가 없는지 확인했는가? - [ ] 현재 열려 있는 터미널을 닫지 않은 상태에서 새 터미널로 접속 테스트를 마쳤는가?
- [ ] 변경된 포트 또는 방화벽 규칙(UFW 및 클라우드 보안 그룹)이 올바르게 적용되었는가?
- [ ] 루트 계정 직접 로그인이 차단되었거나 안전한 키 인증 방식으로 전환되었는가?
맺음말
우분투 서버의 SSH 보안 설정은 시스템을 외부 위협으로부터 지키는 가장 기본적인 방어선입니다. 무작정 설정을 바꾸기보다는 백업과 문법 검증, 그리고 변경 후 즉시 검증하는 습관을 들이는 것이 안전합니다. 접속 장애가 발생했을 때는 시스템 로그와 포트 상태를 차분히 확인하여 원인을 파악하면 큰 어려움 없이 해결할 수 있습니다.