DOCS/troubleshooting/250826_security_attack_detection.md
happybell80 e88a57286e 보안 공격 대응 현황 업데이트 및 피해 평가 보고서 추가
- 250826_security_attack_detection.md: 새로운 공격 IP(221.159.119.8) 차단 추가
- 250826_security_attack_damage_assessment.md: 전체 시스템 피해 평가 (피해 없음 확인)
2025-08-26 21:01:22 +09:00

6.2 KiB

보안 공격 탐지 및 대응

작성일: 2025-08-26

작성자: 서버 관리자

상태: 차단 완료 (2025-08-26 15:00, 20:52 추가 차단)

영향: 51123 서버 대상 자동화 공격

최종 업데이트: 2025-08-26 20:52


1. 공격 탐지 내역

1.1 발견 경위

  • Frontend 컨테이너 로그에서 의심스러운 접근 시도 발견
  • PHPUnit eval-stdin.php 및 .env 파일 접근 시도

1.2 공격 유형

공격 유형 대상 파일 목적
PHPUnit RCE /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php 원격 코드 실행
환경변수 탈취 /.env, /api/.env 비밀번호/API키 획득

2. 공격자 IP 분석

2.1 주요 공격 IP (nginx access.log 분석)

IP 주소 공격 횟수 공격 유형 최근 활동 차단 시각
185.177.72.10 142회 복합 스캔 활성 15:00
119.8.169.21 74회 자동화 스캔 활성 15:00
111.119.234.186 74회 자동화 스캔 활성 15:00
103.225.9.122 37회 PHPUnit 전용 8/25 06:17 15:00
142.93.90.55 다수 .env 스캔 8/26 12:39 15:00
8.213.41.158 12회 .env 스캔 8/25 23:00 15:00
185.177.72.29 다수 .env 스캔 8/26 10:44 15:00
221.159.119.8 2회 TP-Link RCE 8/26 20:48 20:52

2.2 공격 패턴

# PHPUnit 공격 패턴 (103.225.9.122)
[25/Aug/2025:06:17:24] /workspace/drupal/vendor/phpunit/...
[25/Aug/2025:06:17:25] /panel/vendor/phpunit/...
[25/Aug/2025:06:17:26] /public/vendor/phpunit/...
[25/Aug/2025:06:17:27] /apps/vendor/phpunit/...
[25/Aug/2025:06:17:28] /app/vendor/phpunit/...

# .env 스캔 패턴 (142.93.90.55)
[26/Aug/2025:05:45:37] /.env
[26/Aug/2025:12:39:21] /.env (반복)

3. 현재 방어 상태

3.1 자동 방어 (이미 작동중)

  • 404 응답 반환 (취약 파일 없음)
  • Python/FastAPI 환경 (PHP 취약점 영향 없음)
  • Docker 컨테이너 격리

3.2 적용된 차단 조치 (2025-08-26 15:00)

  • IP 차단 규칙 적용 완료 (7개 IP)
  • iptables-persistent 설치 및 규칙 영구 저장
  • ⏱️ fail2ban 설정 예정
  • ⏱️ WAF 규칙 적용 예정

4. 대응 조치 실행 결과

4.1 즉시 차단 완료 (iptables)

# 주요 공격 IP 차단
sudo iptables -A INPUT -s 185.177.72.10 -j DROP
sudo iptables -A INPUT -s 119.8.169.21 -j DROP
sudo iptables -A INPUT -s 111.119.234.186 -j DROP
sudo iptables -A INPUT -s 103.225.9.122 -j DROP
sudo iptables -A INPUT -s 142.93.90.55 -j DROP
sudo iptables -A INPUT -s 8.213.41.158 -j DROP
sudo iptables -A INPUT -s 185.177.72.29 -j DROP

# 규칙 저장 (재부팅 후에도 유지)
sudo apt-get install iptables-persistent
sudo netfilter-persistent save

4.2 fail2ban 설정

# fail2ban 설치
sudo apt-get install fail2ban

