9.5. HTTP 서버 보안


9.5.1. httpd.conf의 보안 개선 사항

/etc/httpd/conf/httpd.conf 파일에서 보안 옵션을 구성하여 Apache HTTP 서버의 보안을 강화할 수 있습니다.

프로덕션에 저장하기 전에 항상 시스템에서 실행 중인 모든 스크립트가 올바르게 작동하는지 확인합니다.

스크립트 또는 공통 게이트웨이 인터페이스(CGI)가 포함된 디렉터리에 대한 쓰기 권한만 있으면 됩니다. 쓰기 권한이 있는 디렉터리 소유권을 root 로 변경하려면 다음 명령을 입력합니다.

# chown root <directory_name>
# chmod 755 <directory_name>

/etc/httpd/conf/httpd.conf 파일에서 다음 옵션을 구성할 수 있습니다.

FollowSymLinks
이 지시문은 기본적으로 활성화되어 있으며 디렉터리의 심볼릭 링크를 따릅니다.
Indexes
이 지시문은 기본적으로 활성화되어 있습니다. 사용자가 서버에서 파일을 검색하지 못하도록 이 지시문을 비활성화합니다.
UserDir
이 지시문은 시스템에 사용자 계정이 있는지 확인할 수 있으므로 기본적으로 비활성화되어 있습니다. /root/ 이외의 모든 사용자 디렉터리 검색을 활성화하려면 UserDir enabledUserDir disabled root 지시문을 사용합니다. 비활성화된 계정 목록에 사용자를 추가하려면 UserDir disabled 줄에 공백으로 구분된 사용자 목록을 추가합니다.
ServerTokens

이 지시문은 클라이언트에 다시 전송되는 서버 응답 헤더 필드를 제어합니다. 다음 매개변수를 사용하여 정보를 사용자 지정할 수 있습니다.

ServerTokens Full

웹 서버 버전 번호, 서버 운영 체제 세부 정보, 설치된 Apache 모듈과 같은 사용 가능한 모든 정보를 제공합니다. 예를 들면 다음과 같습니다.

Apache/2.4.37 (Red Hat Enterprise Linux) MyMod/1.2
ServerTokens Full-Release

릴리스 버전과 함께 사용 가능한 모든 정보를 제공합니다. 예를 들면 다음과 같습니다.

Apache/2.4.37 (Red Hat Enterprise Linux) (Release 41.module+el8.5.0+11772+c8e0c271)
ServerTokens Prod / ServerTokens ProductOnly

웹 서버 이름을 제공합니다. 예를 들면 다음과 같습니다.

Apache
ServerTokens Major

웹 서버 주요 릴리스 버전을 제공합니다. 예를 들면 다음과 같습니다.

Apache/2
ServerTokens Minor

웹 서버 마이너 릴리스 버전을 제공합니다. 예를 들면 다음과 같습니다.

Apache/2.4
ServerTokens Min / ServerTokens Minimal

웹 서버 최소 릴리스 버전을 제공합니다. 예를 들면 다음과 같습니다.

Apache/2.4.37
ServerTokens OS

웹 서버 릴리스 버전 및 운영 체제를 제공합니다. 예를 들면 다음과 같습니다.

Apache/2.4.37 (Red Hat Enterprise Linux)

ServerTokens Prod 옵션을 사용하여 공격자가 시스템에 대한 중요한 정보를 얻는 위험을 줄일 수 있습니다.

중요

IncludesNoExec 지시문을 제거하지 마십시오. 기본적으로 Server Side Includes (SSI) 모듈은 명령을 실행할 수 없습니다. 이를 변경하면 공격자가 시스템에서 명령을 입력할 수 있습니다.

httpd 모듈 제거

httpd 모듈을 제거하여 HTTP 서버의 기능을 제한할 수 있습니다. 이 작업을 수행하려면 /etc/httpd/conf.modules.d/ 또는 /etc/httpd/conf.d/ 디렉터리에서 구성 파일을 편집합니다. 예를 들어 프록시 모듈을 제거하려면 다음을 수행합니다.

echo '# All proxy modules disabled' > /etc/httpd/conf.modules.d/00-proxy.conf

9.5.2. Nginx 서버 구성 보안

Nginx는 고성능 HTTP 및 프록시 서버입니다. 다음 구성 옵션을 사용하여 Nginx 구성을 강화할 수 있습니다.

절차

  • 버전 문자열을 비활성화하려면 server_tokens 구성 옵션을 수정합니다.

    server_tokens off;

    이 옵션은 서버 버전 번호와 같은 추가 세부 정보를 표시하지 않습니다. 이 구성은 Nginx에서 제공하는 모든 요청에 서버 이름만 표시합니다. 예를 들면 다음과 같습니다.

    $ curl -sI http://localhost | grep Server
    Server: nginx
  • 특정 /etc/nginx/ conf 파일에서 알려진 특정 웹 애플리케이션 취약점을 완화하는 보안 헤더를 추가합니다.

    • 예를 들어 X- frame-Options 헤더 옵션은 도메인 외부의 모든 페이지를 거부하여 Nginx에서 제공하는 콘텐츠를 프레임하고, 클릭재킹 공격을 완화합니다.

      add_header X-Frame-Options "SAMEORIGIN";
    • 예를 들어 x-content-type 헤더는 일부 이전 브라우저에서 MIME-type 스니핑을 방지합니다.

      add_header X-Content-Type-Options nosniff;
    • 예를 들어 X-XSS-Protection 헤더를 사용하면 XSS(Cross-Site Scripting) 필터링을 활성화하여 브라우저가 Nginx의 응답에 포함된 악성 콘텐츠를 렌더링하지 않도록 합니다.

      add_header X-XSS-Protection "1; mode=block";
  • 당신은 대중에 노출된 서비스를 제한하고 그들이하는 것을 제한하고, 예를 들어, 방문자로부터 수락 할 수 있습니다.

    limit_except GET {
        allow 192.168.1.0/32;
        deny  all;
    }

    스니펫은 GETHEAD 를 제외한 모든 메서드에 대한 액세스를 제한합니다.

  • 예를 들어 HTTP 메서드를 비활성화할 수 있습니다.

    # Allow GET, PUT, POST; return "405 Method Not Allowed" for all others.
    if ( $request_method !~ ^(GET|PUT|POST)$ ) {
        return 405;
    }
  • Nginx 웹 서버에서 제공하는 데이터를 보호하도록 SSL을 구성할 수 있습니다. HTTPS를 통해서만 서비스를 제공하는 것이 좋습니다. 또한 Mozilla SSL 구성 생성기를 사용하여 Nginx 서버에서 SSL을 활성화하기 위한 보안 구성 프로필을 생성할 수 있습니다. 생성된 구성을 사용하면 알려진 취약한 프로토콜(예: SSLv2 및 SSLv3), 암호 및 해시 알고리즘(예: 3DES 및 MD5)이 비활성화됩니다. SSL 서버 테스트를 사용하여 구성이 최신 보안 요구 사항을 충족하는지 확인할 수도 있습니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.