Network

ModSecurity 1장_애플리케이션 요새화

dalgorithm 2021. 2. 17. 15:30
728x90

생산 환경의 네트워크에서 웹 애플리케이션을 대비하기 위해서는 애플리케이션 요새화를 해야한다.

 

실시간 애플리케이션 프로파일링

: 예상되는 요청에 대한 학습된 프로파일링을 만들기 위해 ModSecurity의 루아 API를 이용해 HTTP 트랜잭션을

  분석한다. 외부의 보안 계층을 통해 애플리케이션의 중요한 요소에 대한 규칙을 적용하고, 정책을 위반하는 비정상적인

  요청을 식별할 수 있게 한다.

 

여기서 루아 API란, Lua는 가상 머신에 적절한 C API를 제공한다. VM 자체와 달리 C API 인터페이스는 스택 기반이다. 따라서 데이터와 함께 사용하도록 의도 된 대부분의 기능은 가상 스택 상단에 일부 항목을 추가하거나 제거하는 것이고 모든 API 호출은 스택 내에서 신중하게 사용해야하는 것이 제한 사항이다. 일반적으로 Lua 언어에서 사용할 수있는 모든 작업은 C API를 사용하여 수행 할 수 있고, 내부 레지스트리에 대한 직접 액세스, 표준 메모리 할당 자 또는 가비지 수집기의 동작 변경과 같은 몇 가지 추가 기능이 있다.

 

- 영구 저장소 생성

: ModSecurity를 통해 자원당 영구 저장소를 활용한다. RESOURCE 영구 저장소 매커니즘을 초기화하는 것을 통해 이를 생성한다.  resource.confidence_counter_threshold 값에 충돌을 방지하기 위해 목록을 추가해주어야 한다.

 

- 후처리 프로파일링

: 잠재적인 지연 가능성을 최소하하길 원하므로 HTTP 응답이 클라이언트에게 넘어가진 상태에서 후처리 프로파일링이 실행된다. 이를 하기전에 악성적인 내용이

없는 깨끗한 트랜잭션만을 보고 있다는 것을 증명하기 위해 보안검사를 수행하는데 중요한 작업이다. 

 

   HTTP 응답코드가 404라면 자원 존재 X → 프로파일링 X, 영구저장소 삭제

   HTTP 응답코드 400~500번대라면 트랜잭션에 문제 있음 → 프로파일링 X

 

 암호화 해시 토큰을 이용해 데이터 조작 방지

: 데이터 조작 공격을 방지하기 위해 ModSecurity를 이용해 HTML  데이터에 추가적인 해시토큰 구현한다.

  데이터가 조작되지 않았다는 것을 보증하기 위해 외부함수를 구현해야한다. 

1) 아웃바운드 HTML 응답 바디의 데이터를 파싱해 특정 위치에 추가적인 토큰 데이터를 삽입한다.

   여기서 삽입된 데이터는 필수적인 것으로, 요청 매개변수 검증 토큰이라 한다. 

 

- 해시 토큰 불일치 (EX) 홑따옴표 추가

- 해시 토큰 누락 (EX) rv_token 제거

 

 OWASP ModSecurity CRS

: 모드시큐리티는 자체적인 보호기능이 없기 때문에 규칙으로 설정해야한다. CRS는 IDS/IPS와 달리 알려지지 않은 취약점에 대해서도 일반적인 공격 페이로드 감지 기능을 제공한다. 

 

아래는 핵심 규칙 내용이다. 

HTTP 보호 실시간 블랙리스트 조회 웹기반의 악성코드 탐지 HTTP 서비스 거부 공격 보호 자동화 탐지 일반적인 웹 공격 보호 파일 업로드에 대한 AV 스캐닝과 통합

- 설정 옵션

: 아파치의 httpd.conf 파일에 지시자를 추가해야한다. 동적모드 변경을 위해서도 규칙을 수정해야한다.

 

- 전통적인 탐지 모드

: CRS가 전통적인 모드로 동작하기 원하면 modsecurity_crs_10_setup.conf파일에서 SecDefaultAction 라인이 deny의

 행위가 있는지 확인한다.

 

- 이상징후 점수 탐지 모드

: 검사 및 탐지 로직은 차단기능과 분리된다. 전통적인 탐지 모드에서와의 같은 위치에 pass와 같은 행위가 있는지 확인한다. 이 동작모드에서는 규칙이 일치하더라도 차단하지 않는다. setVar 액션을 통해 이상 징후 점수를 증가시키면 된다.


출처: ModSecurity를 활용한 웹 애플리케이션 방어 레시피_라이언 바넷 지음

728x90