1.11. ModSecurity를 사용하여 웹 서버에서 웹 애플리케이션 보안


ModSecurity는 Apache, Nginx 및 olm과 같은 다양한 웹 서버에서 지원하는 오픈 소스 웹 애플리케이션 방화벽(WAF)으로, 웹 애플리케이션의 보안 위험을 줄입니다. ModSecurity는 서버 구성을 위한 사용자 정의 가능한 규칙 세트를 제공합니다.

mod_security-crs 패키지에는 웹 사이트 간 스크립팅, 잘못된 사용자 에이전트, SQL 삽입, 트로이 목마, 세션 하이재킹 및 기타 악용에 대한 규칙이 포함된 핵심 규칙 세트(CRS)가 포함되어 있습니다.

1.11.1. Apache용 ModSecurity 웹 기반 애플리케이션 방화벽 배포

ModSecurity를 배포하여 웹 서버에서 웹 기반 애플리케이션을 실행하는 것과 관련된 위험을 줄이려면 Apache HTTP 서버에 대한 mod_securitymod_security_crs 패키지를 설치합니다. mod_security_crs 패키지는 ModSecurity 웹 기반 애플리케이션 방화벽(WAF) 모듈에 대한 코어 규칙 세트(CRS)를 제공합니다.

프로세스

  1. mod_security,mod_security_crshttpd 패키지를 설치합니다.

    # yum install -y mod_security mod_security_crs httpd
    Copy to Clipboard Toggle word wrap
  2. httpd 서버를 시작합니다.

    # systemctl restart httpd
    Copy to Clipboard Toggle word wrap

검증

  1. Apache HTTP 서버에서 ModSecurity 웹 기반 애플리케이션 방화벽이 활성화되어 있는지 확인합니다.

    # httpd -M | grep security
     security2_module (shared)
    Copy to Clipboard Toggle word wrap
  2. /etc/httpd/modsecurity.d/activated_rules/ 디렉터리에 mod_security_crs:에서 제공하는 규칙이 포함되어 있는지 확인합니다.

    # ls /etc/httpd/modsecurity.d/activated_rules/
    ...
    REQUEST-921-PROTOCOL-ATTACK.conf
    REQUEST-930-APPLICATION-ATTACK-LFI.conf
    ...
    Copy to Clipboard Toggle word wrap

1.11.2. ModSecurity에 사용자 정의 규칙 추가

ModSecurity 코어 규칙 세트(CRS)에 포함된 규칙이 시나리오에 부합하지 않고 추가 가능한 공격을 방지하려면 ModSecurity 웹 기반 애플리케이션 방화벽에서 사용하는 규칙 세트에 사용자 지정 규칙을 추가할 수 있습니다. 다음 예제에서는 간단한 규칙을 추가하는 방법을 보여줍니다. 더 복잡한 규칙을 만들려면 ModSecurity Wiki 웹 사이트의 참조 설명서를 참조하십시오.

사전 요구 사항

  • Apache용 ModSecurity가 설치 및 활성화되어 있습니다.

프로세스

  1. 선택한 텍스트 편집기에서 /etc/httpd/conf.d/mod_security.conf 파일을 엽니다. 예를 들면 다음과 같습니다.

    # vi /etc/httpd/conf.d/mod_security.conf
    Copy to Clipboard Toggle word wrap
  2. SecRuleEngine On 으로 시작하는 줄 뒤에 다음 예제 규칙을 추가합니다.

    SecRule ARGS:data "@contains evil" "deny,status:403,msg:'param data contains evil data',id:1"
    Copy to Clipboard Toggle word wrap

    이전 규칙은 data 매개 변수에 잘못된 문자열이 포함된 경우 사용자에게 리소스 사용을 금지합니다.

  3. 변경 사항을 저장하고 편집기를 종료합니다.
  4. httpd 서버를 다시 시작합니다.

    # systemctl restart httpd
    Copy to Clipboard Toggle word wrap

검증

  1. 테스트.html 페이지를 생성합니다.

    # echo "mod_security test" > /var/www/html/test.html
    Copy to Clipboard Toggle word wrap
  2. httpd 서버를 다시 시작합니다.

    # systemctl restart httpd
    Copy to Clipboard Toggle word wrap
  3. HTTP 요청의 GET 변수에서 악의적인 데이터 없이 test.html 을 요청합니다.

    $ curl http://localhost/test.html?data=good
    
    mod_security test
    Copy to Clipboard Toggle word wrap
  4. HTTP 요청의 GET 변수에 악성 데이터로 test.html 을 요청합니다.

    $ curl localhost/test.html?data=xxxevilxxx
    
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>403 Forbidden</title>
    </head><body>
    <h1>Forbidden</h1>
    <p>You do not have permission to access this resource.</p>
    </body></html>
    Copy to Clipboard Toggle word wrap
  5. /var/log/httpd/error_log 파일을 확인하고 잘못된 데이터 메시지가 포함된 param 데이터로 액세스를 거부하는 방법에 대한 로그 항목을 찾습니다.

    [Wed May 25 08:01:31.036297 2022] [:error] [pid 5839:tid 139874434791168] [client ::1:45658] [client ::1] ModSecurity: Access denied with code 403 (phase 2). String match "evil" at ARGS:data. [file "/etc/httpd/conf.d/mod_security.conf"] [line "4"] [id "1"] [msg "param data contains evil data"] [hostname "localhost"] [uri "/test.html"] [unique_id "Yo4amwIdsBG3yZqSzh2GuwAAAIY"]
    Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat