Ubuntu를 처음 설치하면 SSH 서버가 자동으로 설치되어 있지 않습니다. 이 글에서는 그 이유와 함께, OpenSSH 서버 설치 및 구성, 설정 파일 백업 방법, 그리고 과거의 SSH 키 재사용 해킹 이슈를 방지하기 위한 안전한 키 관리 방법까지 단계별로 안내합니다.

 

1. Ubuntu에서 SSH 서버가 기본 설치되지 않는 이유
 - 보안 강화
  > SSH 서버는 원격 접속을 허용하는 서비스입니다. 설치 직후 자동으로 활성화되어 있으면, 네트워크에 연결된 모든 장치에서 접속 시도가 가능해져 불필요한 보안 위협(예: 무차별 대입 공격)에 노출될 수 있습니다. 이를 방지하기 위해 Ubuntu는 SSH 서버를 기본으로 설치하지 않습니다.
 - 필요한 사용자만 설치
  > 모든 사용자가 원격 접속 기능을 필요로 하는 것은 아니기 때문에, 필요할 때만 사용자가 직접 설치하도록 설계되어 있습니다.

 

2. OpenSSH 서버 설치 및 활성화
 - Step 1. 터미널 열기
  > 단축키: Ctrl + Alt + T
  > 또는 앱 메뉴에서 "Terminal" 검색 후 실행
 - Step 2. 패키지 목록 업데이트

$ sudo apt update

 

 - Step 3. OpenSSH 서버 설치

$ sudo apt install openssh-server

또는

$ sudo apt install ssh

 

 - Step 4. SSH 서비스 시작 및 자동 실행 설정

$ sudo systemctl start ssh
$ sudo systemctl enable ssh

 

  > 서비스 상태 확인:

$ sudo systemctl status ssh

 

  > Active: active (running)이 표시되면 정상 실행 중입니다.

 - Step 5. 방화벽(ufw) 설정 (선택 사항)

  > 방화벽을 사용 중이라면 SSH 포트(기본 22번)를 허용해야 합니다.

$ sudo ufw allow ssh
$ sudo ufw enable
$ sudo ufw status

 

  > 직접 포트를 변경했다면, 해당 포트 번호로 허용해야 합니다.

 

3. OpenSSH 설정 파일 백업 방법
 - 설정 변경 전에는 항상 백업을 권장합니다.
 - 설정 파일 백업

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
$ sudo chmod a-w /etc/ssh/sshd_config.factory-defaults

 

  > /etc/ssh/sshd_config.factory-defaults 파일은 읽기 전용으로 만들어 두면, 언제든지 원본 설정을 복원할 수 있습니다.

 - 복원 방법

$ sudo cp /etc/ssh/sshd_config.factory-defaults /etc/ssh/sshd_config
$ sudo systemctl restart ssh

 

4. OpenSSH 주요 보안 설정 및 구성 방법
 - 설정 파일을 편집하여 보안을 강화할 수 있습니다.
 - 설정 파일 열기

$ sudo vi /etc/ssh/sshd_config

 

 - 주요 설정 항목
  > 포트 변경 (예: 2222)

Port 2222

 

  > 루트 로그인 금지

PermitRootLogin no

 

  > 비밀번호 인증 비활성화 (키 인증만 허용)

PasswordAuthentication no

 

  > 인증 실패 횟수 제한

MaxAuthTries 3

 

  > 특정 사용자만 허용

AllowUsers username

 

  > 강력한 암호화 알고리즘 지정

Ciphers aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-512,hmac-sha2-256

 

 - 설정 적용

$ sudo systemctl restart ssh

 

5. SSH 키 관리 및 과거 해킹 이슈 방지 방법
 - 과거에 동일한 SSH 키 쌍이 여러 시스템에서 재사용되어 해킹되는 사례가 있었습니다. 이를 방지하려면 다음과 같은 방법을 적용해야 합니다.
 - 각 시스템마다 고유한 SSH 키 쌍 생성

$ ssh-keygen -t ed25519 -C "your_email@example.com"

(각 서버/사용자별로 별도의 키 쌍을 생성하고, 동일한 키를 여러 곳에 재사용하지 않습니다).

 

 - 키 주기적 교체(로테이션) 및 관리
  > 일정 주기로 SSH 키를 변경하고, 더 이상 사용하지 않는 키는 authorized_keys에서 삭제합니다.
  > 조직에서는 중앙 집중식 SSH 키 관리 솔루션을 사용하는 것이 좋습니다.
 - 키 백업 및 보안 저장
  > SSH 키(특히 private key)는 안전한 위치에 암호화하여 백업합니다.
  > 백업 파일 접근 권한을 제한하고, 필요시만 복원합니다.
 - 비밀번호 인증 비활성화
  > 키 인증만 허용하여 무차별 대입 공격 위험을 줄입니다.
 - 2단계 인증(2FA) 적용
  > Google Authenticator, Duo Security 등과 연동하여 추가 인증 절차를 적용합니다.

 

6. 자동화된 백업에 OpenSSH 활용
 - OpenSSH 키 인증을 활용하면 rsync, tar, dump 등과 연동해 안전하게 자동 백업을 할 수 있습니다. 예시:
 - 원격 서버에서 로컬로 백업:

$ ssh -t user@source.example.org 'sudo dump -0an -f - /var/www/ | gzip -c9' > backup.dump.gz

 

 - 로컬에서 원격으로 백업:

$ sudo dump -0an -f - /var/www/ | gzip -c9 | ssh user@target.example.org 'cat > backup.dump.gz'

(sudo 비밀번호 프롬프트가 보이지 않을 수 있으니 주의).

 

정리
Ubuntu는 보안을 위해 SSH 서버를 기본 설치하지 않습니다. OpenSSH 서버 설치 후에는 반드시 설정 파일을 백업하고, 포트 변경, 루트 로그인 금지, 키 인증 사용, 2FA 적용 등 다양한 보안 설정을 적용해야 합니다. 과거의 SSH 키 재사용 해킹 이슈를 방지하려면 각 시스템별로 고유한 키를 사용하고, 주기적으로 키를 교체하며, 키를 안전하게 백업·관리해야 합니다. OpenSSH의 키 인증 기능을 활용하면 안전하고 효율적으로 자동화된 백업도 구현할 수 있습니다

+ Recent posts