Journey to Security/리눅스

[서버 보안] 리눅스 SSH 백도어 점검 및 삭제하기

Cordilog 2026. 4. 26. 16:31

리눅스 서버 침해 사고가 발생했을 때, 공격자가 가장 먼저 수행하는 작업 중 하나는 지속성 확보이다.

관리자가 비밀번호를 바꿔도 언제든 재접속할 수 있도록 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 백도어를 차단하기 위해 다음 세 가지를 기억해야 한다.

  1. 경로 확인: /home/*/.ssh/와 /root/.ssh/는 상시 감시 대상이다.
  2. 로그 대조: authorized_keys의 수정 시간과 시스템 로그(secure 로그 등)를 대조한다.
  3. 최소 권한: 필요하지 않은 경우 SSH 키 기반 로그인을 제한하거나 chattr로 주요 파일을 보호한다.