어플리케이션

httpd.conf 파일에 대해 알아보겠습니다.

forward error correction Circle 2024. 8. 17. 08:07
반응형

Ⅰ. httpd.conf 파일이란? 

 Apache HTTP Server의 주요 구성 파일입니다. 이 파일은 서버의 동작 방식, 설정, 보안, 퍼포먼스 등을 제어하며, Apache 서버가 요청을 처리하는 방법을 정의합니다. 이 파일을 수정하면 웹 서버의 다양한 동작을 조정할 수 있으며, 잘못된 설정은 보안 문제나 서버 오류를 일으킬 수 있습니다.

Ⅱ. httpd.conf 파일의 주요 특징

ⅰ. 구조: httpd.conf는 텍스트 파일로 구성되며, 각 설정은 별도의 지시어(Directive)로 표현됩니다.
ⅱ. 계층적 구성: 설정은 전역적으로 적용되거나 특정 디렉토리, 파일, 가상 호스트 등에 대해 개별적으로 적용될 수 있습니다.
ⅲ. 모듈화: Apache는 다양한 모듈을 통해 기능을 확장할 수 있으며, httpd.conf에서 모듈을 로드하고 설정할 수 있습니다.
ⅳ. 유연성: 다양한 설정 옵션과 디렉티브를 통해, 여러 환경에 맞는 맞춤형 웹 서버를 구성할 수 있습니다.

Ⅲ. httpd.conf 주요 디렉티브와 보안 설정

ⅰ. ServerRoot
설명: Apache 서버의 루트 디렉토리를 설정합니다.
보안 설정: 이 디렉토리는 가능한 최소 권한으로 설정해야 하며, Apache 프로세스가 불필요한 파일에 접근하지 못하게 해야 합니다.
예시 : ServerRoot "/etc/httpd"

 

ⅱ. Listen
설명: 서버가 수신할 포트 번호를 설정합니다.
보안 설정: 기본적으로 포트 80(HTTP)과 443(HTTPS)을 사용합니다. 포트 443은 SSL/TLS를 통한 암호화된 통신을 제공하므로 HTTPS를 사용하는 것이 보안에 유리합니다.
예시: Listen 80
         Listen 443

 

ⅲ. User 및 Group
설명: Apache가 실행될 사용자 및 그룹을 지정합니다.
보안 설정: 가능한 최소 권한의 사용자와 그룹으로 설정하여, Apache 프로세스가 시스템의 다른 리소스에 접근하지 못하게 해야 합니다.
User apache
Group apache

 

ⅳ. DocumentRoot
설명: 웹 서버의 기본 문서(웹 페이지) 파일들이 위치하는 디렉토리를 지정합니다.
보안 설정: DocumentRoot 디렉토리는 읽기 전용 권한으로 설정하는 것이 좋으며, 실행 권한을 부여하지 않도록 해야 합니다. 또한, AllowOverride를 적절하게 설정하여 .htaccess 파일을 통한 설정 변경을 제한할 수 있습니다.
예시 : DocumentRoot "/var/www/html"
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

 

ⅴ. Options
설명: 디렉토리의 접근 방식(예: Indexes, FollowSymLinks, ExecCGI 등)을 정의합니다.
보안 설정: 불필요한 옵션을 비활성화하는 것이 중요합니다. 예를 들어, Indexes는 디렉토리 목록을 표시할 수 있으며, 이는 보안 위험이 될 수 있습니다.
예시 : Options -Indexes +FollowSymLinks

 

ⅵ. DirectoryIndex
설명: 디렉토리의 기본 페이지를 설정합니다. 예: index.html, index.php
보안 설정: 명시적으로 설정하지 않으면, 사용자가 서버의 디렉토리 구조를 탐색할 수 있어 보안 위험이 발생할 수 있습니다.
예시 : DirectoryIndex index.html index.php

 

ⅶ. AllowOverride
설명: 특정 디렉토리에서 .htaccess 파일을 통해 설정을 덮어쓸 수 있는지 여부를 결정합니다.
보안 설정: 보안을 강화하기 위해 기본적으로 AllowOverride None으로 설정하고, 필요한 경우에만 특정 디렉토리에서 덮어쓰기를 허용합니다.
예시: AllowOverride None

 

ⅷ. Require
설명: 접근 제어를 설정합니다. 예: 특정 IP, 그룹, 사용자가 서버에 접근할 수 있도록 설정합니다.
보안 설정: 민감한 디렉토리나 리소스에 대해 IP 기반 접근 제어를 설정하여 불필요한 접근을 제한할 수 있습니다.

예시:
<Directory "/var/www/private">
    Require ip 192.168.1.0/24
</Directory>

 

ⅸ. SSLEngine
설명: SSL/TLS를 통해 HTTPS를 활성화합니다.
보안 설정: HTTPS를 사용해 통신 암호화를 적용하여 민감한 정보가 전송 중에 유출되지 않도록 합니다.

예시:
SSLEngine on
SSLCertificateFile "/etc/pki/tls/certs/server.crt"
SSLCertificateKeyFile "/etc/pki/tls/private/server.key"

반응형