# 보안 공격 탐지 및 대응 ## 작성일: 2025-08-26 ## 작성자: 서버 관리자 ## 상태: ✅ 차단 완료 (2025-08-26 15:00) ## 영향: 51123 서버 대상 자동화 공격 --- ## 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회 | 복합 스캔 | 활성 | | 119.8.169.21 | 74회 | 자동화 스캔 | 활성 | | 111.119.234.186 | 74회 | 자동화 스캔 | 활성 | | 103.225.9.122 | 37회 | PHPUnit 전용 | 8/25 06:17 | | 142.93.90.55 | 다수 | .env 스캔 | 8/26 12:39 | | 8.213.41.158 | 12회 | .env 스캔 | 8/25 23:00 | | 185.177.72.29 | 다수 | .env 스캔 | 8/26 10:44 | ### 2.2 공격 패턴 ```bash # 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) ```bash # 주요 공격 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 설정 ```bash # fail2ban 설치 sudo apt-get install fail2ban # nginx 보안 필터 생성 sudo cat > /etc/fail2ban/filter.d/nginx-security.conf << 'EOF' [Definition] failregex = ^ .* "(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 보안 헤더 강화 ```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 실시간 공격 모니터링 ```bash # 실시간 공격 시도 감시 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 차단 확인 ```bash # 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* *차단 조치 완료: 2025-08-26 15:00* ## 8. 차단 실행 결과 ### 8.1 차단된 IP 목록 ```bash # iptables 차단 규칙 확인 sudo iptables -L INPUT -n -v | grep DROP # 결과: 7개 IP 차단 활성화 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) ``` ### 8.2 영구 저장 상태 - **파일 위치**: `/etc/iptables/rules.v4` - **저장 시각**: 2025-08-26 14:58 - **총 규칙 수**: 23개 (기존 규칙 포함) - **재부팅 후**: 자동 적용 (netfilter-persistent 서비스)