# nginx 보안 필터 생성
sudo cat > /etc/fail2ban/filter.d/nginx-security.conf << 'EOF'
[Definition]
failregex = ^<HOST> .* "(GET|POST) .*(phpunit|eval-stdin|\.env).*" .*$
ignoreregex =
EOF

# jail 설정
sudo cat > /etc/fail2ban/jail.d/nginx-security.conf << 'EOF'
[nginx-security]
enabled = true
filter = nginx-security
logpath = /var/log/nginx/access.log
maxretry = 3
bantime = 86400
findtime = 3600
action = iptables-multiport[name=nginx-security, port="http,https"]
EOF

# fail2ban 재시작
sudo systemctl restart fail2ban

4.3 nginx 보안 헤더 강화

# /etc/nginx/snippets/security.conf
location ~ \.(env|git|svn|htaccess|htpasswd)$ {
    deny all;
    return 404;
}

location ~ /(vendor|phpunit|eval-stdin)/ {
    deny all;
    return 404;
}

# 보안 헤더 추가
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;

5. 모니터링 명령어

5.1 실시간 공격 모니터링

# 실시간 공격 시도 감시
tail -f /var/log/nginx/access.log | grep -E "phpunit|eval-stdin|\.env"

# 공격 IP 통계
sudo grep -E "phpunit|\.env" /var/log/nginx/access.log.1 | \
  awk '{print $1}' | sort | uniq -c | sort -rn | head -20

# fail2ban 차단 목록
sudo fail2ban-client status nginx-security

5.2 차단 확인

# iptables 규칙 확인
sudo iptables -L -n -v | grep DROP

# 차단된 IP 연결 시도
sudo tcpdump -i any src host 185.177.72.10

6. 장기 대책

6.1 보안 강화

  1. CloudFlare/WAF 도입 검토

    • DDoS 방어
    • 자동 봇 차단
    • 지역 기반 접근 제한
  2. 로그 분석 자동화

    • ELK Stack 구축
    • 이상 패턴 자동 알림
  3. 정기 보안 점검

    • 월 1회 로그 분석
    • 분기별 보안 감사

6.2 대응 프로세스

  1. 공격 탐지 → 2. IP 분석 → 3. 즉시 차단 → 4. 패턴 분석 → 5. 규칙 업데이트

7. 참고 사항

  • 공격은 자동화 봇에 의한 대규모 스캔
  • 실제 침투 성공 사례 없음
  • Docker 환경으로 격리되어 영향 최소화
  • 정기적인 로그 검토 필요

작성 완료: 2025-08-26 15:00 1차 차단 완료: 2025-08-26 15:00 (7개 IP) 2차 차단 완료: 2025-08-26 20:52 (1개 IP 추가)

8. 차단 실행 결과

8.1 차단된 IP 목록

# iptables 차단 규칙 확인
sudo iptables -L INPUT -n -v | grep DROP

# 결과: 8개 IP 차단 활성화 (2025-08-26 20:52 기준)
185.177.72.10  (0 packets blocked)
119.8.169.21   (0 packets blocked)
111.119.234.186 (0 packets blocked)
103.225.9.122  (0 packets blocked)
142.93.90.55   (0 packets blocked)
8.213.41.158   (0 packets blocked)
185.177.72.29  (0 packets blocked)
221.159.119.8  (0 packets blocked) # 20:52 추가

8.2 영구 저장 상태

  • 파일 위치: /etc/iptables/rules.v4
  • 1차 저장: 2025-08-26 14:58 (7개 IP)
  • 2차 저장: 2025-08-26 20:52 (1개 IP 추가)
  • 총 차단 IP: 8개
  • 재부팅 후: 자동 적용 (netfilter-persistent 서비스)

8.3 차단 효과 분석 (20:52 점검)

  • PHPUnit/env 공격: 완전 차단 (15:00 이후 0건)
  • 새로운 공격 탐지: TP-Link RCE 시도 (221.159.119.8)
  • 공격 패턴 변화: 기존 공격자 차단 후 새로운 IP 출현
  • 방어 상태: 정상 작동 중