WAF(Web Application Firewall)는 최신 웹 보안에 중요한 계층으로, 취약점에 대한 웹사이트의 일차 방어선을 제공합니다. WAF는 악용 시도를 방어하고 알리는 데 사용할 수 있으므로 조직이 취약한 소프트웨어를 패치할 수 있는 것보다 더 빠르게 완화할 수 있습니다. 이 기능은 글로벌 CDN의 성능에 민감한 방식으로 구현되어 밀리초 단위로 응답 시간을 제공해야 합니다. 3년 전, 현재 Edgio 스택인 Verizon Digital Media Services에 WAF 엔진을 도입했을 때, ModSecurity Rules Engine을 선택했습니다. 이 엔진은 개별 WAF 사용 사례에서 1위를 차지했습니다. 또한 ModSecurity의 OWASP CRS(Core Rule Set) 지원, 강력한 규칙 언어 및 HTTP 트래픽 스트림에 대한 API 액세스는 상당한 유연성을 제공했습니다.
waflz 입력
그러나 WAF를 사용하는 고객의 수가 증가함에 따라 성능 및 리소스 병목 현상이 발생했습니다. 모든 고객 인스턴스에 전파된 ModSecurity의 집약적인 규칙 집합은 네트워크 전체의 메모리와 CPU 사용률을 높여 운영 비용을 증가시켰습니다. 새로운 규칙을 테스트하고 배포하는 것은 또한 규칙 언어가 종종 복잡하고 쓰기 및 구문 분석이 어려웠기 때문에 어려웠습니다. 기존 ModSecurity 라이브러리의 개발 복잡성과 함께 이러한 문제로 인해 Apache 2.0 라이선스로 게시된 오픈 소스 WAF 엔진인 waflz가 개발되었습니다.
Edgio에게 waflz는 ModSecurity의 중요한 개선 사항입니다. 그 이유는 다음과 같습니다.
- 메모리를 덜 소모합니다.
- 더 나은 성능을 제공합니다.
- API 기반.
Waflz는 ModSecurity 기능의 하위 집합인 OWASP 핵심 규칙 집합을 지원합니다. 2. x 및 3. x 및 여러 타사 규칙 집합.
waflz 디자인
Waflz는 처음부터 고성능 및 멀티 테넌시를 제공하도록 설계되었습니다. 필요한 경우 설계는 유연성 대신 성능을 교환했습니다. 궁극적으로 waflz는 ModSecurity 기능의 제한된 하위 집합을 지원합니다. 예를 들어, 보안 및 성능상의 이유로 SecRemoteRules 및 inspectFile 과 같은 일부 ModSecurity 지시어는 엣지에서 실행하기에 적합하지 않은 것으로 간주되었습니다.
엔진은 ModSecurity 형식 또는 JSON 형식의 규칙으로 구성할 수 있습니다. 전체 WAF 제품은 “API 우선”으로 설계되었습니다. 이를 위해 waflz는 입력 및 출력으로서 일류 JSON 지원을 제공합니다. Waflz는 Google 프로토콜 버퍼를 내부적으로 사용하여 구성(규칙 포함)과 알림 형식을 모두 나타냅니다. 프로토콜 버퍼를 선택하면 JSON 입력 및 출력과의 상호 운용성을 보장하고 두 가지 모두에 대해 엄격한 형식의 스키마를 추가할 수 있습니다.
CDN의 주요 엔지니어링 과제 중 일부는 수천 명의 고객에게 서비스를 제공함으로써 발생하는 높은 동시성 및 멀티 테넌시를 다루고 있습니다. 당사의 글로벌 에지 서버는 모든 고객에 대한 요청을 가능한 빨리 처리할 수 있어야 합니다. 또한 엣지 서버 애플리케이션은 모든 고객 구성에 대해 실시간 패치 및 처리 기능을 제공해야 합니다.
많은 WAF 규칙 집합을 엣지에서 실행 중인 HTTP 애플리케이션 서버 프로세스의 메모리에 로드하는 데 있어 모든 고객의 확장성 문제가 발생했습니다. Waflz는 메모리에 WAF 규칙 집합을 한 번만 생성하고 고객 구성 및 규칙 사용자 정의 간에 읽기 전용 참조를 공유함으로써 이 문제를 해결합니다. 또한 일부 중요한 내부 데이터 구조의 공간 및 시간 절감을 비롯하여 요청 처리 시간이 개선된 몇 가지 잠재적인 성능 최적화 기능이 확인되었습니다.
Waflz는 또한 엔진 동작을 검증하고 일회성 ModSecurity 규칙을 쉽게 테스트할 수 있는 기능을 내장하고 있어 복잡한 독립형 테스트 하니스가 필요하지 않습니다.
결론
Waflz는 CDN 기술 스택의 일부로, 대규모로 운영되는 동시에 효율적인 세분화된 규칙 테스트 및 커스터마이징을 지원합니다. CDN 애플리케이션의 문제에도 불구하고 ModSecurity와 새로운 libmodsecurity는 많은 사용 사례에 이상적인 환상적이고 유연한 라이브러리입니다. 사실, waflz 개발에 있어서, 우리는 ModSecurity 개발에 다시 기여했습니다. 새로운 WAF 엔진은 1년 이상 전 세계적으로 운영되어 왔으며 성능 저하 없이 수천 개의 다양한 클라이언트 구성을 동시에 지원하고 보호하고 있습니다.
waflz 기능의 더 많은 예를 보려면 github을 방문하십시오.