본문 바로가기
정보보호 (Security)

SSH는 가장 위험한 관리 채널 로그 분석과 이상행위 침해탐지 전략

by 날으는물고기 2026. 3. 20.

SSH는 가장 위험한 관리 채널 로그 분석과 이상행위 침해탐지 전략

728x90

SSH를 어떻게 봐야 하는가

SSH는 단순한 원격 접속 프로토콜이 아니라 다음 기능을 함께 포함합니다.

  1. 원격 쉘 접속
  2. 파일 전송(SCP/SFTP)
  3. 포트 포워딩(Local/Remote/Dynamic)
  4. 터널링
  5. 원격 명령 실행
  6. 인증 키 기반 자동화

즉, SSH는 편리하지만 동시에 다음 위험도 함께 가집니다.

  • 관리자 계정 탈취 시 곧바로 서버 장악 가능
  • 키 파일 유출 시 장기간 은닉된 접근 가능
  • 포트포워딩을 통한 내부망 우회 접속 가능
  • 점프서버, 배스천, 자동화 계정이 많을수록 추적이 어려워짐
300x250

그래서 SSH는 접속 허용 여부만이 아니라
누가, 언제, 어디서, 어떤 방식으로, 무엇을 위해, 어떤 명령과 터널을 사용했는지까지 관리해야 합니다.

SSH의 기본 동작 구조

SSH는 보통 다음 흐름으로 동작합니다.

  1. 클라이언트가 서버의 22/tcp 또는 지정 포트로 접속
  2. 서버가 호스트키로 자기 신원을 증명
  3. 클라이언트가 사용자 인증 수행
  4. 성공 시 세션 채널 생성
  5. 쉘, 명령 실행, SFTP, 포워딩 중 하나 또는 복수 기능 수행

주요 구성 요소

  • sshd: 서버 데몬
  • ssh: 클라이언트
  • known_hosts: 서버 호스트키 저장
  • authorized_keys: 허용된 공개키 저장
  • private key: 사용자 비밀키
  • config: 클라이언트/서버 설정 파일

SSH 사용 방식의 종류

암호 로그인

가장 단순하지만 운영 환경에서는 보통 비권장입니다.

장점
  • 사용이 쉬움
  • 초기 설정이 간단함
단점
  • 비밀번호 추측 공격에 취약
  • 피싱, 재사용, 크리덴셜 스터핑 위험
  • 계정 공유가 쉬워 감사성이 낮음
권장
  • 외부망, 운영망, 중요 서버는 비밀번호 로그인 비활성화 권장
  • 반드시 MFA 또는 키 기반 인증으로 전환

키 기반 로그인

운영환경에서 가장 많이 쓰는 방식입니다.

ssh-keygen -t ed25519 -C "admin@company"
ssh-copy-id user@server
장점
  • 비밀번호보다 강함
  • 자동화에 적합
  • 계정별, 용도별 분리가 쉬움
주의점
  • 개인키 유출 시 매우 위험
  • 패스프레이즈 없는 키는 특히 위험
  • 하나의 키를 여러 서버에서 재사용하면 추적 어려움
권장
  • ed25519 우선
  • 개인키는 패스프레이즈 설정
  • 사용자별, 서비스별 키 분리
  • 주기적 회전 및 철회 절차 마련

MFA / FIDO2 / 인증서 기반

고보안 환경에서는 권장되는 방식입니다.

형태
  • 비밀번호 + OTP
  • 키 + OTP
  • FIDO2 보안키
  • SSH Certificate Authority 기반 인증서
장점
  • 키 유출만으로는 부족
  • 계정 탈취 난이도 상승
  • 중앙 인증 정책 적용 가능

점프서버 / 배스천 기반

운영망에서는 거의 필수입니다.

개념
  • 외부에서 서버로 직접 접속하지 않고
  • 먼저 점프서버로 들어간 뒤
  • 내부 서버로 재접속
장점
  • 접속 경로 통제 가능
  • 감사 로그 집중 가능
  • 세션 녹화 적용이 쉬움
주의점
  • 점프서버가 단일 실패 지점이 될 수 있음
  • 점프서버 권한이 지나치게 강하면 내부망 전체 위험 증가

SSH 핵심 보안 정책

반드시 관리해야 할 항목입니다.

