nginx Lua 모듈 Taobao는 nginx 서드파티 모듈인 nginx를 개발했으며, 이 모듈은 nginx 구성에 lua 언어를 삽입할 수 있어 Lua 사용이 nginx의 능력을 크게 향상시킵니다. nginx는 높은 동시성으로 유명하며, Lua 스크립트는 가볍고, 두 가지의 조합이 완벽합니다.
GitHub 주소: https://github.com/loveshell/ngx_lua_waf
###用途:
- SQL 인젝션, 로컬 포함, 부분 오버플로우, 퍼징 테스트, xss, SSRF 등과 같은 웹 공격을 방지합니다
- SVN/백업과 같은 파일 유출을 방지하세요
- ApacheBench와 같은 스트레스 테스트 도구의 공격을 방지하세요
- 일반적인 스캔 해킹 도구, 스캐너를 차단하세요
- 비정상적인 네트워크 요청을 차단합니다
- 이미지 첨부 디렉터리의 PHP 실행 권한을 차단하세요
- 웹셸 업로드를 방지하세요
시스템 버전, 명령어 lsb_release -a
LSB 버전: :core-4.1-amd64:core-4.1-noarch 유통사 ID: CentOS
Description: CentOS Linux release 7.4.1708 (Core)
Release: 7.4.1708
Codename: Core
LuaJIT 버전
LuaJIT-2.0.5는 최신 안정 버전입니다
nginx 버전 (설치 실패, 자세한 내용은 나중에 더 설명)
nginx 1.4.4 버전
먼저, 다음 명령어로 설치 디렉터리 /alidata/server/lj2를 생성합니다:
Lua 환경 설치
--설치가 성공했는지 확인해
--소프트 링크 생성
원래 주문:
/alidata/server/lj2 아래에 lua가 설치되어 있으니, 다음 명령을 실행하세요.위 명령을 실행하지 말고, 다음 명령을 실행하세요:
심볼링크를 생성하지 않으면 다음과 같은 예외가 발생할 수 있습니다: 공유 라이브러리 로드 중 오류: libluajit-5.1.so.2: 공유 객체 파일을 열 수 없음: 그러한 파일이나 디렉터리가 없음
ngx_devel_kit 다운로드하고 압축 해제하세요
프로젝트 홈페이지: https://github.com/simplresty/ngx_devel_kit
ngx_lua 다운로드하고 압축 해제하세요
nginx 재컴파일 및 설치
먼저 이전 ngxin 파일을 백업하세요
저는 이전에 nginx를 설치한 적이 있는데, 다음과 같이 nginx -V 명령을 실행했습니다:
nginx 버전: nginx/1.4.4 GCC 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) 제작 TLS SNI 지원 활성화 인수 구성: --user=www --group=www --prefix=/alidata/server/nginx --with-http_stub_status_module --with-http-cache --with-http_ssl_module --with-http_gzip_static_ 모듈 두 개의 모듈 카탈로그
/root/pack/lua-nginx-module-0.10.13
/root/pack/ngx_devel_kit-0.2.19
nginx 디렉터리에서 다운로드 및 실행
--nginx에게 Luajit의 위치를 알려주는 환경 변수 추가(add environment variable)
추가하지 않으면 nginx가 컴파일 시 다음과 같은 오류를 보고합니다:
./configure: error: ngx_http_lua_module Lua 라이브러리가 필요합니다. 오류가 보고되면 위 두 문장을 실행해 주세요!
엮다
오류: #error 최소 nginx 1.6.0이 필요하지만 이전 버전을 찾았습니다
nginx 버전은 너무 낮고, 최소 요구 사양은 1.6.0이니 nginx 버전을 업그레이드하세요,nginx 버전을 업그레이드할 때는 실제로 lua-nginx-module과 ngx_devel_kit 모듈을 새 버전에 설치할 수 있는데, 자세한 내용은 여기서 다루지 않겠습니다, 새 버전으로 다음 명령을 실행하세요,
ngx_lua_waf 다운로드하고 압축 해제하세요
nginx 구성 파일을 수정하여 실제 상황에 맞게 경로를 변경하세요
nginx.conf의 http 섹션에 추가하세요
일단 추가되면,nginx를 재시작했더니 500 오류가 떴어요마지막으로, 그 이유가 config.lua 파일이 두 곳에서 수정되어야 했기 때문임이 밝혀졌습니다:
RulePath와 logdir를 활용해 자신의 상황에 맞게 수정하세요!
테스트
https://www.itsvse.com/forum.php?id=../etc/passwd
|