- 250826_security_attack_detection.md: 새로운 공격 IP(221.159.119.8) 차단 추가 - 250826_security_attack_damage_assessment.md: 전체 시스템 피해 평가 (피해 없음 확인)
6.2 KiB
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 보안 강화
-
CloudFlare/WAF 도입 검토
- DDoS 방어
- 자동 봇 차단
- 지역 기반 접근 제한
-
로그 분석 자동화
- ELK Stack 구축
- 이상 패턴 자동 알림
-
정기 보안 점검
- 월 1회 로그 분석
- 분기별 보안 감사
6.2 대응 프로세스
- 공격 탐지 → 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 출현
- 방어 상태: 정상 작동 중