리눅스 서버 침해 사고가 발생했을 때, 공격자가 가장 먼저 수행하는 작업 중 하나는 지속성 확보이다.
관리자가 비밀번호를 바꿔도 언제든 재접속할 수 있도록 authorized_keys 파일에 자신의 공개키를 슬쩍 끼워넣는 방식이다.
보안 관리자는 root 권한을 이용해 서버 내 모든 사용자의 SSH 키 상태를 주기적으로 모니터링하고, 인가되지 않은 키를 식별하여 제거해야 한다.
https://m.boannews.com/html/detail.html?idx=126315
리눅스에 백도어 계정 설치하는 사이버 공격 발견... 다양한 악성코드 추가 설치
리눅스 SSH 허니팟을 활용해 불특정 다수의 리눅스 시스템을 대상으로 한 공격이 발견됐다. 공격자는 기본 설정이나 단순한 형태의 비밀번호를 사용하는 등 부적절하게 관리되는 리눅스 시스템
m.boannews.com
1. 전수 조사: 서버 내 모든 authorized_keys 탐색
공격자는 일반 사용자 계정뿐만 아니라 root 계정의 .ssh 디렉토리에도 백도어를 심을 수 있다.
먼저 시스템 전체에서 활성화된 모든 인증 키 파일을 찾아낸다.
# 모든 사용자의 홈 디렉토리 내 authorized_keys 파일 확인
ls -la /home/*/.ssh/authorized_keys /root/.ssh/authorized_keys 2>/dev/null

만약 특정 사용자의 홈 디렉토리 경로가 표준과 다르다면 find 명령어를 병행하는 것이 확실하다.
find / -name "authorized_keys" -exec ls -la {} + 2>/dev/null
2. 의심스러운 키 식별
파일을 찾았다면 해당 파일이 "누가, 언제, 어떤 내용으로" 작성되었는지 분석해야 한다.
① 주석(Comment) 확인
공개키의 끝부분에는 보통 생성한 사용자나 호스트 이름이 적힌다.
tail 명령어를 이용해 모든 파일의 내용을 한꺼번에 출력하여 의심스러운 이름을 찾는다.
tail -n +1 /home/*/.ssh/authorized_keys /root/.ssh/authorized_keys 2>/dev/null
tail -n +1 /home/test/.ssh/authorized_keys

kali@kali, root@unknown-host 등 관리자가 모르는 외부 호스트 정보가 포함되어 있다면 공격을 의심해야 한다.
② 파일 수정 시간(Timestamp) 분석
사용자가 직접 키를 등록한 적이 없는데 최근에 파일이 수정되었다면 침해 사고를 의심해야 한다.
# 파일의 상세 정보 및 마지막 수정 시간 확인
stat /home/*/.ssh/authorized_keys /root/.ssh/authorized_keys 2>/dev/null | grep -E "File:|Modify"

③ 원본 키와 대조
사용자가 생성한 원본 공개키(id_ed25519.pub 등)와 등록된 명부(authorized_keys)의 내용이 다른지 비교한다.
# test 사용자의 예시
diff /home/test/.ssh/id_ed25519.pub /home/test/.ssh/authorized_keys

3. 대응 및 삭제
의심스러운 키가 발견되었다면 즉시 삭제 프로세스를 진행한다.
① 특정 라인만 삭제 (Surgical Removal)
vi나 nano 에디터를 사용하여 공격자의 키가 포함된 줄만 정확히 삭제한다.
vi /home/test/.ssh/authorized_keys
② 파일 초기화 및 권한 교정
파일 자체가 오염되었다고 판단되면 삭제 후 다시 생성하거나 권한을 엄격하게 제한한다.
# 파일 삭제
rm -f /home/test/.ssh/authorized_keys
# 디렉토리 및 파일 권한 재설정 (SSH 보안의 기본)
chmod 700 /home/test/.ssh
chmod 600 /home/test/.ssh/authorized_keys
4. 방어 강화: 속성 제어 (Immutable Bit)
공격자가 root 권한까지 탈취했다면 다시 키를 등록하는 것은 시간문제다.
이를 방지하기 위해 리눅스 파일 시스템의 확장 속성을 이용해 파일을 잠글 수 있다.
# 파일을 '변경 불가능' 상태로 설정 (root도 수정 불가)
chattr +i /home/test/.ssh/authorized_keys
이 설정이 적용되면 공격자가 스크립트로 키를 추가하려고 해도 Operation not permitted 에러가 발생하며 차단된다.
관리자가 내용을 수정해야 할 때는 chattr -i 명령어로 속성을 해제한 뒤 작업하면 된다.
5. 요약 및 결론
보안 엔지니어는 SSH 백도어를 차단하기 위해 다음 세 가지를 기억해야 한다.
- 경로 확인: /home/*/.ssh/와 /root/.ssh/는 상시 감시 대상이다.
- 로그 대조: authorized_keys의 수정 시간과 시스템 로그(secure 로그 등)를 대조한다.
- 최소 권한: 필요하지 않은 경우 SSH 키 기반 로그인을 제한하거나 chattr로 주요 파일을 보호한다.
'Journey to Security > 리눅스' 카테고리의 다른 글
| OpenSSL로 Apache HTTPS 인증서 생성하기 (1) SAN, 와일드카드 인증서 (0) | 2026.04.30 |
|---|---|
| [시스템] C 프로그램으로 이해하는 멀티쓰레드 (0) | 2026.04.27 |
| [서버 보안] Brute Force 공격과 무단 공개키 삽입(SSH 백도어) (0) | 2026.04.23 |
| 리눅스 파티션 분할로 서버 보안과 안정성 챙기기 (+Rocky Linux 9 파티션 분할 설치 방법) (0) | 2026.04.19 |
| passwd --stdin 옵션을 활용한 비밀번호 변경 자동화 (0) | 2026.03.26 |