SSH (Secure Shell)
SSH는 네트워크 상의 다른 컴퓨터에 안전하게 접속하기 위한 암호화 네트워크 프로토콜.
1995년 핀란드 헬싱키 공과대학의 타투 일로넨(Tatu Ylönen)이 개발했으며, 당시 빈번하게 발생하던 비밀번호 스니핑 공격에 대응하기 위해 만들어졌다.
기존의 텔넷(Telnet)이나 rsh(Remote Shell)와 같은 비보안 프로토콜을 대체하기 위해 설계되었다.
SSH의 주요 특징과 장점
SSH는 다음과 같은 중요한 특징을 가지고 있다:
- 강력한 암호화: 통신 내용을 암호화하여 데이터의 기밀성을 보장한다. 현재 SSH-2 버전에서는 AES, 3DES 등의 강력한 암호화 알고리즘을 사용한다.
- 인증 메커니즘: 서버와 클라이언트 간의 상호 인증을 제공한다. 비밀번호 기반 인증뿐만 아니라, 공개키 기반의 인증도 지원하여 보다 안전한 인증이 가능하다.
- 데이터 무결성: 통신 과정에서 데이터가 변조되지 않았음을 보장한다. MAC(Message Authentication Code)을 사용하여 데이터의 무결성을 검증한다.
- 포트 포워딩: 로컬 포트 포워딩과 리모트 포트 포워딩을 통해 다른 프로토콜의 트래픽도 SSH 터널을 통해 안전하게 전송할 수 있다.
SSH의 동작 방식
SSH의 동작 과정은 다음과 같은 단계로 이루어진다:
TCP 연결 수립
먼저 클라이언트와 서버 간에 TCP 연결이 수립된다.
기본적으로 22번 포트를 사용한다.프로토콜 버전 교환
클라이언트와 서버가 지원하는 SSH 프로토콜 버전을 교환한다.
현재는 대부분 SSH-2 버전을 사용한다.키 교환
서버와 클라이언트는 세션 키를 생성하기 위한 키 교환 과정을 수행한다.
Diffie-Hellman 키 교환 알고리즘이 주로 사용된다.인증
사용자 인증이 이루어진다.
다음과 같은 인증 방식이 지원된다:- 패스워드 인증
- 공개키 인증
- 키보드 인터랙티브 인증
- GSSAPI 인증
세션 설정
인증이 완료되면 암호화된 채널이 설정되고, 실제 데이터 통신이 시작된다.
SSH의 주요 용도와 활용
SSH는 다양한 목적으로 활용된다:
원격 시스템 관리:
- 서버 원격 접속 및 관리
- 시스템 설정 변경
- 소프트웨어 설치 및 업데이트
- 로그 확인
파일 전송:
- SFTP(SSH File Transfer Protocol)를 통한 안전한 파일 전송
- SCP(Secure Copy)를 이용한 파일 복사
터널링과 포트 포워딩:
- 다른 프로토콜의 암호화된 통신
- 방화벽 우회
- VPN 대체
자동화된 작업:
- 스크립트를 통한 자동화된 시스템 관리
- 배치 작업 실행
- 지속적 통합/배포(CI/CD) 파이프라인
SSH 보안 강화 방안
SSH를 더욱 안전하게 사용하기 위한 주요 보안 설정:
인증 관련:
- 공개키 인증 사용 권장
- 루트 로그인 비활성화
- 강력한 비밀번호 정책 적용
- 허용된 사용자만 접속 가능하도록 제한
설정 관련:
- 기본 포트 변경
- 프로토콜 버전 2만 허용
- 유휴 세션 타임아웃 설정
- 로그인 시도 제한
암호화 관련:
- 강력한 암호화 알고리즘 사용
- 취약한 암호화 알고리즘 비활성화
- 정기적인 키 교체
모니터링:
- 로그 모니터링 강화
- 비정상 접속 시도 감시
- 정기적인 보안 감사
최신 트렌드와 발전 방향
SSH는 계속해서 발전하고 있으며, 다음과 같은 트렌드가 있다:
- 양자 내성 암호화 알고리즘 도입 준비
- 클라우드 환경에서의 SSH 관리 자동화
- 제로 트러스트 아키텍처와의 통합
- 생체 인증 등 새로운 인증 방식 도입
- 컨테이너와 마이크로서비스 환경에서의 SSH 활용