본문 바로가기
인프라 진단/전자금융기반시설(서버) - Tomcat

SRV-044 (Tomcat) 웹 서비스 파일 업로드 및 다운로드 용량 제한 미설정

by 49 BLOCK 2024. 1. 2.

notice

SRV-044 (Tomcat) 웹 서비스 파일 업로드 및 다운로드 용량 제한 미설정

【 상세설명 】
웹 서버에 불필요한 대량의 파일 업로드, 다운로드로 인한 서비스 거부 공격 위협이 존재하므로, 서버에 영향을 줄 정도의 대량의 업로드와 다운로드에 대한 통제 여부를 점검 

【 판단기준 】
- 양호 : 파일 업로드 및 다운로드 용량 제한이 설정이 되어 있을 경우
- 취약 : 파일 업로드 및 다운로드 용량 제한이 설정이 안되어 있을 경우

【 판단방법 】
1. 웹 서비스 설정 파일에서 웹 서비스 파일 업로드 및 다운로드 용량 제한 설정 확인
    ※ Connector 설정 내 “maxSwallowSize”, “maxPostSize” 설정 확인("unlimited" 설정 시 "취약")
2. (웹 콘솔을 사용하는 경우) 웹 서비스 콘솔의 업로드 및 다운로드 파일 크기 설정 확인
    ※ manage 콘솔 설정 파일에서 “max-file-size“, “max-request-size” 설정 확인("unlimited" 설정 시 "취약")

  ■ Linux, AIX, HP-UX, SOLARIS
      # cat $CATALINA_HOME/server.xml
      # cat $CATALINA_HOME/conf/server.xml
          <Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443"
              maxParameterCount="1000"
              />

      # cat $CATALINA_HOME/webapps/manager/WEB-INF/web.xml
           <servlet>
               <servlet-name>HTMLManager</servlet-name>
               ...
               <multipart-config>
                  <!-- 50MB max -->
                  <max-file-size>52428800</max-file-size>
                  <max-request-size>52428800</max-request-size>
                  <file-size-threshold>0</file-size-threshold>
              </multipart-config>
          </servlet>

      ※ Tomcat 을 패키지 관리자(apt, yum, dnf 등)로 설치하는 경우 $CATALINA_HOME 경로는  "/etc/tomcat<version>", "/usr/local/tomcat<version>"  등
      ※ Tomcat 을 Source 파일이나 package 파일로 직접 설치하는 경우 임의 경로를 $CATALINA_HOME 으로 설치 가능

  ■ Windows
      cmd > notepad %CATALINA_HOME%\server.xml
      cmd > notepad %CATALINA_HOME%\config\server.xml
          <Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443"
              maxParameterCount="1000"
              />

      cmd > notepad %CATALINA_HOME%\webapps\manager\WEB-INF\web.xml
           <servlet>
               <servlet-name>HTMLManager</servlet-name>
               ...
               <multipart-config>
                  <!-- 50MB max -->
                  <max-file-size>52428800</max-file-size>
                  <max-request-size>52428800</max-request-size>
                  <file-size-threshold>0</file-size-threshold>
              </multipart-config>
          </servlet>

  ※ Tomcat 지시자 Value 처리는  7.0.63 이하 버전에서는 "0"을 "unlimited"으로 처리했으나 7.0.63 이상 버전부터 "0"은 "null", "-1"은 "unlimited"으로 처리

  ※ Connector 관련 지시자
      - maxSwallowSize 지시자(Default : 2097152(2MB), Unlimited : -1) : request body 사이즈를 제한하는 설정으로 바이트 단위로 설정
      - maxPostSize 지시자(Default : 2097152(2MB), Unlimited : -1) : POST 사이즈를 제한하는 설정으로 바이트 단위로 설정
      - connectionTimeout 지시자(Default : 60000(60s), none : 20000(20s), Unlimited : -1) : 커넥터 연결 시간 타임아웃 설정으로 밀리초 단위로 설정
      - disableUploadTimeout 지시자 : connectionTimeout 설정 활성화 설정(True : 미적용, False : 적용)

  ※ manager 콘솔 관련 지시자
      - location 지시자 : manager 콘솔에서 업로드된 파일이 저장되는 디렉터리 지정 설정(none : temporary directory)
      - max-file-size 지시자(Default : 52428800(50MB), none : 1048576(1MB), Unlimited : -1) : manager 콘솔 업로드 크기 제한 설정으로 바이트 단위로 설정
      - max-request-size 지시자(Default : 52428800(50MB), none : 10485760(10MB), Unlimited : -1) : manager 콘솔 multipart/form-data 요청 크기 제한 설정으로 바이트 단위로 설정
      - multipart/form-data : HTTP Request Content-type
      - file-size-threshold 지시자(Default : 0) : 디스크에 기록되는 파일 크기 임계값 설정으로 바이트 단위로 설정(Default : 0)

【 조치방법 】
1. 웹 서비스 설정 파일에서 웹 서비스 파일 업로드 및 다운로드 용량 제한 설정
    ※ Connector 에서 “maxSwallowSize”, “maxPostSize” 설정
2. (웹 콘솔을 사용하는 경우) 웹 서비스 콘솔의 업로드 및 다운로드 파일 크기 설정
    ※ manage 콘솔 설정 파일에서 “max-file-size“, “max-request-size” 설정
3. 웹 서비스 재시작

2024-01-13 : (조치과정 삭제)