# 다층 트래픽 필터링: ipset, 자동 차단, CrowdSec로 서버 보안 강화
ipset 기반 필터링 시스템에 의심스러운 IP 자동 차단과 CrowdSec를 적용하면 불필요한 트래픽 비율이 12%에서 0.3% 미만으로 급감합니다. 차단은 리눅스 커널 레벨(L3/L4)에서 이뤄져 nginx나 PHP-FPM이 요청을 처리하기 전에 발생하죠. 이는 .env, wp-login.php, config.php 스캔 공격으로 실패율이 99%까지 치솟던 프로덕션 Bitrix 사이트의 서버 부하를 크게 줄여줍니다.
주요 이점: 차단 내역 완전 가시성, IP 목록 원자적 업데이트, 프로젝트별 빠른 수정이 가능한 모듈러 설계.
외부 WAF와 CDN 대비 장점
외부 WAF와 CDN은 대규모 글로벌 앱에 적합하지만, 트래픽이 적은 로컬 환경에서는 자체 호스팅 필터링이 최선입니다.
자체 구축 이유:
- 완전 제어: 어떤 IP가 어떤 규칙으로 얼마나 오래 차단됐는지 정확히 확인.
- 앱 처리 전 차단: 쓰레기 트래픽으로 nginx/PHP 자원 낭비 없음.
- 유연성: .env나 .git 같은 Bitrix 특화 패턴 규칙 쉽게 추가.
- 간단함: 스택을 비대화하는 추가 레이어 없음.
분석은 HTTP 로그(L7)로 수행되지만, 패킷 드롭은 커널 레벨 ipset과 iptables에서 이뤄집니다.
3단계 방어 구조
시스템은 단계별 필터링을 위해 계층화되어 있습니다.
1단계: 지오 블로킹. 관련 없는 국가 패킷은 즉시 드롭—HTTP 파싱 불필요.
2단계: 의심 IP 자동 차단. 지오 필터링 후 wp-login.php, shell.php, .env 같은 패턴 스캔. 범죄자 IP는 2시간 차단.
3단계: CrowdSec. 바운서는 글로벌 블랙리스트를 TTL과 함께 ipset에 주입.
모듈화로 각 레이어를 독립적으로 온/오프 가능해 오탐(false positive) 최소화.
ipset: 확장성 기반
수천 개 IP 규칙의 일반 iptables는 선형 O(n) 스캔으로 부하 시 성능 저하.
ipset은 hash:ip 또는 hash:net으로 O(1) 조회:
-m set --match-set blocked_ips src
리스트 업데이트는 임시 세트와 스왑으로 원자적, 다운타임 제로:
ipset create "${country}_temp" hash:net 2>/dev/null || ipset flush "${country}_temp"
if [[ -s "$temp_file" ]]; then
while read network; do
ipset add "${country}_temp" "$network"
done < "$temp_file"
ipset swap "${country}_temp" "$country"
fi
ipset destroy "${country}_temp"
대량 목록 새로고침 중에도 보호가 확고합니다.
패턴 기반 스캐너 탐지
auto-block-suspicious.sh 스크립트는 로그를 실시간 추적하며 수상한 요청 포착:
- wp-login.php (Bitrix에서도).
- shell.php, shoha.php.
- .env, .git, .aws/credentials.
IP는 2시간 자동 차단. 예: 200+ /wp-login.php 공격이 20~30초 만에 무력화, 부하 즉시 정상화.
차단 통계:
- 중국: 8,802 IP.
- 의심: 10 IP (예: 4.193.97.168, 195.178.110.109).
CrowdSec 통합
CrowdSec 바운서는 crowdsec_blacklist ipset에 TTL과 함께 글로벌 블랙리스트 채움:
- 글로벌 시그니처 자동 동기화.
- 타임아웃 시 자동 만료.
CrowdSec는 알려진 위협을 기존 로직 변경 없이 처리하며 커스텀 모듈 보강.
구현 결과
지표 비교 (2025 WAF 없음 vs. 2026 WAF 적용):
| 지표 | 보호 없음 | WAF 적용 |
|------------------|--------------|--------------|
| 불필요 트래픽 | ~12% | <0.3% |
| 부하 평균 | 1.8–2.5 | 0.9–1.2 |
| 실패율 | 최대 40% | 12–15% |
스캐닝 RPS 급증은 커널에서 사멸; 분석은 봇 트래픽 없이 깨끗.
한계:
- 고용량 L4 공격 방어 불가.
- CMS 업데이트 필요 (Bitrix).
- 주거 IP에 취약.
- 글로벌 CDN 규모 프로젝트 부적합.
핵심 요약
- 확장성: ipset으로 수백만 IP O(1) 검사.
- 원자성: 스왑으로 필터링 공백 방지.
- 모듈화: 지오, 의심, CrowdSec 독립 레이어로 정밀 조정.
- 효율성: 불필요 트래픽 0.3%로, 부하 반토막.
- 투명성: 완전 가시성, 블랙박스 없음.
— Editorial Team
아직 댓글이 없습니다.