본문 바로가기
카테고리 없음

SSH 보안 강화 및 Key 기반 접속 설정 완전 가이드

by Hoft 2026. 2. 13.
728x90
반응형

홈서버나 리눅스 서버를 외부에 공개한다면
가장 먼저 해야 할 작업은 SSH 보안 강화입니다.

비밀번호 로그인 상태로 포트만 열어두면
몇 분 안에 무차별 공격이 들어옵니다.

이번 글에서는:

  1. SSH 키 생성
  2. 공개키 등록
  3. 비밀번호 로그인 차단
  4. 포트 변경
  5. 보안 점검 방법

까지 운영 가능한 수준으로 정리합니다.


1️⃣ SSH 공격이 발생하는 이유

포트 22를 열어두면 전 세계 봇이 다음을 시도합니다:

  • root 계정 로그인
  • admin / test / user 계정 무차별 대입
  • 사전 대입 공격(Dictionary Attack)

로그를 보면 수만 건 시도됩니다.

따라서 반드시:

  • 비밀번호 로그인 차단
  • Key 기반 인증만 허용

으로 전환해야 합니다.


2️⃣ SSH Key 생성 (Mac 기준)

🔹 Mac 터미널에서 실행

ssh-keygen -t ed25519 -C "myserver-key"

설명:

옵션 의미
ed25519 현재 가장 안전한 알고리즘
-C 키 식별용 코멘트

저장 위치

기본값 엔터:

/Users/사용자/.ssh/id_ed25519

패스프레이즈는 설정 권장 (추가 보안)


생성 결과

~/.ssh/id_ed25519        ← 개인키 (절대 유출 금지)
~/.ssh/id_ed25519.pub    ← 공개키 (서버에 등록)

3️⃣ 서버에 공개키 등록

🔹 방법 1 (가장 쉬운 방법)

ssh-copy-id 사용자명@서버IP -p 포트번호

예:

ssh-copy-id gamto@192.168.0.10 -p 10022

🔹 방법 2 (수동 등록)

공개키 내용 확인:

cat ~/.ssh/id_ed25519.pub

출력된 한 줄을 복사

서버에서:

mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys

붙여넣기

권한 설정 (매우 중요):

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

4️⃣ SSH 설정 변경 (보안 강화 핵심)

설정 파일 수정

sudo nano /etc/ssh/sshd_config

아래 항목 수정


🔐 1) 비밀번호 로그인 차단

PasswordAuthentication no

🔐 2) 루트 로그인 차단

PermitRootLogin no

🔐 3) SSH 포트 변경 (선택사항)

기본 22 → 예: 10022

Port 10022

🔐 4) 공개키 인증만 허용 확인

PubkeyAuthentication yes

설정 저장 후 재시작

sudo systemctl restart ssh

또는

sudo systemctl restart sshd

⚠️ 매우 중요

재시작 전에 새 터미널에서 Key 로그인 테스트하세요.

기존 세션은 닫지 마세요.


5️⃣ Key 방식으로 접속하기

ssh 사용자명@서버IP -p 10022

특정 키 지정 시:

ssh -i ~/.ssh/id_ed25519 사용자명@서버IP -p 10022

6️⃣ 접속 확인 방법

비밀번호 입력을 요구하지 않으면 성공

로그 확인:

sudo journalctl -u ssh -n 50

7️⃣ 추가 보안 (Fail2ban)

설치:

sudo apt install fail2ban

상태 확인:

sudo fail2ban-client status sshd

자동으로 공격 IP 차단됩니다.


8️⃣ 보안 점검 체크리스트

항목 상태
PasswordAuthentication no
PermitRootLogin no
Key 로그인 정상 동작
포트 변경 선택
Fail2ban 활성화 권장

9️⃣ 포트 변경은 꼭 해야 할까?

보안 수준 비교:

설정 보안 수준
비밀번호 로그인 ❌ 매우 위험
Key 로그인 ✅ 충분히 안전
Key + 포트 변경 ✅ 추가 보안

실제로는:

Key 로그인만 제대로 설정해도 매우 안전합니다.


🔎 실제 공격 로그 예시

Failed password for root from 45.x.x.x port 52411

Key 기반으로 전환하면:

Failed publickey for root

→ 비밀번호 공격 자체가 불가능


🔥 최종 권장 구조

SSH 포트 변경
+ Key 로그인만 허용
+ root 로그인 금지
+ fail2ban

이 상태면 가정용 서버 운영에 충분히 안전합니다.


🎯 마무리

SSH는 서버 보안의 첫 관문입니다.

비밀번호 로그인 상태로 서버를 외부에 공개하는 것은
집 문을 열어두는 것과 같습니다.

Key 기반 인증으로 전환하면
무차별 공격은 거의 의미를 잃습니다.


 

728x90
반응형

댓글