인증 정책

  • 비밀번호 로그인 제한 또는 금지
  • root 직접 로그인 금지
  • 개인별 계정 사용
  • 공유 계정 금지
  • 키 기반 로그인 우선
  • MFA 적용
  • 고위험 서버는 인증서 기반 또는 PAM 연동
예시
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication yes

접근 통제

  • 허용 IP 제한
  • VPN 또는 배스천 경유
  • 업무 시간 제한
  • 특권 계정 접근 승인 절차
  • 서버별 역할 기반 권한 분리
예시
AllowUsers alice bob
AllowGroups ssh-admins

또는 방화벽에서

iptables -A INPUT -p tcp --dport 22 -s 10.10.10.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

세션 통제

  • idle timeout 설정
  • 세션 유지시간 제한
  • PTY 제한
  • 포트포워딩 제한
  • X11 forwarding 비활성화
  • 필요 시 특정 계정에만 허용
예시
ClientAliveInterval 300
ClientAliveCountMax 2
X11Forwarding no
AllowTcpForwarding no
PermitTunnel no

명령 및 기능 제한

일부 계정은 쉘 접근이 아니라 SFTP 또는 특정 명령만 허용해야 합니다.

예시
ForceCommand internal-sftp

또는 authorized_keys에서 제한

command="/usr/local/bin/backup-script",no-port-forwarding,no-agent-forwarding,no-pty ssh-ed25519 AAAA...

이렇게 하면 특정 키는 정해진 명령만 실행하게 만들 수 있습니다.

SSH 로그는 어디서 나오는가

SSH 관련 로그는 하나만 보지 말고 여러 층으로 보아야 합니다.

sshd 로그

가장 기본입니다.

Linux 예시
  • Debian/Ubuntu: /var/log/auth.log
  • RHEL/CentOS/Rocky: /var/log/secure
  • systemd 환경: journalctl -u sshd

주요 이벤트

  • 로그인 성공
  • 로그인 실패
  • 키 인증 성공/실패
  • root 로그인 시도
  • 포워딩 요청
  • 세션 종료
  • 연결 끊김
  • 재키잉(rekey)
  • 인증서 만료
예시
journalctl -u sshd --since "today"
grep "Failed password" /var/log/auth.log
grep "Accepted publickey" /var/log/auth.log

PAM 로그

PAM을 사용하는 경우 MFA, 계정 정책, 세션 제어가 기록됩니다.

확인 포인트
  • 계정 잠금
  • 2차 인증 실패
  • 접근 정책 위반
  • 세션 오픈/클로즈

auditd / Linux Audit 로그

SSH 자체가 아니라 SSH 후 수행된 명령과 파일 변경 추적에 중요합니다.

추적 대상
  • sudo 사용
  • 쉘 실행
  • 계정 생성/변경
  • 키 파일 변경
  • SSH 설정 변경
  • 특정 디렉터리 접근
auditctl -w /etc/ssh/sshd_config -p wa -k sshd_config_change
auditctl -w /home -p wa -k home_changes
auditctl -w /root/.ssh -p wa -k root_ssh

EDR / XDR 로그

EDR이 있으면 SSH 접속 자체보다 접속 이후 행위를 보는 것이 중요합니다.

예시 탐지 대상
  • bash, zsh, sh 실행
  • curl/wget/nc/socat 사용
  • 비정상 파일 전송
  • 권한 상승
  • 크리덴셜 덤프 시도
  • 백도어 설치
  • 비정상 장기 세션

네트워크 로그

방화벽, NDR, NetFlow, 프록시, IDS/IPS에서 다음을 봅니다.

  • 22/tcp 접속량 증가
  • 해외 IP에서 관리자 서버 접속
  • 특정 시간대 대량 로그인 실패
  • 다수 서버로의 순차 접속
  • 비표준 포트 사용
  • SSH 터널로 인한 내부 서비스 접근

SSH 로그에서 꼭 봐야 할 핵심 필드

실제로 운영할 때는 아래 항목을 묶어 봐야 합니다.

  1. 시각
  2. 소스 IP
  3. 목적 서버
  4. 사용자명
  5. 인증 방식
  6. 성공/실패
  7. 세션 ID
  8. 포트포워딩 여부
  9. 접속 지속 시간
  10. 세션 중 sudo 사용 여부
  11. 파일 전송 여부
  12. 명령 실행 여부
