DAILY INSIGHT

9가지 SSH 보안 모범 사례

SecurityDesk
2026.06.12 03:01 조회 10

서론

SSH(Secure Shell)는 원격 서버 관리를 위한 핵심 프로토콜이지만, 잘못 구성된 경우 심각한 보안 위험을 초래할 수 있습니다. 무작위 대상 공격, 무차별 대입 공격, 권한 상승 등의 위협은 지속적으로 증가하고 있으며, 이러한 공격으로부터 시스템을 보호하기 위해서는 체계적인 보안 강화가 필요합니다.

본 가이드에서는 기업 환경에서 즉시 적용 가능한 9가지 SSH 보안 모범 사례를 다룹니다. 인증 체계부터 설정 최적화, 모니터링까지 포괄적인 접근 방식을 통해 서버 보안 수준을 획기적으로 높일 수 있습니다.

본론

1. 키 기반 인증으로 전환

비밀번호 기반 인증은 무차별 대입 공격에 취약합니다. 키 기반 인증은 암호화된 키 쌍을 사용하므로 비밀번호보다 훨씬 안전합니다.

실무적 적용:

  • RSA 4096비트 또는 Ed25519 키 사용
  • 키 생성 시 강력한 암호구(passphrase) 설정
  • 공개키를 ~/.ssh/authorized_keys에 등록
# Ed25519 키 생성 (권장)
ssh-keygen -t ed25519 -C "admin@company.com"

# RSA 4096비트 키 생성
ssh-keygen -t rsa -b 4096 -C "admin@company.com"

엔터프라이즈 제약:

  • 기존 비밀번호 사용자는 키 기반으로 단계적 마이그레이션
  • 사용자별 개별 키 관리 필요
  • 키 순환(key rotation) 정책 수립

2. 비밀번호 인증 완전 비활성화

키 기반 인증으로 전환한 후, 비밀번호 인증은 반드시 비활성화해야 합니다.

sshd_config 설정:

PasswordAuthentication no
ChallengeResponseAuthentication no

실무적 주의사항:

  • 키 기반 인증이 정상적으로 작동하는지 확인 후 비활성화
  • 비상용 접속 채널 확보 (예: 콘솔 접속)
  • 비밀번호 복구 절차 문서화

3. root 계정 직접 로그인 차단

root 계정의 직접 SSH 접속은 권한 상승 공격의 주요 진입점입니다.

sshd_config 설정:

PermitRootLogin no

대안:

  • 일반 사용자로 로그인 후 sudo 사용
  • 필요 시 PermitRootLogin prohibit-password 설정으로 키 기반 접속만 허용

4. 기본 포트 변경 (22번 포트)

공격자는 기본적으로 22번 포트를 스캔합니다. 포트 번호를 변경하면 자동화된 공격 도구의 탐지를 방지할 수 있습니다.

sshd_config 설정:

Port 22222

실무적 주의사항:

  • 방화벽 규칙 동시 업데이트
  • 포트 충돌 방지를 위해 잘 알려진 포트 사용 자제
  • 포트 변경 정보를 운영 팀에 공유

5. 2FA/MFA (2단계 인증) 적용

키 기반 인증에 2단계 인증을 추가하면 키가 노출되더라도 추가 보안 계층을 제공합니다.

Google Authenticator 설정 예시:

# 패키지 설치
apt-get install libpam-google-authenticator

# 사용자별 설정
google-authenticator

# PAM 설정
# /etc/pam.d/sshd 파일에 추가
auth required pam_google_authenticator.so

# sshd_config 설정
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive

엔터프라이즈 적용 시 고려사항:

  • 사용자 교육 및 가이드 제공
  • 복구 코드(backup codes) 안전 저장
  • 통합 MFA 솔루션(예: Duo Security, Okta) 고려

6. 불필요한 기능 비활성화

SSH는 다양한 인증 방법과 기능을 지원하지만, 불필요한 기능은 공격 표면을 넓힙니다.

sshd_config 설정:

# X11 포워딩 비활성화
X11Forwarding no

# 포트 포워딩 비활성화
AllowTcpForwarding no

# 터널링 비활성화
PermitTunnel no

# Agent 포워딩 비활성화
AllowAgentForwarding no

