ngx_lua_waf
ngx_lua_waf 펀 트래블에 처음 합류했을 때 개발된 ngx_lua 기반 웹 애플리케이션 방화벽입니다.
코드는 단순하며, 개발의 원래 의도는 단순함, 고성능, 경량화를 사용하는 것입니다.
현재는 오픈 소스이며 MIT 라이선스를 준수합니다. 여기에는 우리의 필터링 규칙이 포함되어 있습니다. 조언이 있거나 FA를 원한다면, 언제든지 저와 함께 개선해 주세요.
용도:
SQL 인젝션, 로컬 포함, 부분 오버플로우, 퍼징 테스트, xss, SSRF 등과 같은 웹 공격을 방지합니다 SVN/백업과 같은 파일 유출을 방지하세요 ApacheBench와 같은 스트레스 테스트 도구의 공격을 방지하세요 일반적인 스캔 해킹 도구, 스캐너를 차단하세요 비정상적인 네트워크 요청을 차단합니다 이미지 첨부 디렉터리의 PHP 실행 권한을 차단하세요 웹셸 업로드를 방지하세요
권장 설치:
lua 지원은 lujit2.1을 사용하는 것이 권장됩니다
ngx_lua 0.9.2 버전 이상이라면 일반 필터 기능을 ngx.re.find로 변경하는 것이 권장되며, 매칭 효율은 약 3배 증가합니다.
사용 설명서:
nginx 설치 경로는 /usr/local/nginx/conf/ 로 가정됩니다.
ngx_lua_waf를 conf 디렉터리에 다운로드한 후 압축을 풀고 waf라고 이름 붙이세요
nginx.conf의 http 섹션에 추가하세요
config.lua에서 WAF 규칙 디렉터리를 설정하세요(보통 waf/conf/ 디렉터리에 있습니다).
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
절대 경로가 변하면 그에 맞게 수정해야 합니다
그 다음 nginx를 재시작
프로필 정보:
RulePath = "/usr/local/nginx/conf/waf/wafconf/" --규칙 저장 디렉터리 attacklog = "꺼짐" --공격 정보 기록을 활성화하려면 logdir를 설정해야 합니다 logdir = "/usr/local/nginx/logs/hack/" --log 저장 디렉터리는 사용자가 직접 생성해야 하며, nginx 사용자의 쓰기 권한이 필요합니다 UrlDeny="온" --URL 접근 차단 여부 리다이렉트="온" --가로채기 후 방향을 바꿀지 여부 쿠키매치 = "켜" --쿠키 공격을 차단할지 여부 postMatch = "온" --포스트 공격을 막을 것인가 whiteModule = "켜" --URL 화이트리스트를 켤지 여부 black_fileExt={"php","jsp"} --업로드가 허용되지 않는 파일 접미사 유형을 채우세요 ipWhitelist={"127.0.0.1"} --IP 화이트리스트, 여러 IP는 쉼표로 구분됩니다 ipBlocklist={"1.0.0.1"} --IP 블랙리스트, 여러 IP가 쉼표로 구분되어 있습니다 CCDeny="on" --cc 공격 가로채기를 활성화할지 여부 (nginx.conf의 HTTP 구간을 10m lua_shared_dict 증가해야 함; ) CCrate = "100/60" --CC 공격 주파수를 초 단위로 설정하세요. --기본적으로 동일한 IP 주소는 분당 100회만 같은 주소를 요청할 수 있습니다 html=[[제발 가주세요~~]] --경고 내용, 괄호 안에 맞춤 가능 참고: 대소문자를 구분하기 위해 이중 따옴표를 사용하지 마세요
규칙이 적용되는지 확인해 보세요
배치 후에는 다음 명령을 시도해 볼 수 있습니다:
참고: 기본적으로 기기는 화이트리스트에서 필터링하지 않으며, config.lua 설정을 직접 조정할 수 있습니다
렌더링은 다음과 같습니다:
규칙 업데이트:
정규 규칙의 캐싱 문제를 고려하면, 동적 규칙은 성능에 영향을 주기 때문에 동적 관리에는 공유 메모리 사전이나 레디스 같은 것을 사용하지 않습니다.
규칙 업데이트는 다른 서버에 배치할 수 있으며, crontab 작업을 통해 규칙을 정기적으로 다운로드하면 nginx 재로드가 적용됩니다. NGX LUA WAF의 높은 성능을 보장하기 위해서입니다.
필터 로그만 기록하고, 필터링을 켜지 말고, 코드 앞에 -- 주석만 추가하세요. 필터링이 필요하면 그 반대도 마찬가지입니다
몇 가지 주석:
필터링 규칙은 wafconf에서 필요에 따라 조정할 수 있으며, 각 규칙은 |
ARGS 규칙은 필터를 위한 매개변수를 가져옵니다 URL은 GET로 필터링된 URL만 요청하는 규칙입니다 게시물은 게시물 요청에만 필터링 규칙으로 사용됩니다 화이트리스트는 화이트리스트이며, 그 안의 URL이 일치하여 필터링되지 않습니다 User-agent는 user-agent를 필터링하는 규칙입니다
기본적으로 받기 및 게시 필터링이 활성화되어 있으니, 쿠키 필터링이 필요하면 waf.lua 취소 부분을 수정해 주세요 - 댓글 주세요
로그 파일 이름 형식은 다음과 같습니다: 웹 호스트 이름 _sec.log
|