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

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

선행 학습

1. 들어가며

키 인증은 무차별 대입을 막는 강력한 방법이지만, 키 관리가 허술하면 새로운 위험이 됩니다. 특히 authorized_keys는 공격자가 지속성을 심는 대표적 위치입니다. 이번 편은 키 파일들의 역할·권한·탈취 시나리오를 정리합니다.

2. 핵심 개념

관련 파일과 역할입니다.

파일위치역할
개인키~/.ssh/id_ed25519클라이언트가 서명. 절대 유출 금지
공개키~/.ssh/id_ed25519.pub서버에 등록되는 값
authorized_keys서버 ~/.ssh/로그인 허용할 공개키 목록
known_hosts클라이언트 ~/.ssh/접속한 서버 지문 기록(MITM 탐지)

권한이 틀리면 sshd가 키를 거부합니다: ~/.ssh는 700, 키 파일은 600이 원칙입니다.

정상 등록                          공격자 지속성
authorized_keys:                   authorized_keys:
  ssh-ed25519 AAA... alice           ssh-ed25519 AAA... alice
                                     ssh-ed25519 ZZZ... attacker  ← 몰래 추가
                                        │
                                        └ 비밀번호 없이 언제든 재침입

3. 동작 원리

공격자가 서버 권한을 얻으면, 자신의 공개키를 사용자 authorized_keys에 한 줄 추가합니다. 그러면 비밀번호를 몰라도, 무차별 대입 없이도 언제든 그 계정으로 로그인할 수 있습니다. 로그에는 정상적인 Accepted publickey로 남기 때문에 매우 은밀합니다(34편에서 지속성 관점 심화).

개인키 탈취도 치명적입니다. 패스프레이즈가 없는 개인키가 유출되면 즉시 해당 계정 권한이 넘어갑니다. 그래서 개인키에는 패스프레이즈를, 서버에는 authorized_keys 무결성 감시를 둡니다.

4. 명령어 실습

# .ssh 및 키 파일 권한 점검
ls -la ~/.ssh

# 등록된 공개키 목록과 지문
ssh-keygen -lf ~/.ssh/authorized_keys 2>/dev/null

# 모든 사용자의 authorized_keys 위치 나열 (관리자)
sudo find /home /root -name authorized_keys -exec ls -l {} \;

5. 실행 결과

실습 환경에서 키 지문 조회 예입니다. (예시 출력 — authorized_keys 등록 시)

$ ssh-keygen -lf ~/.ssh/authorized_keys
256 SHA256:aB3d... alice@lab (ED25519)

여기에 관리자가 등록한 적 없는 지문(다른 comment/키)이 나오면 곧바로 조사 대상입니다. 정상 지문 목록을 기준선으로 저장해 두면, 추가된 키를 즉시 식별할 수 있습니다.

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

  • 정상: ~/.ssh 700, 키 600, 등록 키는 관리 대장과 일치.
  • 악용 징후:
    • authorized_keys에 미등록 공개키 → 지속성 백도어
    • 키/디렉터리 권한이 과도하게 열림
    • 패스프레이즈 없는 개인키가 공용 위치에 존재

공개키 로그인은 무차별 대입에 강한 대신, 한 번 심긴 키는 조용히 재침입을 허용한다는 점을 기억해야 합니다.

7. 탐지 방법

  • authorized_keys 변경 감사: auditd -w /home -p wa는 광범위 → 사용자별 ~/.ssh/authorized_keys watch
  • 등록 키 지문 기준선과 주기 비교
  • Accepted publickey의 fingerprint를 인벤토리와 대조

8. SOC 관점 — SIEM · Wazuh · IOC

Wazuh FIM으로 각 사용자 ~/.ssh/authorized_keys를 감시하면 키 추가를 실시간 탐지할 수 있습니다. 이는 34편의 '키 기반 지속성'과 직결됩니다. SIEM에서는 Accepted publickey 로그의 fingerprint를 허용 키 목록과 대조해 '미등록 키 로그인'을 알람으로 올립니다. 신규 키 지문은 IOC로 관리합니다.

9. 실습 체크리스트

[ ] ~/.ssh와 키 파일 권한(700/600) 확인
[ ] authorized_keys 등록 키 지문 확인
[ ] 미등록 키 존재 여부 점검
[ ] authorized_keys 변경 감사 설정

10. 핵심 정리

  • 개인키는 전송·유출되면 안 되며 패스프레이즈로 보호한다.
  • authorized_keys는 공격자의 대표적 지속성 위치다.
  • 미등록 공개키 추가는 은밀한 백도어이므로 무결성 감시가 필수다.
  • 키 권한(700/600)이 틀리면 sshd가 거부한다.
  • 로그인 키 fingerprint를 인벤토리와 대조해 탐지한다.

11. 다음 편

다음 편에서는 16. Linux 파일 권한과 보안 를 다룹니다. Part 3로 넘어가, 파일 권한을 '접근통제'라는 보안 렌즈로 다시 봅니다.


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

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

0개의 댓글