nginx 설정 lua 모듈 과 lua 기반 waf 세 가지 방식

nginx 와 lua 는 모두 성능 을 중시 하고 lua 확장 nginx 를 사용 하여 nginx 의 유연성 을 크게 강화 했다.nginx 지원 lua 는 ngxlua 모듈 은 nginx wiki 에서 openresty 를 추천 합 니 다. 컴 파일 할 때 --with-luajit 인 자 를 추가 하면 됩 니 다. 제 가 사용 하 는 모듈 이 많 지 않 고 경 량 과 고성능 의 tengine 을 좋아 합 니 다. 수 동 컴 파일 을 사용 하 는 것 도 복잡 하지 않 습 니 다.
준비 하 다
서버 환경: centos 6.6 64 비트, tengine 2.1.0, openssl 과 pcre 는 yum 설치 소프트웨어 를 사용 하여 다운로드 합 니 다.
LuaJIT 는 2.1 버 전 을 추천 합 니 다. 2.0 의 소스 코드 에는 2.1 의 가지 가 포함 되 어 있 습 니 다.
 
git clone http://luajit.org/git/luajit-2.0.git

zlib, openssl, pcre 를 설치 하고 게 으 름 피 우 며 yum 설치:
yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel

tengine 와 ngx 다운로드lua_waf:
wget http://tengine.taobao.org/download/tengine-2.1.0.tar.gz
git clone https://github.com/loveshell/ngx_lua_waf

2. LuaJIT 와 tengine 번역
2.1 LuaJIT 2.1 설치
lua 나 luaJIT 는 모두 ngx 를 지원 합 니 다.lua 모듈, lua 버 전 은 최고 5.1 까지 지원 합 니 다. 효율 적 인 고려 에서 luaJIT 를 사용 하 는 것 을 추천 합 니 다. 우리 가 복제 한 luaJIT 버 전 은 2.0 이 고 공식 적 으로 2.1 개발 판 을 사용 하여 2.1 의 분기 로 전환 하 는 것 을 추천 합 니 다.
cd luajit-2.0 && git checkout v2.1

컴 파일:
make
make install PREFIX=/usr/local/luajit

설치 후 루 아 지 트LIB 와 루 아 지 트INC 의 경 로 는 라 이브 러 리 파일 LUAJIT_LIB=/usr/local/luajit/lib 헤더 파일 LUAJIT_INC=/usr/local/luajit/include/luajit-2.1 두 경로 가 tengine 을 컴 파일 할 때 사용 해 야 합 니 다.
2.2 컴 파일 tengine:
 ./configure --prefix=/opt/nginx --with-http_lua_module --with-luajit-lib=/usr/local/luajit/lib/ --with-luajit-inc=/usr/local/luajit/include/luajit-2.1/ --with-ld-opt=-Wl,-rpath,/usr/local/luajit/lib
 
make && make install

테스트: nginx. conf 에 location 추가:
location /lua { 
     default_type 'text/plain'; 
    content_by_lua 'ngx.say("hello, lua")'; 
}

nginx 시작, 접근: http://serverIP/lua , 나타 나 면 hello,lua 설치 에 성공 합 니 다.
3. ngx 설정lua_waf
nginx 에서 흔히 볼 수 있 는 오픈 소스 waf 는 mod 가 있 습 니 다.security、naxsi、ngx_lua_waf 이 세 개, modsecurity 는 가장 오래된 브랜드 로 기능 이 가장 강 한 규칙 은 맞 춤 형 이 강하 지만 설정 이 가장 복잡 하고 높 으 며 병행 할 때 성능 이 떨어진다.naxsi 는 원생 nginx 의 waf 로 성능 은 좋 지만 화이트 리스트 를 기반 으로 설정 도 번 거 롭 습 니 다.ngx_lua_waf 기능 과 규칙 은 이 두 가지 강력 하지 않 지만 성능 이 높 고 용이 성 이 강 하 며 기본적으로 제로 설정 되 어 있 으 며 흔히 볼 수 있 는 공격 유형 은 모두 방어 할 수 있어 비교적 안심 할 수 있 는 선택 입 니 다.설치 ngxlua 후 다운로드 한 ngxlua_waf 를 conf 디 렉 터 리 에 복사 하여 waf 로 이름 을 바 꾸 고 nginx. conf 의 http 세그먼트 에 추가 합 니 다.
lua_package_path "/opt/nginx/conf/waf/?.lua";
lua_shared_dict limit 10m;
init_by_lua_file  /opt/nginxconf/waf/init.lua; 
access_by_lua_file /opt/nginx/conf/waf/waf.lua;

/ opt / nginx / conf / waf 의 config. lua 파일 을 수정 하고 RulePath 와 logdir 를 실제 디 렉 터 리 로 변경 합 니 다.
RulePath = "/opt/nginx/conf/waf/wafconf/"
logdir = "/opt/nginx/logs/waf"   //      nginx     

다른 안전 설정 은 실제 필요 에 따라 열 립 니 다.nginx 설정 및 시작
테스트 규칙 적용 여부:
임의의 파일 읽 기:
curl http://xxxx/test.php?id=../etc/passwd

sql 주입:
curl http://xxxx/test.php?id=1 select * from admin

금지 페이지 로 돌아 가 는 것 은 설정 이 성공 했다 는 것 을 설명 합 니 다.
질문
시작 nginx 오류:
./nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory

컴 파일 시 인자 추가:--with-ld-opt=-Wl,-rpath,/usr/local/luajit/lib 링크 기 에 추가 인 자 를 추가 하고 / usr / local / luajit / lib 를 nginx 의 바 이 너 리 파일 에 추가 하여 시작 할 때 luaJIT 의 동적 링크 라 이브 러 리 를 찾 을 수 없 도록 합 니 다.
참고 문장http://wiki.nginx.org/HttpLuaModulehttp://www.cnblogs.com/ghj1976/p/3535818.htmlhttps://github.com/loveshell/ngx_lua_waf

좋은 웹페이지 즐겨찾기