자주 보는 로그 예시
Accepted publickey for admin from 10.0.1.23 port 54211 ssh2: ED25519 SHA256:...
Failed publickey for root from 203.0.113.10 port 60022 ssh2
Invalid user test from 198.51.100.15 port 44554
pam_unix(sshd:session): session opened for user admin by (uid=0)

SSH 모니터링 지표

보안 모니터링은 “이벤트”와 “지표”를 같이 봐야 합니다.

인증 관련 지표

  • 시간당 로그인 실패 수
  • 사용자별 실패 비율
  • IP별 실패 비율
  • root 로그인 시도 수
  • 키 인증 실패 수
  • MFA 실패 수

세션 관련 지표

  • 평균 세션 길이
  • 야간 접속 비율
  • 서버별 접속 빈도
  • 점프서버 경유율
  • 동시 접속 수
  • 포트포워딩 사용률

운영 보안 지표

  • 신규 SSH 키 등록 건수
  • 기존 키 삭제/교체 건수
  • sshd_config 변경 건수
  • root 직접 로그인 차단 여부
  • 허용되지 않은 계정의 SSH 접속 시도 수

SSH 이상행위 탐지 시나리오

아래는 실무에서 매우 중요한 탐지 포인트입니다.

무차별 대입 공격

특징
  • 같은 IP 또는 다수 IP에서 실패 반복
  • 짧은 시간에 많은 사용자명 시도
  • Invalid user가 자주 보임
탐지 예시
  • 5분 내 실패 10회 이상
  • 1개 IP에서 다수 사용자에 대해 실패
  • root 계정 실패 반복

계정 탈취 후 정상 로그인처럼 보이는 공격

특징
  • 성공 로그는 정상처럼 보임
  • 하지만 평소와 다른 시간, 다른 국가, 다른 서버, 다른 명령을 사용
  • 처음 보는 키 또는 새 IP 사용
탐지 포인트
  • 신규 호스트에서 첫 접속
  • 평소 사용하지 않는 시간대 접속
  • 지리적으로 비정상적인 접속
  • 같은 계정이 여러 서버에 급격히 확산

포트포워딩을 이용한 내부망 우회

특징
  • SSH 접속은 정상
  • 하지만 터널링으로 내부 DB, Redis, Kubernetes API 등에 접근
탐지 포인트
  • -L, -R, -D 사용 흔적
  • sshd 로그의 port forwarding request
  • 내부 서버로의 비정상 연결 증감
  • 비인가 포트로 접근하는 트래픽

키 유출 및 지속성 확보

특징
  • 공격자가 공개키를 authorized_keys에 추가
  • 백업용 계정에 키를 심음
  • 관리자가 모르는 새 키가 등록됨
탐지 포인트
  • .ssh/authorized_keys 변경
  • 새 키 등록 이후 외부 접속 성공
  • 장기간 접속 패턴 유지
  • 특정 키 fingerprint 반복 사용

root 직접 로그인

특징
  • 운영상 금지되어야 함
  • 직접 로그인은 사고 시 추적성이 나쁨
탐지 포인트
  • Accepted publickey for root
  • Accepted password for root
  • root 접속 횟수 증가

SSH 후 수상한 쉘 행위

특징
  • 접속 직후 curl, wget, nc, bash -c 실행
  • 의심스러운 바이너리 다운로드
  • cron/systemd/persistence 설정
  • /tmp, /dev/shm 활용
탐지 포인트
  • 명령행 감사
  • EDR 프로세스 트리
  • 파일 생성/권한변경
  • 외부 통신

탐지 규칙 예시

아래는 SIEM/EDR에서 활용할 수 있는 형태의 예시입니다.

실패 로그인 급증

로직
  • 동일 IP에서 5분간 실패 10회 이상
  • 또는 동일 계정에서 5분간 실패 5회 이상
의미
  • brute force, password spraying 가능성

root 로그인 성공

로직
  • Accepted * for root
  • 중요 서버에서 root 직접 로그인 발생 시 경보

신규 IP에서 관리자 계정 로그인

로직
  • 과거 30일 기준 처음 보는 IP
  • 평소 국가와 다른 지역
  • 야간 로그인