영향 분석:

  • X11 포워딩을 사용하는 애플리케이션 확인
  • 포트 포워딩 의존성 확인
  • 터널링 사용 여부 점검

7. 접속 제어 및 사용자 제한

특정 사용자, IP 주소, 또는 그룹만 SSH 접속을 허용하여 공격 표면을 최소화합니다.

sshd_config 설정:

# 특정 사용자만 허용
AllowUsers admin user1 user2

# 또는 특정 그룹만 허용
AllowGroup ssh-admins

# 특정 IP만 허용 (TCP Wrappers)
# /etc/hosts.allow
sshd: 192.168.1.0/24

# /etc/hosts.deny
sshd: ALL

엔터프라이즈 정책:

  • 최소 권한 원칙 적용
  • 정기적 접속 권한 검토
  • 퇴사자 계정 즉시 제거

8. 최신 암호화 알고리즘 사용

취약한 암호화 알고리즘은 중간자 공격(Man-in-the-Middle)에 취약합니다.

sshd_config 설정:

# 강력한 암호화 알고리즘 사용
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com

# 키 교환 알고리즘
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256

# MAC 알고리즘
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com

검증 방법:

# 현재 사용 중인 알고리즘 확인
ssh -vvv user@server 2>&1 | grep "kex\|cipher\|mac"

# 보안 취약점 스캔
nmap --script ssh2-enum-algos -p 22 server

9. 모니터링 및 감사 로그

SSH 접속 활동을 모니터링하고 비정상 접속을 탐지하여 신속한 대응이 가능하게 합니다.

로그 확인:

# 인증 실패 로그
grep "Failed password" /var/log/auth.log

# 성공적 로그인
grep "Accepted" /var/log/auth.log

# 위반 시도 탐지
grep -i "invalid\|failed" /var/log/auth.log | awk "{print \$1, \$2, \$3, \$9, \$11}" | sort | uniq -c | sort -nr

자동화된 경고 설정:

  • 동일 IP에서 5회 이상 실패 시 경고
  • 비정상적인 시간대 접속 탐지
  • 새로운 IP 접속 알림
  • root 계정 접속 시도 감지

SIEM 연동:

  • 로그를 중앙 로그 서버로 전송
  • 실시간 모니터링 대시보드 구축
  • 자동화된 인시던트 대응 워크플로우

결론

SSH 보안 강화는 단일 설정 변경이 아닌 다계층 접근이 필요합니다. 키 기반 인증, 2FA, 접속 제어, 모니터링을 조합하여 공격 표면을 최소화하고, 침해 발생 시 신속한 탐지와 대응이 가능하도록 구성해야 합니다.

특히 엔터프라이즈 환경에서는 보안과 운영 편의성의 균형을 고려해야 합니다. 모든 설정을 한 번에 변경하는 대신, 단계적으로 적용하고 각 단계에서 영향을 평가하여 서비스 중단 없이 보안 수준을 높이는 것이 중요합니다.

정기적인 보안 감사와 설정 검토를 통해 지속적으로 SSH 보안 상태를 점검하고, 새로운 위협에 대응하는 것이 필수적입니다.

대응 방안

위협 레벨 즉시 대응 단기 대응 장기 대응
Critical 키 기반 인증 활성화, 비밀번호 인증 비활성화, root 로그인 차단 2FA/MFA 적용, 포트 변경 모든 불필요한 기능 비활성화
High 최신 암호화 알고리즘 적용 접속 제어 정책 수립 SIEM 연동 및 자동화된 경고
Medium 로그 확인 프로세스 수립 모니터링 대시보드 구축 정기적 보안 감사
Low 보안 가이드라인 작성 사용자 교육 키 순환 정책 도입

참고자료


본 콘텐츠는 AI 기술로 생성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하시면 댓글을 통해 소중한 의견 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다

IT 도구 서랍

→ Unix: 2025-01-15T09:30:00
→ 날짜: 1736934600

→ ASCII: ABC
→ 문자: 65 66 67

ASCII 코드표 — 클릭하면 입력란에 추가

DecHex약어설명
DecHex문자
DecHex문자

→ 유니코드: 홍길동
→ 문자: \ud64d\uae38\ub3d9