Linux 시스템 보안 기초 · 34/50편

이 글은 리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 시리즈를 선행 학습으로 두고, 동일한 개념을 보안관제(SOC) 관점에서 한 단계 확장합니다.

선행 학습

1. 들어가며

15편에서 SSH 키 관리를 봤다면, 이번 편은 공격자 관점에서 authorized_keys가 어떻게 '재부팅에도 살아남는 백도어'가 되는지, 그리고 이를 어떻게 탐지·차단하는지 집중적으로 봅니다.

2. 핵심 개념

SSH 키 지속성의 특징:

  • 은밀함: 로그에 정상 Accepted publickey로 남음
  • 영속성: 재부팅·비밀번호 변경과 무관하게 유효
  • 저비용: authorized_keys에 한 줄 추가면 끝

게다가 SSH는 authorized_keys에 강제 명령(command=) 이나 옵션을 넣을 수 있어, 접속 시 특정 명령을 자동 실행하는 형태의 지속성도 가능합니다.

정상 로그인 흐름과 구분이 안 됨

공격자 ── ssh -i stolen_or_own_key alice@server
                    │ authorized_keys에 공격자 공개키 존재
                    ▼
        Accepted publickey (정상 로그처럼 보임) → 재침입

3. 동작 원리

공격자가 한 번 권한을 얻으면, 자신의 공개키를 사용자·root의 ~/.ssh/authorized_keys에 추가합니다. 이후에는 비밀번호나 취약점 없이도 그 키로 언제든 로그인합니다. 로그에는 정상 공개키 인증으로 남아 무차별 대입 같은 시끄러운 흔적이 없습니다.

더 은밀한 변형: authorized_keys 줄 앞에 command="...", no-pty 등 옵션을 붙여, 접속 시 리버스 쉘을 자동 실행하거나 특정 동작만 하게 만들 수 있습니다. 그래서 키 '내용'뿐 아니라 '옵션'도 봐야 합니다.

4. 명령어 실습

# 모든 사용자의 authorized_keys 위치와 내용
sudo find /home /root -name authorized_keys 2>/dev/null \
  -exec sh -c 'echo "== $1 =="; cat "$1"' _ {} \;

# command= / 강제옵션이 붙은 키 (은밀한 실행 지속성)
sudo grep -rE 'command=|no-pty|permitopen' /home/*/.ssh/authorized_keys /root/.ssh/authorized_keys 2>/dev/null

# 키 지문 나열 후 기준선과 대조
for f in /home/*/.ssh/authorized_keys /root/.ssh/authorized_keys; do ssh-keygen -lf "$f" 2>/dev/null; done

5. 실행 결과

미등록 키 탐지 형식입니다. (예시 출력 — 백도어 키 주입 가정)

$ sudo cat /root/.ssh/authorized_keys
ssh-ed25519 AAAAC3Nz...admin  admin@ops        # 정상(관리 대장 존재)
ssh-rsa AAAAB3Nz...ZZZ        attacker@kali    # 미등록! 조사 대상

관리 대장에 없는 두 번째 키가 root 로그인을 허용하고 있습니다. 즉시 제거하고, 해당 키 지문·comment를 IOC로 등록한 뒤 유입 시점을 조사합니다.

6. 보안 관점 — 정상 사용 vs 악용

  • 정상: 관리 대장과 일치하는 키만, 불필요한 강제옵션 없음.
  • 악성 징후:
    • 미등록 공개키(특히 root)
    • command=로 접속 시 자동 실행
    • .ssh 디렉터리/키의 최근 변경

SSH 키 지속성은 무차별 대입보다 조용해, 정기적인 키 인벤토리 대조가 유일하게 확실한 탐지법입니다.

7. 탐지 방법

  • authorized_keys 키 지문 기준선 대조(핵심)
  • command=/강제옵션 검색
  • ~/.ssh/authorized_keys FIM 감시(15편)
  • .ssh 변경 시각 확인

8. SOC 관점 — SIEM · Wazuh · IOC

SSH 키 지속성은 MITRE T1098.004(SSH Authorized Keys)입니다. Wazuh FIM으로 모든 authorized_keys를 감시하면 키 추가를 실시간 탐지합니다. SIEM에서는 Accepted publickey의 fingerprint를 허용 목록과 대조해 '미등록 키 로그인'을 알람하고, 신규 지문을 IOC로 등록합니다.

9. 실습 체크리스트

[ ] 모든 authorized_keys 내용 확인
[ ] 키 지문 기준선 대조
[ ] command=/강제옵션 검색
[ ] authorized_keys FIM 설정

10. 핵심 정리

  • authorized_keys 키 추가는 조용하고 영속적인 백도어다.
  • 로그에 정상 publickey 인증으로 남아 은밀하다.
  • command= 옵션으로 접속 시 자동 실행도 가능하다.
  • 키 인벤토리 대조가 가장 확실한 탐지법이다.
  • T1098.004로, FIM+fingerprint 대조로 탐지한다.

11. 다음 편

다음 편에서는 35. Linux 백도어 탐지 기초 를 다룹니다. Part 4를 마무리하며, 지금까지의 지속성 벡터를 하나로 묶어 백도어 종합 점검을 합니다.


본 실습은 격리된 테스트 VM(Rocky Linux / Ubuntu, VMware) 및 테스트 계정 환경을 기준으로 하며, 운영 서버를 대상으로 하지 않습니다. 실행 결과는 실제 캡처와 예시 출력을 명확히 구분해 표기합니다.

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글