SSH 키 파일 변경

로직
  • /home/*/.ssh/authorized_keys 변경 감지
  • /root/.ssh/authorized_keys 변경 감지
  • 새 파일 생성, 권한 변경, 소유자 변경

비정상 포트포워딩

로직
  • 포트포워딩 요청 허용 서버 외에서 발생
  • -R reverse tunnel
  • dynamic SOCKS tunneling
  • 특정 사용자에게 허용되지 않은 forwarding

로그 분석 실무 예시

실패 로그인 확인

grep "Failed password" /var/log/auth.log | tail -n 50
grep "Invalid user" /var/log/auth.log | tail -n 50

성공 로그인 확인

grep "Accepted publickey" /var/log/auth.log | tail -n 50
grep "Accepted password" /var/log/auth.log | tail -n 50

root 로그인 확인

grep "for root" /var/log/auth.log

특정 IP 추적

grep "203.0.113.10" /var/log/auth.log

SSH 세션 관련 로그

journalctl -u sshd --since "2026-03-18" | less

SSH 접속 제어 예시 설정

운영에서 자주 쓰는 sshd_config 예시입니다.

Port 22
Protocol 2

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication yes

AllowUsers alice bob
AllowGroups ssh-admins

X11Forwarding no
AllowTcpForwarding no
PermitTunnel no
GatewayPorts no

ClientAliveInterval 300
ClientAliveCountMax 2

LogLevel VERBOSE
설명
  • PermitRootLogin no: root 직접 로그인 차단
  • PasswordAuthentication no: 비밀번호 로그인 차단
  • LogLevel VERBOSE: 키 fingerprint 등 더 자세히 로깅
  • AllowTcpForwarding no: 터널링 제한
  • ClientAlive*: 유휴 세션 정리

SSH 클라이언트 측 운영 예시

관리자 단말에서도 표준화가 필요합니다.

~/.ssh/config 예시

Host bastion
    HostName bastion.example.com
    User admin
    IdentityFile ~/.ssh/id_ed25519_admin
    ServerAliveInterval 60

Host internal-*
    User admin
    ProxyJump bastion
    IdentityFile ~/.ssh/id_ed25519_admin
장점
  • 점프서버 경유가 표준화됨
  • 실수로 직접 접속하는 것을 줄임
  • 운영 일관성 확보

접속 기록 남기기

운영자가 직접 로컬에서 어떤 서버에 접속했는지도 남겨야 합니다.

script -a ~/ssh-session.log
ssh internal-db-01

또는 tmux, tlog, audit 연동을 고려할 수 있습니다.

중앙 모니터링 아키텍처

실무에서는 보통 아래 구조가 좋습니다.

수집 계층

  • 서버: sshd 로그
  • OS 감사: auditd
  • 네트워크: 방화벽/NetFlow/NDR
  • EDR: 프로세스/파일/행위
  • 점프서버: 세션 녹화
  • PAM/IdP: 인증 이력

집계 계층

  • syslog
  • Fluent Bit / Filebeat
  • Kafka
  • SIEM(Elastic, Splunk, Chronicle 등)

분석 계층

  • 룰 기반 탐지
  • UEBA
  • 기준선 비교
  • 위험도 스코어링

대응 계층

  • Slack/메일 알림
  • 계정 잠금
  • IP 차단
  • 세션 종료
  • 키 폐기
  • 티켓 자동 생성

운영 점검 체크리스트

아래는 SSH 보안점검 때 자주 보는 항목입니다.

기본

  • root 직접 로그인 금지 여부
  • 비밀번호 로그인 비활성화 여부
  • 강한 키 알고리즘 사용 여부
  • 오래된 키/약한 키 제거 여부
  • 포트포워딩 허용 정책 명확성
  • 점프서버 경유 여부

계정

  • 공유 계정 존재 여부
  • 퇴사자 계정 회수 여부
  • 서비스 계정의 SSH 사용 필요성 검토
  • 특권 계정 MFA 적용 여부

로그

  • 성공/실패 로그 모두 수집되는지
  • 키 fingerprint가 남는지
  • 로그 보존 기간이 충분한지
  • 중앙 SIEM으로 연동되는지
  • 시간 동기화(NTP)가 맞는지

모니터링

  • brute force 탐지
  • root 로그인 탐지
  • 신규 IP 접속 탐지
  • authorized_keys 변경 탐지
  • 비인가 포워딩 탐지
  • 장시간 세션 탐지

대응

  • 계정 잠금 절차
  • 키 폐기 절차
  • 서버 격리 절차
  • 세션 강제 종료 절차
  • 감사 증적 보존 절차

사고 대응 관점의 SSH 조사 방법

침해사고가 의심되면 다음 순서로 보면 좋습니다.

1단계: 접속 이력 확인

  • 어떤 계정이 언제 접속했는가
  • 어떤 IP에서 접속했는가
  • 어떤 인증 방식이었는가

2단계: 세션 이후 행위 확인

  • sudo 사용 여부
  • 파일 생성/변경 여부
  • 다운로드/실행 여부
  • 계정 추가 여부
  • 키 추가 여부

3단계: 지속성 확인

  • authorized_keys 수정
  • cron, systemd, rc.local 변경
  • 새 사용자 생성
  • 백도어 계정 생성

4단계: 횡적 이동 확인

  • 같은 계정으로 다른 서버 접속
  • 점프서버를 통한 확산
  • 내부망 포트포워딩 흔적

5단계: 차단

  • 계정 비활성화
  • 키 철회
  • IP 차단
  • 세션 종료
  • 서버 격리

실무에서 자주 놓치는 부분

SSH 자체만 보고 끝내는 것

SSH 성공 로그만 보면 부족합니다.
접속 이후 명령, 파일, 권한 변화까지 봐야 합니다.

shared account 사용

공유 계정은 추적성을 무너뜨립니다.
반드시 개인 계정과 sudo 위임으로 바꿔야 합니다.

키 회전 미흡

오래된 키가 남아 있으면 퇴사자/외주자 계정이 살아 있을 수 있습니다.

점프서버 미감사

점프서버가 있으면 안전할 것 같지만,
실제로는 점프서버가 가장 중요한 감시 포인트입니다.

포워딩 과소평가

SSH는 원격 쉘만이 아닙니다.
-L, -R, -D는 사실상 내부망 우회 채널이 될 수 있습니다.

보안용 권장 표준

아래처럼 운영 표준을 두면 관리가 쉬워집니다.

필수 표준

  1. 개인별 계정 사용
  2. root 직접 로그인 금지
  3. 비밀번호 로그인 제한
  4. 키 기반 + MFA 우선
  5. 점프서버 통해서만 운영망 접근
  6. 세션 로그 중앙 수집
  7. 명령/파일 변경 추적
  8. 포워딩 통제
  9. 키 정기 회전
  10. 비정상 접속 알림 자동화

간단한 예시 운영 시나리오

시나리오 A: 운영자가 서버에 접속

  1. VPN 접속
  2. 배스천 로그인
  3. 내부 서버로 ProxyJump 접속
  4. sudo 승인 후 작업
  5. 세션 로그와 audit 로그 중앙 저장
  6. 작업 종료 후 세션 자동 종료

시나리오 B: 의심스러운 외부 접속

  1. SIEM에서 신규 IP 접속 알림
  2. root 또는 관리자 계정 여부 확인
  3. 실패/성공 이력과 직전 명령 확인
  4. 포워딩 여부 점검
  5. 필요 시 계정/키 비활성화
  6. 서버 격리 및 포렌식 착수

현업에서 바로 쓰는 핵심 요약

운영

  • SSH는 편의 기능이 아니라 특권 접근 통로
  • 개인 계정, 키 기반, MFA, 점프서버가 기본
  • 포워딩과 root 로그인은 강하게 통제

탐지

  • 실패 로그인 폭증
  • 신규 IP/국가/시간대 접속
  • root 로그인
  • authorized_keys 변경
  • 포워딩 사용
  • SSH 이후 비정상 쉘 행위

로그

  • sshd 로그만 보지 말고 auditd, PAM, EDR, 네트워크 로그를 함께 봐야 함
  • 세션 시작/종료뿐 아니라 세션 중 행위가 중요

대응

  • 계정 잠금
  • 키 폐기
  • 세션 종료
  • IP 차단
  • 서버 격리
  • 포렌식 보존
728x90
그리드형(광고전용)

댓글