|
|
SQL 인젝션 공격의 **패턴(시그니처)**을 미리 정의해두고,
HTTP 요청 안에 ' OR '1'='1 같은 문자열이 있는지 검사함.
예: Snort, Suricata 같은 IDS/IPS는 다음과 같은 룰을 가짐:
alert tcp any any -> any 80 (content:"' OR 1=1"; msg:"SQL Injection attempt"; sid:10001;)2. 이상 탐지 기반 (Anomaly Detection)
평소 트래픽과 비교해 비정상적인 입력(예: 지나치게 긴 파라미터, 특이한 문자 조합 등)을 탐지
머신러닝 기반 IPS는 이 기능이 더 발전되어 있음
3. HTTP/웹 애플리케이션 레벨 패킷 검사
IDS/IPS는 HTTP 요청의 URI, 파라미터 등을 실시간으로 감시
SQL 키워드 (SELECT, DROP, '-- 등)의 비정상적 사용 여부 확인
🧱 차단 방식: IDS vs IPS
시스템 SQLi 감지 가능 차단 가능 여부
| IDS | ✅ 예 | ❌ 감지만 하고 차단은 안 함 (로그만 남김) |
| IPS | ✅ 예 | ✅ 실시간 차단 가능 |
✅ 실시간으로 SQL 인젝션을 막으려면 IPS가 필요합니다.
✅ 단, IDS도 침입 시도에 대한 경고 로그를 남기므로 보안관제에서 매우 유용합니다.
⚠️ 한계점도 존재
공격자가 인젝션을 우회하거나 인코딩(Base64, Unicode 등)할 경우 탐지가 어려울 수 있음
오탐(False Positive) 또는 미탐(False Negative) 가능성 있음
웹 애플리케이션이 HTTPS를 사용하는 경우, 암호화된 트래픽을 복호화하지 않으면 내부 내용 분석이 어려움 → SSL 복호화 기능 필요
✅ 보안 최적 구성 (현실적인 권장)
웹 방화벽(WAF) + IPS
SQL 인젝션 같은 웹 공격은 WAF가 가장 효과적으로 대응
IPS는 네트워크 차원의 추가 방어선 역할
IPS는 HTTP 트래픽을 인라인 모드로 감시
실시간으로 차단 가능하도록 설정
시그니처 최신 상태 유지
Snort, Suricata 등 룰셋은 자주 업데이트 필요
🔚 결론
IDS/IPS는 SQL 인젝션 공격을 탐지 및 차단할 수 있습니다.
특히 IPS는 실시간으로 차단할 수 있어 강력하지만,
**WAF(Web Application Firewall)**와 병행해서 사용하는 것이 SQL 인젝션 방어에는 가장 효과적입니다.
필요하시면 Snort나 Suricata에서 SQLi 탐지 룰 설정하는 예시도 드릴게요.