SOFTMOA TECHNOLOGY

SSH 보안 강화와 터널링 고급 기법

소프트모아가 정리한 기술 기록입니다.

Contents
작성일 2026. 02. 11.

개요

SSH(Secure Shell)는 원격 서버 관리의 표준 프로토콜이지만, 기본 설정 그대로 사용하면 브루트포스 공격이나 키 탈취 등의 보안 위험에 노출됩니다. 또한 SSH 터널링은 VPN 없이도 안전한 네트워크 통신을 구현할 수 있는 강력한 기능이지만, 많은 엔지니어가 그 잠재력을 충분히 활용하지 못하고 있습니다. 이 글에서는 SSH 보안을 실질적으로 강화하는 설정과 함께, 로컬/리모트/다이나믹 포워딩의 실전 활용법을 다룹니다.

핵심 개념

Ed25519 키: RSA보다 짧은 키 길이로 동등 이상의 보안 강도를 제공합니다. 현재 SSH 키 생성의 권장 알고리즘입니다.

Certificate 기반 인증: 대규모 인프라에서는 개별 공개키 배포 대신 SSH CA(Certificate Authority)를 사용하면 키 관리가 간소화됩니다.

SSH 터널링 유형: 로컬 포워딩(-L)은 클라이언트의 포트를 원격 서비스에 연결하고, 리모트 포워딩(-R)은 서버의 포트를 클라이언트 쪽에 연결하며, 다이나믹 포워딩(-D)은 SOCKS 프록시를 생성합니다.

ProxyJump: 배스천 호스트(점프 서버)를 통한 다단계 접속을 간편하게 설정하는 기능으로, 기존 ProxyCommand보다 직관적입니다.

실전 예제: SSH 보안 설정

# Ed25519 키 생성 (비밀번호 보호)
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519

# SSH 에이전트에 키 등록 (macOS Keychain 연동)
ssh-add --apple-use-keychain ~/.ssh/id_ed25519

# 서버에 공개키 등록
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]

서버 측 sshd 보안 강화 설정입니다.

# /etc/ssh/sshd_config.d/hardening.conf
sudo tee /etc/ssh/sshd_config.d/hardening.conf <<EOF
# 비밀번호 인증 비활성화
PasswordAuthentication no
KbdInteractiveAuthentication no

# root 로그인 차단
PermitRootLogin no

# 키 알고리즘 제한
PubkeyAcceptedAlgorithms ssh-ed25519,[email protected]

# 세션 제한
MaxAuthTries 3
MaxSessions 5
LoginGraceTime 30

# 암호 스위트 강화
Ciphers [email protected],[email protected]
MACs [email protected],[email protected]
KexAlgorithms sshd-x25519-sha256,curve25519-sha256

# 유휴 세션 타임아웃 (5분)
ClientAliveInterval 300
ClientAliveCountMax 2
EOF

# 설정 검증 및 적용
sudo sshd -t && sudo systemctl reload sshd

SSH 터널링 실전 예제입니다.

# 로컬 포워딩: 원격 DB에 로컬처럼 접근
ssh -L 5432:db-internal:5432 [email protected]
# 이후 localhost:5432로 DB 접속 가능

# 리모트 포워딩: 로컬 개발 서버를 외부에 노출
ssh -R 8080:localhost:3000 [email protected]
# 외부에서 public-server.com:8080으로 접근 가능

# 다이나믹 포워딩 (SOCKS5 프록시)
ssh -D 1080 -N [email protected]
# 브라우저 SOCKS 프록시를 localhost:1080으로 설정

# ProxyJump로 배스천 경유 접속
ssh -J bastion.example.com internal-server.local

활용 팁

  • ~/.ssh/config 적극 활용: Host 별칭, ProxyJump, 포트 포워딩 등을 설정 파일에 미리 정의하면 매번 긴 명령을 입력할 필요가 없습니다.
  • FIDO2 키 지원: YubiKey 등 하드웨어 보안 키로 SSH 인증하면 키 파일 탈취 위험을 원천 차단할 수 있습니다. sk-ssh-ed25519 타입을 사용하세요.
  • fail2ban 연동: SSH 브루트포스 공격을 자동 차단합니다. maxretry=3, bantime=3600 설정을 권장합니다.
  • 포트 변경의 한계: SSH 포트를 22에서 변경하는 것은 자동 스캔을 줄이지만 실질적인 보안 강화는 아닙니다. 키 인증이 본질적인 방어입니다.
  • ControlMaster: 같은 서버로의 다중 연결 시 ControlMaster auto와 ControlPersist 600을 설정하면 연결 속도가 크게 향상됩니다.

마무리

SSH 보안은 키 기반 인증, 암호 스위트 제한, 세션 관리만으로도 대부분의 위협을 차단할 수 있습니다. 여기에 터널링을 활용하면 VPN 없이도 안전한 네트워크 접근이 가능하며, ProxyJump와 ControlMaster를 병행하면 복잡한 인프라 환경에서도 효율적인 서버 관리가 가능합니다.

Share this

OS

Have a questions?

견적 및 기술문의

mobile : 010-7931-4813

Contact Form