2017年7月10日月曜日

redmine 업로드 파일 조절

redmine이 있는 서버에 mod_security를 인스톨 하게 되면, 갑자기 큰 파일이 upload가 되지 않는 경우가 잇습니다.
그 이유를 간단하게 설명 해보려 합니다.
mod_security는 여러분들이 알고 계시는 유명한 OSS WAF입니다.
여기서는 WAF의 자세한 이야기는 하지 않도록 하겠습니다.
파일가 upload가 되지 않을 경우 mod_security.conf파일을 설정하여 고치는 방법을 설명하겠습니다.

1.128K이상의 파일이 upload안되는 경우.

이경우는 modsecury.conf파일의 SecRequestBodyInMemoryLimit가 원인입니다.
Default은 131072 = 128K입니다. 128K까지는 메모리에서 관리하고 있어 특별하게 문제 되지는 않습니다. 하지만 128K를 넘어가게 되면 일시 보존 하는 영역이 필요하게 됩니다. 그러나 그영역을 사용하지 못할때는 파일이 업로드 되질 않게 됩니다.

  에러 내용은
  1) redmine의 WEB페이지에서 Internal Server Error가 표시됩니다.
  2) 아파치의 error_log 파일에 ModSecurity: Input filter: Failed to delete temporary file: /var/lib/mod_security/20170705-221423-WVzmL4sPzhG615I03jCL0gAAAAo-request_body-aP6VqV 와 같이 쓰여짐니다.

 대책:SecRequestBodyInMemoryLimit을 크게 합니다. 그러나, 물리적 메모리의 사이즈는 한계가 있으므로/var/lib/mod_security/의 폴더의 권한을 httpd를 실행하는 유져가 쓸수 있는 권한을 주든지 아니면 아파치 실행유져로 OWNER을 변경해 주십시요.

2.12.5M이상의 파일이 업로드가 안될때.

1번을 해결하고 나서 또 에러가 나는 경우 입니다.
그 이유는 mod_security.conf파일에 있는 SecRequestBodyLimit값이 원인 입니다.
  Default은 13107200 = 12.5M입니다. 이 변수의 의미는 첨부 파일을 포함한 사이즈가 12.5M이상인 경우에는 업로드가 안되게 하는 변수 입니다.

  에러 내용은
  1) redmine의 WEBページ에 Request Entity Too Large가 표시됩니다.
  2) 아피치의 error_log파일에서는 ModSecurity: Request body (Content-Length) is larger than the configured limit (13107200). 가 쓰여져 있습니다.

 대책:SecRequestBodyLimit의 값을 redmine의 첨부 파일 값과 같이 하거나 더 크게 해 주십시요.

이상 입니다.

0 件のコメント: