정기 취약점 점검에서 Apache HTTPD 에 대해 반복적으로 나오는 지적과 그 대응이다. 지적 항목은 대개 설정 강화, 버전, 정보 노출 세 갈래다. 점검 도구는 설정 파일의 문자열과 응답 배너만 보므로, 실제 위험과 지적이 일치하지 않는 경우가 있다. 항목마다 실제 상태를 확인한 뒤 조치한다.
모든 변경 뒤에는 문법 검사를 먼저 한다.
apachectl configtest
sudo systemctl reload httpd
.htaccess 로 디렉터리 단위 설정을 덮어쓰게 허용하는 지시어다. 점검 기준은 보통 None 또는 AuthConfig 다.
<Directory "/home/*/public_html">
AllowOverride None
Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
AllowOverride FileInfo AuthConfig Limit 은 .htaccess 에서 핸들러·인증·접근 제어를 모두 바꿀 수 있다는 뜻이라 지적된다. 인증 설정만 위임해야 하면 AuthConfig 로 좁히고, 그럴 필요가 없으면 None 으로 둔다. None 은 성능에도 이롭다 — 요청마다 상위 디렉터리를 거슬러 올라가며 .htaccess 를 찾는 일이 사라진다.
점검 보고서에 붙은 설정을 그대로 복사해 넣지 않는다. 실제 파일과 대조해 보면 보고서 쪽 표기가 깨져 있는 경우가 있다 — AllowOveride, Filelnfo, SymLinkslfOwnerMatch 처럼 문자가 잘못 옮겨진 것들이다. 이런 이름은 Apache 가 인식하지 못해 기동 자체가 실패한다.
AH00526: Syntax error on line 12 of /etc/httpd/conf.d/userdir.conf:
Invalid command 'AllowOveride', perhaps misspelled or defined by a module not included in the server configuration
/~사용자명/ 경로로 홈 디렉터리를 서비스하는 기능이다. 계정 존재 여부가 드러나므로 쓰지 않으면 끈다. RHEL 계열의 기본값은 이미 꺼져 있다.
<IfModule mod_userdir.c>
UserDir disabled
</IfModule>
응답 헤더와 오류 페이지에서 버전을 지운다.
ServerTokens Prod
ServerSignature Off
TraceEnable Off
버전 항목이 까다롭다. 점검 기준이 "2.4.59 보다 높은 버전" 인데 서버가 Apache/2.4.6 (Red Hat Enterprise Linux) 라고 답하면 자동으로 취약 판정이 난다. 그러나 RHEL · Rocky 같은 배포판은 상위 버전 번호를 올리지 않고 보안 패치만 역이식(backport) 하므로, 배너 숫자만으로는 실제 취약 여부를 알 수 없다. 해당 CVE 가 패키지에 반영됐는지 직접 확인한다.
rpm -q httpd
rpm -q --changelog httpd | grep -i 'CVE-' | head -40
changelog 에 해당 CVE 가 있으면 조치된 것이고, 그 근거를 점검 대응서에 적는다. 없으면 패키지를 올린다.
sudo dnf update httpd
배포판 패키지로 기준 버전을 맞출 수 없고 소스 빌드도 불가능한 상황이면, 위험을 낮추는 완화책(취약 모듈 비활성화, 앞단 WAF·리버스 프록시)과 함께 예외 승인 절차를 밟는 편이 낫다. 벤더 제품(예: 상용 분석 플랫폼)이 자체 httpd 를 포함해 배포하는 경우, 그 httpd 를 임의로 교체하면 지원을 받지 못하게 되므로 반드시 벤더 지침을 먼저 확인한다. 참고로 Apache HTTP Server 의 현행 정식 버전은 2.4.68 이다[1].
업로드 크기를 제한하지 않는 것도 자주 지적된다. 반대로 대용량 업로드가 필요한 애플리케이션(파일 브라우저 · 데이터 업로드 화면)이 프록시 뒤에 있으면 이 값 때문에 413 이 난다.
<Directory "/var/www/html/uploads">
LimitRequestBody 104857600
</Directory>
단위는 바이트이고 0 은 무제한이다. 기본값이 0 이므로 명시적으로 값을 주는 편이 점검에도 운영에도 낫다. 업로드가 커지면 전송 시간도 길어지므로 Timeout 과 프록시 쪽 타임아웃을 함께 올린다. Apache 가 리버스 프록시일 때는 백엔드(WSGI · Tomcat · PHP)의 자체 제한도 따로 있으므로 한쪽만 올려서는 효과가 없다.
디렉터리 목록 노출을 막는다.
<Directory "/var/www/html">
Options -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
</Directory>
불필요한 HTTP 메서드를 막는다.
<LimitExcept GET POST HEAD>
Require all denied
</LimitExcept>
전용 계정으로 구동하는지 확인한다. User/Group 이 root 면 지적 대상이다.
User apache
Group apache
최신 버전 2.4.68 — 2026-09-20 확인. https://httpd.apache.org/download.cgi ↩︎