소개
ModSecurity는 오픈 소스 크로스 플랫폼 웹 애플리케이션 방화벽(WAF) 엔진입니다. Apache, IIS, Nginx 웹 서버를 위해 설계되었으며, 강력한 이벤트 기반 프로그래밍 언어를 사용하여 웹 애플리케이션에 대한 다양한 공격으로부터 보호하고 HTTP 트래픽 모니터링, 로깅 및 실시간 분석을 제공합니다.
상세정보
프로그램 소개
ModSecurity는 OWASP 프로젝트로 관리되는 오픈 소스 웹 애플리케이션 방화벽(WAF) 엔진입니다. Apache, IIS, Nginx와 같은 주요 웹 서버 플랫폼에서 작동하며, ModSecurity SecRules 형식의 규칙을 로드하고 해석하여 웹 애플리케이션을 보호합니다.
이 프로그램은 HTTP 트래픽을 모니터링하고 로깅하며 실시간 분석을 수행하여 SQL 인젝션, 크로스 사이트 스크립팅(XSS)과 같은 다양한 웹 공격으로부터 시스템을 방어하는 데 목적이 있습니다.
주요 기능
ModSecurity는 다음과 같은 핵심 기능을 제공합니다.
- 웹 애플리케이션 보호: SecRules 규칙을 기반으로 HTTP 요청 및 응답을 분석하여 악의적인 트래픽을 차단하고 웹 애플리케이션을 보호합니다.
- 다중 플랫폼 지원: Apache, Nginx, IIS와 같은 다양한 웹 서버 플랫폼과의 통합을 위한 커넥터 아키텍처를 제공합니다.
- 고성능 처리: Apache 의존성을 제거하여 플랫폼 독립성을 높이고 성능을 향상시켰습니다.
- 감사 로깅: HTTP 트래픽을 모니터링하고 로깅하며, 향후 JSON 형식의 감사 로그를 기본 지원할 예정입니다.
- 강력한 규칙 언어: ModSecurity SecRules 형식의 규칙을 사용하여 세밀한 보호 정책을 정의할 수 있습니다.
다운로드·설치 방법
ModSecurity는 소스 코드를 직접 빌드하여 설치하거나 Chocolatey 패키지를 통해 Windows에 설치할 수 있습니다.
Windows에서 Chocolatey를 통한 설치
Chocolatey 패키지 관리자를 사용하면 ModSecurity를 간편하게 설치할 수 있습니다. Chocolatey가 설치된 Windows 시스템에서 다음 명령을 실행합니다.
choco install modsecurity
이 명령은 ModSecurity MSI 설치 프로그램을 사용하여 필요한 파일을 시스템에 설치합니다.
소스 코드 빌드 (Unix 계열)
소스에서 직접 빌드하려면 다음 단계를 따릅니다.
- 저장소를 클론합니다:
git clone https://github.com/owasp-modsecurity/ModSecurity - 서브모듈을 초기화합니다:
git submodule update --init --recursive - 빌드 프로세스를 시작합니다:
./build.sh,./configure,make,sudo make install
각 배포판별 빌드 방법은 프로젝트 위키의 Compilation Recipes 페이지에서 확인할 수 있습니다.
기본 사용법/명령어
ModSecurity는 라이브러리로 사용되며, C++ 또는 C 인터페이스를 통해 애플리케이션에 통합됩니다. 기본 사용 흐름은 다음과 같습니다.
- ModSecurity 인스턴스를 생성합니다.
- Rules 인스턴스를 생성하고 규칙 파일을 로드합니다.
- Transaction 객체를 생성하여 HTTP 연결, URI, 요청/응답 헤더 및 본문을 처리합니다.
- 干预(intervention)이 발생하는지 확인하여 보호 조치를 적용합니다.
C++와 C 언어에 대한 간단한 사용 예시는 프로젝트 저장소의 examples 서브폴더에서 확인할 수 있습니다.
이런 경우에 유용합니다
ModSecurity는 다음과 같은 상황에서 유용합니다.
- 웹 서버(Apache, Nginx, IIS)에서 실행되는 웹 애플리케이션을 보호해야 하는 경우
- SQL 인젝션, XSS 등 일반적인 웹 공격으로부터 시스템을 방어해야 하는 경우
- HTTP 트래픽을 실시간으로 모니터링하고 분석해야 하는 경우
- 맞춤형 보호 규칙을 정의하여 특정 웹 애플리케이션 환경에 맞는 보안 정책을 수립해야 하는 경우
지원 환경·시스템 요구사항
ModSecurity는 다음 환경을 지원합니다.
- 운영체제: Windows, Linux, macOS, FreeBSD 등
- 웹 서버: Apache, Nginx, IIS
- 프로그래밍 언어: C++17 기준
- 필수 의존성: Flex, Bison, YAJL, PCRE2(기본)/PCRE
- 선택적 의존성: libinjection(XSS/SQL 감지), curl(SecRemoteRules), LMDB(영구 저장), Lua(스크립팅), XML 라이브러리, MaxMind DB API(GeoIP)
최신 버전·업데이트
Chocolatey 패키지 버전은 2.9.1입니다. 프로젝트의 최신 릴리스 정보 및 업데이트는 GitHub 저장소의 릴리스 페이지에서 확인할 수 있습니다.
제한 사항·확인 사항
- ModSecurity v3 라이브러리(libmodsecurity)는 웹 서버 커넥터와 별도로 유지 관리됩니다. 각 커넥터(Nginx, Apache, IIS)는 별도의 GitHub 프로젝트로 관리됩니다.
- 과거 GeoIP C API(libGeoIP)는 더 이상 유지 관리되지 않으며, MaxMind DB API(libmaxminddb)를 사용하는 것이 권장됩니다.
- 보안 관련 문제는 공개적으로 보고하지 말고 [email protected]로 문의해야 합니다.
- ModSecurity의 개발 후원은 Trustwave에서 2024년 7월 1일까지 제공됩니다.
시스템 요구사항
C++17 컴파일러, Flex, Bison(Yacc), YAJL(JSON 로깅 및 테스트 프레임워크용)이 필수이며, libXML2는 XML 요청 파싱 시 선택적으로 사용됩니다. 정규식 처리를 위해 PCRE2가 기본 사용되며, legacy PCRE도 지원됩니다.


