nginx 설정 lua 모듈 과 lua 기반 waf 세 가지 방식
--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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
EC2의 CoreOS 내에서 실행되는 Docker의 Play 애플리케이션 프로파일 측정EC2에서 CoreOS를 실행하고 거기에서 Docker 컨테이너를 실행하는 경우 JVM의 프로필을 사용하고 싶었습니다. 아무래도 Flight Recorder가 잘 작동하지 않는 것 같아서 EC2의 Docker 환경에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.