############################# # < 웹호스팅 업체용 > # # 이 Rule은 다수의 웹사이트가 운영되는 웹호스팅 서버에서 활용가능한 최소공격차단 Rule입니다. # 이 Rule을 참고하여 각 웹사이트에 적합한 Rule로 커스트마이징하시기 바랍니다. # Rule 커스트마이징 후에는 공격탐지시 차단하도록 SecFilterSignatureAction 에서 # pass를 deny로 수정하시기 바랍니다. # # Update : '09. 03. 11 # - 2.x 버전용 샘플룰 오류 수정 # - Mass SQL Injection 시그니쳐 추가 # - WebShell 시그니쳐 추가 # - 공개 게시판 솔루션 신규 취약점 추가 # - Tomcat, Oracle, MySQL, MSSQL 시그니쳐 추가 # ############################# ############################# # 1. ModSecurity 동작 유/무 # SecFilterEngine On | Off # On : ModSecurity 기능 활성화 # Off : ModSecurity 기능 비활성화 SecFilterEngine On ############################# # 2. 기본 설정 # 기본적으로 룰이 매치 될 경우 행위(Action) 지정 # # 실질적인 공격패턴에 대한 SignatureAction 지정 # SecFilterSignatureAction "행위" # 행위 : deny, pass, allow, status:apache error code, redirect:/error.html # # 룰 커스트마이징 완료 후 공격탐지시 차단되도록 Action의 pass를 deny로 수정 필요 SecFilterSignatureAction "deny,log,status:406" #SecFilterSignatureAction "pass,log" # 아파치의 기본 로그보다 자세한 공격관련 로그를 기록 SecAuditEngine RelevantOnly SecAuditLog logs/modsec_audit.log # 로그의 양을 줄이기 위해 필요한 4xx 또는 5xx 관련 에러만 남긴다. 404 Not Found는 남기지 않는다. # Apache 1.x 버전에서는 아래 옵션 사용 SecAuditLogRelevantStatus "^([45]\d[^4])" # Apache 2.x 버전에서는 아래 옵션 사용 #SecAuditLogRelevantStatus "^(?:5|4\d[^4])" # 웹서버의 헤더 정보 변경 SecServerSignature "Microsoft-IIS/5.0" # POST 메소드의 Payload를 점검 # 호스팅업체와 같은 다수사이트에 적용시 충분한 검토 후에 On 설정 SecFilterScanPost Off # 인코딩된 문자를 일반 텍스트 문자로 변환 # 가령, 16진수로 인코딩된 %AB 형태를 일반 텍스트로 변환함 SecFilterCheckURLEncoding On # SecFilterCheckUnicodeEncoding UTF-8 전용 서버일 경우 On SecFilterCheckUnicodeEncoding Off # 다음의 메소드 이외에는 허용하지 않음. SecFilterSelective REQUEST_METHOD "!(GET|POST|HEAD|OPTIONS)" "deny, log" # Stack Overflow 공격에 대한 Byte 제한 SecFilterForceByteRange 1 255 ############################# # 3. PHP 인젝션 취약 공격 방지(공개 게시판 솔루션 대상 공격 포함) SecFilterSelective REQUEST_URI "\.php\?" chain SecFilterSelective REQUEST_URI "(dir|page)" chain SecFilterSelective REQUEST_URI "=(http|https|ftp)\:/" "msg:'PHP Injection Attacks'" SecFilterSelective REQUEST_URI "/include/write\.php\?dir=(ftp|http):" "msg:'PHP Injection Attacks'" SecFilterSelective REQUEST_URI "/include/print_category\.php\?setup=1&dir=(ftp|http):" "msg:'PHP Injection Attacks'" SecFilterSelective REQUEST_URI "/zero_vote/error\.php\?dir=(ftp|http):" "msg:'PHP Injection Attacks'" SecFilterSelective REQUEST_URI "/outlogin\.php\?_zb_path=(ftp|http):" "msg:'PHP Injection Attacks'" SecFilterSelective REQUEST_URI "filename=\|" "msg:'PHP Injection Attacks'" SecFilterSelective REQUEST_URI "check_user_id\.php\?user_id=