BBQ:나쁜 쿼리 차단 WordPress 플러그인 검토
게시 됨: 2014-01-30BBQ:Block Bad Queries는 악성 HTTP 요청을 차단하는 WordPress 웹 애플리케이션 방화벽입니다.
사용할 수 있는 WordPress 보안 플러그인은 많지만 실제로 WordPress 보안을 올바르게 처리하고 악의적인 해커 공격으로부터 WordPress 설치를 보호하는 데 도움이 되는 플러그인은 몇 개뿐입니다.
이러한 플러그인 중 하나는 BBQ: 잘못된 쿼리 차단입니다. 이 플러그인은 모든 WordPress 관리자와 관리자가 설치해야 하는 고도로 사용자 정의 가능하지만 간단하고 유지 관리가 필요 없는 WordPress 웹 애플리케이션 방화벽과 같습니다.
이 WordPress 보안 게시물은 다음과 같이 설명합니다.
- BBQ:Block Bad Queries 플러그인 작동 방식
- BBQ를 사용자 정의하는 방법: 불량 쿼리 차단 플러그인
- 차단할 패턴 수정/추가
- 특정 사용자 에이전트 문자열을 사용하여 방문자 차단
- HTTP 요청에 허용되는 최대 문자 수 구성
- BBQ 테스트 방법: 잘못된 쿼리 및 사용자 지정 차단
BBQ: 잘못된 쿼리 차단 WordPress 플러그인 작동 방식
BBQ:Block Bad Queries 플러그인은 WordPress 코어에서 실행되기 전에 WordPress로 전송된 모든 요청을 분석합니다. 요청이 악의적인 경우 플러그인은 액세스가 금지된 HTTP 상태 코드 403으로 응답하여 방문자가 해당 리소스에 액세스하는 것을 금지합니다.
악성 패턴의 기본 목록 Block Bad Queries 블록은 WordPress를 표적으로 하는 WordPress 공격으로부터 보호할 뿐만 아니라 잠재적인 제로 데이 취약점 및 교차 사이트 스크립팅, SQL 주입 및 디렉터리 탐색과 같은 기타 일반적인 공격으로부터 WordPress를 보호합니다. 따라서 BBQ:Block Bad Queries를 설치하면 취약한(오래된) WordPress 설치, 플러그인 또는 테마를 실행하는 경우 악의적인 해커가 알려진 취약점을 악용할 수 없습니다.
WP 화이트 보안 팁 : BBQ:Block Bad Queries를 실행하더라도 가장 안전한 최신 버전의 WordPress, 플러그인 및 테마를 실행해야 합니다. 워드프레스 BBQ 플러그인은 기존 보안 허점을 막는 것보다 추가적인 보안 레이어로 사용해야 합니다.
BBQ 커스터마이징: 불량 쿼리 차단 플러그인
기본적으로 잘못된 쿼리 차단에는 사용자 지정이나 구성 변경이 필요하지 않지만 규칙에는 항상 예외가 있습니다. BBQ:Block Bad Queries를 사용자 정의해야 하는 경우 사용자 정의할 수 있는 항목에 대한 설명이 있습니다. 시작하려면 WordPress 설치로 전송되는 각 요청의 세 부분을 스캔합니다.
요청 URI : 사용자가 요청한 URL, 예: https://www.wpwhitesecurity.com/wordpress-security/
쿼리 문자열 : URL에 포함된 쿼리 문자열, 예: https://www.wpwhitesecurity.com/wordpress-security/?query_string=1
사용자 에이전트 문자열 : 사용자 에이전트 문자열은 자신을 식별하기 위해 WordPress에 액세스하는 클라이언트 소프트웨어에서 자동으로 전송됩니다. 예를 들어 Google Chrome은 다음 사용자 에이전트 문자열을 사용합니다.
Mozilla/5.0(Windows NT 6.2, Win64, x64) AppleWebKit/537.36(Gecko와 같은 KHTML) Chrome/32.0.1667.0 Safari/537.36
일반적으로 악성 요청에 사용되는 모든 패턴은 플러그인의 세 가지 배열에 저장되며 이름은 자명합니다.
- $request_uri_array
- $query_string_array
- $user_agent_array
BBQ:Block Bad Queries에는 구성 인터페이스가 없습니다. 따라서 아래 예제에서 설명한 대로 수정하려면 php 플러그인 파일에서 코드를 수정해야 합니다.
BBQ:Block Bad Queries 플러그인이 차단해야 하는 HTTP 요청 수정
특정 유형의 쿼리 문자열을 차단하려면 $query_string_array 배열에 쿼리 문자열 패턴을 추가하세요. 새 패턴을 추가한 후에는 합법적인 요청을 차단하지 않는지 테스트하십시오. 구문 예제는 다음과 같습니다.
$query_string_array = apply_filters( 'query_string_items', array( 'PATTERN_1', 'PATTERN_2', 'PATTERN_3');
참고: 추가하는 각 패턴은 작은따옴표(') 사이에 선언되어야 하며 쉼표(,) 기호로 다른 패턴과 구분되어야 합니다.
WordPress의 특정 사용자 에이전트로 방문자 차단
자동화된 바이러스 및 맬웨어 봇과 같은 특정 사용자 에이전트를 사용하여 방문자를 차단하려면 $user_agent_array에 사용자 에이전트 문자열을 추가합니다.
WordPress의 최대 URL 길이 제한 구성
HTTP 요청에 사용할 수 있는 문자 수를 제한하여 제로 데이 공격 및 기타 여러 악의적인 공격으로부터 WordPress 설치를 보호할 수 있습니다. 제로 데이 공격은 악의적인 해커가 악용하지만 소프트웨어 공급업체에서 아직 알려지지 않은 소프트웨어 취약점이므로 아직 패치가 없습니다.
대부분의 악성 웹 애플리케이션 공격은 긴 URL을 사용하여 알려진 취약점을 악용합니다. 따라서 HTTP 요청에 사용할 수 있는 문자 수를 제한하면 이러한 유형의 공격으로부터 WordPress 설치를 자동으로 보호하게 됩니다.
URL에 사용되는 문자 수를 제한하여 합법적인 요청을 차단할 수도 있습니다. 따라서 이 보안 기능을 활성화하기 전에 WordPress 설치(WordPress 관리 페이지(/wp-admin/) 섹션 포함)에 있는 가장 긴 URL의 길이를 확인하십시오.
최대 URL 길이를 활성화 및 구성하려면 플러그인에서 아래 코드 줄의 주석 처리를 제거('//' 삭제)하고 HTTP 요청에 포함될 수 있는 최대 문자 수를 지정합니다. 플러그인의 기본값은 아래와 같이 255입니다.
strlen( $_SERVER['REQUEST_URI'] ) > 255 ||
WordPress 웹 애플리케이션 방화벽 테스트
BBQ:Block Bad Queries WordPress 플러그인을 설치하면 작동하는지 확인하기 위해 아래 샘플 URL 목록을 요청하여 여러 테스트를 실행합니다(some_site.com을 도메인으로 교체).
- http://www.some_site.com/../../../etc/passwd
- http://www. some_site.com/path/?q=%00
- http://www. some_site.com/path/base64_
플러그인이 올바르게 작동하는 경우 서버는 이러한 URL을 요청할 때 HTTP 상태 코드 403 Forbidden으로 응답해야 합니다. 위의 요청은 BBQ:Block Bad Requests 플러그인에 의해 차단되어야 하는 URL 예시일 뿐입니다. 실제 해킹 공격에 일반적으로 사용되는 요청을 사용하여 다른 여러 테스트를 실행할 수 있습니다.
BBQ 테스트: Fiddler로 잘못된 쿼리 차단 플러그인
악성 HTTP 요청을 보낼 때 서버 응답이 무엇인지 확실하지 않은 경우 Fiddler 프록시를 사용하여 응답을 확인할 수 있습니다.
아래 스크린샷에서 강조 표시된 것처럼 이 테스트에서 https://www.wpwhitesecurity.com/contact/base64_ URL을 요청했으며 서버가 HTTP 403 Forbidden 응답으로 응답하는지 확인할 수 있습니다.
잘못된 쿼리 차단 플러그인 – WordPress용 웹 애플리케이션 방화벽
당신은 그것을 가지고 있습니다! WordPress 블로그 및 웹 사이트를 위한 고도로 사용자 지정 가능하고 강력한 웹 애플리케이션 방화벽을 찾고 있다면 BBQ:Block Bad Queries 플러그인을 설치하고 잊어버리십시오. WordPress 플러그인 저장소에서 BBQ:Block Bad Queries를 다운로드하거나 여기에서 PRO 버전을 구입할 수 있습니다.
반면에 구성이 필요하지 않고 맬웨어 검사도 수행하는 것을 선호한다면 Malcare 맬웨어 스캐너를 추천합니다.