WEB-08 웹서비스파일업로드및다운로드용량제한
가이드라인 원문
| 항목 | 내용 |
|---|---|
| 항목코드 | WEB-08 |
| 점검내용 | 파일업로드및다운로드의용량제한설정여부점검 |
| 점검대상 | Apache, Tomcat, Nginx, IIS, JEUS, WebtoB |
| 판단기준 | 양호: 파일업로드및다운로드용량을제한한경우 |
| 판단기준 | 취약: 파일업로드및다운로드용량을제한하지않은경로 |
| 조치방법 | 파일업로드및다운로드용량을허용가능한최소범위로제한하여설정 |
상세 설명
1. 항목 개요
파일 업로드/다운로드 용량 제한은 웹 서비스의 가용성과 보안을 위한 중요한 설정입니다. 용량 제한이 없으면 공격자는 대용량 파일을 반복적으로 업로드하여 서버 디스크 공간을 가득 채우거나, 서버 자원(CPU, 메모리, 네트워크 대역폭)을 고갈시켜 서비스 거부(DoS) 공격을 할 수 있습니다. 마치 트럭이 다리를 통과할 때 무게 제한을 두어 다리 무너짐을 방지하는 것과 같습니다. 용량 제한은 서버 안정성의 필수 요소입니다.
2. 왜 이 항목이 필요한가요?
실제 시나리오:
- 공격자가 용량 제한이 없는 파일 업로드 기능을 발견합니다.
- 10GB 크기의 파일을 연속적으로 업로드하여 디스크 공간을 가득 채웁니다.
- 서버가 정상적으로 작동하지 못하게 되어 서비스 거부 상태가 됩니다.
- 또는 웹쉘(용량이 작은 악성 스크립트)을 업로드하여 서버를 장악합니다.
용량 제한이 필요한 이유:
- 디스크 공간 보호: 대용량 파일 업로드로 인한 디스크 고갈 방지
- 서버 자원 보호: 메모리, CPU, 네트워크 대역폭 과부하 방지
- 웹쉘 업로드 방지: 악성 스크립트 업로드 시도 차단
- 서비스 안정성: 정상 사용자의 서비스 이용 보장
보안 위협:
- DoS(Denial of Service) 공격: 대용량 파일 업로드로 서버 다운
- 디스크 공간 고갈: 로그, 데이터베이스 등 정상 기능 마비
- 웹쉘 업로드: 시스템 권한 탈취
- 서버 자원 독점: 다른 사용자 서비스 저하
3. 점검 대상
- Apache: Apache HTTP Server
- Tomcat: Apache Tomcat 웹 서버
- Nginx: Nginx 웹 서버
- IIS: Microsoft Internet Information Services
- JEUS: Tmax JEUS 웹 애플리케이션 서버
- WebtoB: Tmax WebtoB 웹 서버
4. 판단 기준
- 양호: 파일 업로드 및 다운로드 용량을 제한한 경우
- 취약: 파일 업로드 및 다운로드 용량을 제한하지 않은 경우
5. 점검 방법
Apache
| |
Tomcat
| |
Nginx
| |
6. 조치 방법
Apache
Step 1) 설정 파일 내 LimitRequestBody 지시자에서 파일 용량 제한 설정
| |
| |
Tomcat
Step 1) server.xml 파일 내 maxPostSize 요소 설정
| |
| |
Step 2) web.xml 파일 내 multipart-config 요소 설정
| |
| |
Nginx
Step 1) nginx.conf 파일 내 client_max_body_size 설정
| |
| |
Step 2) Nginx 데몬 재구동
| |
IIS
Step 1) 루트 디렉터리 web.config 파일 내 maxAllowedContentLength 설정 확인
파일 탐색기에서 사이트 루트 디렉터리의 web.config 파일 확인
Step 2) 루트 디렉터리 web.config 파일 내 maxAllowedContentLength 제한 설정
| |
Step 3) applicationHost.config 파일 내 bufferingLimit 및 maxRequestEntityAllowed 설정
| |
참고: web.config 파일이 없으면 사이트 홈 디렉터리에 새로 생성합니다.
JEUS
Step 1) web.xml 파일 내 max-file-size 지시자에서 파일 용량 제한 설정
| |
| |
참고: 출력값이 존재하지 않는 경우 용량을 제한하고 있지 않은 상태로 취약합니다.
WebtoB
Step 1) LimitRequestBody 지시자를 사용하여 파일 업로드 및 다운로드 용량 제한 설정
| |
| |
참고: 업로드 및 다운로드 파일이 5MB를 넘지 않도록 설정을 권고합니다.
7. 조치 시 주의사항
- 일반적인 경우 영향이 없습니다.
- 업무상 대용량 파일 업로드가 필요한 경우, 해당 기능에 한해 적절한 용량으로 설정하세요.
- 너무 낮게 설정할 경우 정상적인 파일 업로드가 차단될 수 있습니다.
- 설정 변경 후 정상 파일 업로드가 가능한지 테스트해야 합니다.
- 사용자에게 용량 제한에 대한 안내를 하는 것을 권장합니다.
8. 참고 자료
- Apache Core Features: https://httpd.apache.org/docs/current/mod/core.html#limitrequestbody
- Nginx Module ngx_http_core_module: https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
- IIS Request Limits: https://docs.microsoft.com/en-us/iis/configuration/system.webServer/security/requestFiltering/requestLimits
요약
파일 업로드 및 다운로드 용량을 제한하여 서버 자원 고갈을 방지하고 웹쉘 업로드 등의 보안 위협을 차단해야 합니다.