매일 업데이트
2022-11-26 20:27 5 min

Apache 웹 서버를 보호하고 강화하는 10가지 모범 사례

Apache 웹 서버 보안 강화 및 최적화 전략

웹 애플리케이션의 핵심 구성 요소인 웹 서버의 보안은 매우 중요합니다. Apache 웹 서버의 기본 설정은 민감한 정보 노출과 같은 심각한 보안 위협을 초래할 수 있습니다. 따라서 웹사이트 소유자 및 관리자는 잠재적인 위협 요소에 선제적으로 대응하기 위해 주기적인 보안 점검을 실시해야 합니다.

이제 Apache 웹 서버 보안을 위한 필수 설정들을 살펴보겠습니다. 모든 설정은 Apache 인스턴스의 핵심 구성 파일인 'httpd.conf'에 위치합니다. 변경 작업 전에 구성 파일 백업은 필수이며, 잘못된 설정 시 복구할 수 있도록 준비해야 합니다.

TRACE HTTP 요청 비활성화

기본적으로 활성화된 'TraceEnable on' 설정은 TRACE 메서드를 허용하여 사이트 간 추적(Cross-Site Tracing) 공격에 취약하게 만듭니다. 공격자는 이 취약점을 악용하여 쿠키 정보를 탈취할 수 있습니다. 'TraceEnable off' 설정을 통해 클라이언트 요청에 405 (허용되지 않는 메서드) 오류를 반환하도록 설정해야 합니다.

해결책

httpd.conf 파일에서 다음 설정을 추가하거나 수정하여 TRACE HTTP 메서드를 비활성화합니다.

TraceEnable off

별도 사용자 및 그룹으로 실행

Apache는 기본적으로 'nobody' 또는 'daemon' 사용자로 실행되도록 설정되어 있습니다. 보안상 중요한 요소이므로 루트 권한으로 실행하지 않아야 합니다.

해결책

httpd.conf 파일에서 Apache를 루트 권한이 없는 별도의 사용자 계정으로 실행되도록 설정합니다.

User apache
Group apache

서명 비활성화

'ServerSignature On' 설정은 서버 버전 정보와 가상 호스트 이름을 노출합니다. 이러한 정보는 불필요하게 공격자에게 제공될 수 있습니다.

해결책

httpd.conf 파일에서 다음 설정을 통해 서버 서명을 비활성화합니다.

ServerSignature Off

배너 정보 비활성화

서버 응답 헤더에 운영 체제 유형과 컴파일된 모듈 정보를 노출하는 설정은 공격자에게 중요한 정보를 제공합니다.

해결책

httpd.conf 파일에서 다음 설정을 통해 배너 정보를 비활성화합니다.

ServerTokens Prod

특정 네트워크 또는 IP 주소로 접근 제한

특정 IP 주소나 네트워크에서만 웹사이트에 접근할 수 있도록 제한할 수 있습니다. 이는 웹사이트 보안을 강화하는 데 효과적인 방법입니다.

해결책

httpd.conf 파일에서 웹사이트 디렉토리에 대한 접근 권한을 다음과 같이 설정합니다. 특정 네트워크 대역에 대한 접근 허용:

<Directory /yourwebsite>
    Options None
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 10.20.0.0/24
</Directory>

특정 IP 주소에 대한 접근 허용:

<Directory /yourwebsite>
    Options None
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 10.20.1.56
</Directory>

TLS 1.2 이상 프로토콜만 사용

SSL 2.0, 3.0, TLS 1, 1.1과 같은 오래된 프로토콜은 암호화 취약점을 가지고 있습니다. 따라서 TLS 1.2 이상 프로토콜만 사용하도록 설정해야 합니다.

해결책

httpd.conf 파일에서 다음 설정을 통해 TLS 1.2 이상 프로토콜만 사용하도록 설정합니다.

SSLProtocol -ALL +TLSv1.2

디렉토리 목록 비활성화

웹사이트 디렉토리에 'index.html' 파일이 없는 경우, 디렉토리 내 모든 파일과 하위 디렉토리가 브라우저에 표시될 수 있습니다. 이는 보안상 위험을 초래합니다.

해결책

httpd.conf 파일에서 디렉토리 목록 기능을 비활성화합니다. Option 지시문을 사용하여 다음과 같이 설정합니다.

<Directory />
Options None
Order allow,deny
Allow from all
</Directory>

또는

<Directory />
Options -Indexes
Order allow,deny
Allow from all
</Directory>

불필요한 DSO 모듈 제거

불필요한 DSO(Dynamic Shared Object) 모듈은 보안 취약점을 만들 수 있습니다. 활성화된 모듈을 검토하고 사용하지 않는 모듈은 제거해야 합니다.

취약한 암호화 방식 비활성화

보안 강도가 낮은 암호화 방식은 공격에 취약할 수 있습니다. 강력한 암호화 방식만 허용하도록 설정해야 합니다.

해결책

httpd.conf 파일에서 다음 설정을 통해 취약한 암호화 방식을 비활성화합니다.

SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM

최신 버전 유지

Apache는 활발히 개발되는 오픈 소스 프로젝트이므로 최신 버전을 유지하는 것이 중요합니다. 새로운 보안 패치 및 기능 개선이 지속적으로 업데이트에 포함됩니다.

위에 제시된 설정 외에도 더욱 심층적인 보안 강화 방법들이 있습니다. Apache 웹 서버 보안 강화에 대한 자세한 내용은 다른 자료들을 참조하시기 바랍니다.

이 글이 도움이 되셨다면 다른 사람들과도 공유해 주시기 바랍니다.

저자
Korea

기술 트렌드와 실용적인 팁을 전하는 लेखक입니다.