Nginx SQL 주입 방지, XSS 공격 의 실천 설정 방법

4790 단어
퇴근 할 때 블 로그 방문 이 느 리 고 504 오류 가 발생 한 것 을 발견 했다.CDN 서비스 에서 몇 개의 주요 IP 를 제한 하 는 효과 가 여전히 뚜렷 하지 않 은 것 은 악성 스 캔 에 의 해 공격 당 한 것 임 을 알 수 있다.서버 waf 의 로그 기록 분석 을 통 해 알 수 있 듯 이 기본적으로 SQL 주입, XSS 공격 범주 이다. 이런 공격 들 은 모두 CDN 캐 시 규칙 을 돌아 서 원본 으로 돌아 가 는 요청 을 한다. 이 로 인해 PHP, MySQL 연산 요청 이 점점 많아 지고 서버 부하 가 급증 하 는 것 이 바로 이 원인 이다. 로그 에서 거의 대부분이 GET / POST 형식의 요청 을 볼 수 있다.waf 가 완벽 하 게 인식 되 고 차단 되 었 지만 Nginx 차원 의 대응 조치 로 인해 서버 부하 에 일정한 압력 을 가 할 수 있 었 기 때문에 Nginx 에 도 SQL 주입, XSS 공격 을 방지 하 는 설정 을 넣 었 는데 효과 가 의외로 좋 을 줄 은 몰 랐 다.
다음 Nginx 프로필 코드 를 해당 사이트 의. conf 프로필 [server] 에 넣 고 Nginx 를 다시 시작 하면 유효 합 니 다.
 if ($request_method !~* GET|POST) { return 444; }
 #  444                 。
 #  SQL  
 if ($query_string ~* (\$|'|--|[+|(%20)]union[+|(%20)]|[+|(%20)]insert[+|(%20)]|[+|(%20)]drop[+|(%20)]|[+|(%20)]truncate[+|(%20)]|[+|(%20)]update[+|(%20)]|[+|(%20)]from[+|(%20)]|[+|(%20)]grant[+|(%20)]|[+|(%20)]exec[+|(%20)]|[+|(%20)]where[+|(%20)]|[+|(%20)]select[+|(%20)]|[+|(%20)]and[+|(%20)]|[+|(%20)]or[+|(%20)]|[+|(%20)]count[+|(%20)]|[+|(%20)]exec[+|(%20)]|[+|(%20)]chr[+|(%20)]|[+|(%20)]mid[+|(%20)]|[+|(%20)]like[+|(%20)]|[+|(%20)]iframe[+|(%20)]|[\|%3e]|javascript|alert|webscan|dbappsecurity|style|confirm\(|innerhtml|innertext)(.*)$) { return 555; }
 if ($uri ~* (/~).*) { return 501; }
 if ($uri ~* (\\x.)) { return 501; }
 #  SQL   
 if ($query_string ~* "[;'<>].*") { return 509; }
 if ($request_uri ~ " ") { return 509; }
 if ($request_uri ~ (\/\.+)) { return 509; }
 if ($request_uri ~ (\.+\/)) { return 509; }
 
 #if ($uri ~* (insert|select|delete|update|count|master|truncate|declare|exec|\*|\')(.*)$ ) { return 503; }
 #  SQL  
 if ($request_uri ~* "(cost\()|(concat\()") { return 504; }
 if ($request_uri ~* "[+|(%20)]union[+|(%20)]") { return 504; }
 if ($request_uri ~* "[+|(%20)]and[+|(%20)]") { return 504; }
 if ($request_uri ~* "[+|(%20)]select[+|(%20)]") { return 504; }
 if ($request_uri ~* "[+|(%20)]or[+|(%20)]") { return 504; }
 if ($request_uri ~* "[+|(%20)]delete[+|(%20)]") { return 504; }
 if ($request_uri ~* "[+|(%20)]update[+|(%20)]") { return 504; }
 if ($request_uri ~* "[+|(%20)]insert[+|(%20)]") { return 504; }
 if ($query_string ~ "(|%3E)") { return 505; }
 if ($query_string ~ "GLOBALS(=|\[|\%[0-9A-Z]{0,2})") { return 505; }
 if ($query_string ~ "_REQUEST(=|\[|\%[0-9A-Z]{0,2})") { return 505; }
 if ($query_string ~ "proc/self/environ") { return 505; }
 if ($query_string ~ "mosConfig_[a-zA-Z_]{1,21}(=|\%3D)") { return 505; }
 if ($query_string ~ "base64_(en|de)code\(.*\)") { return 505; }
 if ($query_string ~ "[a-zA-Z0-9_]=http://") { return 506; }
 if ($query_string ~ "[a-zA-Z0-9_]=(\.\.//?)+") { return 506; }
 if ($query_string ~ "[a-zA-Z0-9_]=/([a-z0-9_.]//?)+") { return 506; }
 if ($query_string ~ "b(ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo)b") { return 507; }
 if ($query_string ~ "b(erections|hoodia|huronriveracres|impotence|levitra|libido)b") {return 507; }
 if ($query_string ~ "b(ambien|bluespill|cialis|cocaine|ejaculation|erectile)b") { return 507; }
 if ($query_string ~ "b(lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)b") { return 507; }
 #                    ,cURL、wget           ,  “      ,      ”。
 if ($http_user_agent ~* YisouSpider|ApacheBench|WebBench|Jmeter|JoeDog|Havij|GetRight|TurnitinBot|GrabNet|masscan|mail2000|github|wget|curl|Java|python) { return 508; }
 #  ,                          。
 if ($http_user_agent ~* "Go-Ahead-Got-It") { return 508; }
 if ($http_user_agent ~* "GetWeb!") { return 508; }
 if ($http_user_agent ~* "Go!Zilla") { return 508; }
 if ($http_user_agent ~* "Download Demon") { return 508; }
 if ($http_user_agent ~* "Indy Library") { return 508; }
 if ($http_user_agent ~* "libwww-perl") { return 508; }
 if ($http_user_agent ~* "Nmap Scripting Engine") { return 508; }
 if ($http_user_agent ~* "~17ce.com") { return 508; }
 if ($http_user_agent ~* "WebBench*") { return 508; }
 if ($http_user_agent ~* "spider") { return 508; } #               ,  :  
 #        UA,              waf        。
 if ($http_referer ~* 17ce.com) { return 509; }
 #  17ce.com         ,                          。
 if ($http_referer ~* WebBench*") { return 509; }
 #  WebBench          ,             。

하룻밤 의 테스트 와 체험 을 통 해 상기 코드 의 운행 이 안정 적 이 고 서버 의 방화벽 규칙 과 waf 의 차단 과 차단 을 결합 하여 현재 사이트 가 모두 정상 으로 회복 되 었 고 서버 부하 도 정상 범위 이다.
성명: 본 고 는 글 을 옮 기기 위해 분실 을 방지 하기 위해 이 백업 을 합 니 다.원본 주소:https://www.imydl.tech/lnmp/762.html
다음으로 전송:https://www.cnblogs.com/xianhenyuan/p/11085210.html

좋은 웹페이지 즐겨찾기