split log to init
parent
3af41ccbfd
commit
ecf2e48558
90
waf.lua
90
waf.lua
|
@ -1,92 +1,4 @@
|
||||||
--发送syslog数据函数
|
if ngx.re.match(ngx.var.request_uri,whitelist,"i") then
|
||||||
function syslog(msg)
|
|
||||||
ngx.header.content_type = "text/html"
|
|
||||||
kern = 0
|
|
||||||
user = 1
|
|
||||||
mail = 2
|
|
||||||
daemon = 3
|
|
||||||
auth = 4
|
|
||||||
syslog = 5
|
|
||||||
lpr = 6
|
|
||||||
news = 7
|
|
||||||
uucp = 8
|
|
||||||
cron = 9
|
|
||||||
authpriv = 10
|
|
||||||
ftp = 11
|
|
||||||
local0 = 16
|
|
||||||
local1 = 17
|
|
||||||
local2 = 18
|
|
||||||
local3 = 19
|
|
||||||
local4 = 20
|
|
||||||
local5 = 21
|
|
||||||
local6 = 22
|
|
||||||
local7 = 23
|
|
||||||
|
|
||||||
emerg = 0
|
|
||||||
alert = 1
|
|
||||||
crit = 2
|
|
||||||
err = 3
|
|
||||||
warning = 4
|
|
||||||
notice = 5
|
|
||||||
info = 6
|
|
||||||
debug = 7
|
|
||||||
|
|
||||||
|
|
||||||
local sock = ngx.socket.udp()
|
|
||||||
local ok, err = sock:setpeername('127.0.0.1', 514)
|
|
||||||
--上面的ip和端口就是syslog server的ip和端口地址,可自行修改
|
|
||||||
if not ok then
|
|
||||||
ngx.say("failed to connect to syslog server: ", err)
|
|
||||||
return
|
|
||||||
end
|
|
||||||
level=info
|
|
||||||
facility=daemon
|
|
||||||
sign=level+facility*8
|
|
||||||
ok, err = sock:send('<'..sign..'>'..msg)
|
|
||||||
sock:close()
|
|
||||||
end
|
|
||||||
--日志处理函数
|
|
||||||
function log(method,url,data)
|
|
||||||
|
|
||||||
file=assert(io.open("/data/logs/hack/"..ngx.var.server_name.."_sec.log","a"))
|
|
||||||
if data then
|
|
||||||
if ngx.var.http_user_agent then
|
|
||||||
file:write(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \""..data.."\" \""..ngx.status.."\" \""..ngx.var.http_user_agent.."\"\n")
|
|
||||||
-- syslog(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \""..data.."\" \""..ngx.status.."\" \""..ngx.var.http_user_agent.."\"\n")
|
|
||||||
else
|
|
||||||
file:write(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \""..data.."\" \"-\"\n")
|
|
||||||
-- syslog(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \""..data.."\" \"-\"\n")
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if ngx.var.http_user_agent then
|
|
||||||
file:write(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \"-\" \""..ngx.var.http_user_agent.."\"\n")
|
|
||||||
-- syslog(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \"-\" \""..ngx.var.http_user_agent.."\"\n")
|
|
||||||
else
|
|
||||||
file:write(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \"-\" \"".."-\"\n")
|
|
||||||
-- syslog(ngx.var.remote_addr.." ".." ["..ngx.localtime().."] \""..method.." "..url.."\" \"-\" \"".."-\"\n")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
file:close()
|
|
||||||
end
|
|
||||||
function check()
|
|
||||||
ngx.header.content_type = "text/html"
|
|
||||||
ngx.print("just a joke hehe~ !!")
|
|
||||||
ngx.exit(200)
|
|
||||||
end
|
|
||||||
function read_rule(var)
|
|
||||||
file = io.open("./wafconf/"..var,"r")
|
|
||||||
t = {}
|
|
||||||
for line in file:lines() do
|
|
||||||
table.insert(t,line)
|
|
||||||
end
|
|
||||||
return(table.concat(t,"|"))
|
|
||||||
end
|
|
||||||
regex=read_rule('global')
|
|
||||||
get=read_rule('get')
|
|
||||||
post=read_rule('post')
|
|
||||||
agent=read_rule('user-agent')
|
|
||||||
whitelist=read_rule('whitelist')
|
|
||||||
if ngx.re.match(ngx.var.request_uri,whitelist,"isjo") then
|
|
||||||
return
|
return
|
||||||
elseif ngx.req.get_body_data() and ngx.re.match(ngx.req.get_body_data(),[[^(?!Content-Disposition: form-data;(.*)filename="(.*).(php|jsp|phtml|asp|aspx|cgi)").*$]],"isjo") then
|
elseif ngx.req.get_body_data() and ngx.re.match(ngx.req.get_body_data(),[[^(?!Content-Disposition: form-data;(.*)filename="(.*).(php|jsp|phtml|asp|aspx|cgi)").*$]],"isjo") then
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue