您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

Nginx日志安全分析脚本

时间:2020-02-24 11:51:39  来源:  作者:

Nginx日志安全分析脚本

 

 

 

此脚本是参考nmgxy/klionsec修改而来,重新添加了一些特征,只用来临时救急,还是推荐到ELK或者Splunk中分析

Github:https://github.com/al0ne/Nginx_log_check

 

功能

  • 统计Top 20 地址
  • SQL注入分析
  • SQL from查询统计
  • 常见扫描器、黑客工具分析
  • 漏洞利用检测
  • 敏感路径访问
  • Webshell
  • HTTP Tunnel
  • 寻找响应长度的url Top 20
  • 寻找罕见的脚本文件访问
  • 寻找302跳转的脚本文件
  • 二次验证,判断状态吗与url后缀排除静态资源(png/css/js/pdf/jpg等url后缀)

Usage

设置报告保存地址 outfile=/tmp/logs 设置日志分析目录 access_dir=/var/log/nginx/ 设置日志名称 access_log=access chmod u+x ./nginx_check.sh./nginx_check.sh

代码

#!/usr/bin/env bashecho""echo" ========================================================= "echo"         Nginx日志安全分析脚本 V1.0      / "echo" ========================================================= "echo" # 支持Nginx日志分析,攻击告警分析等          "echo" # author:al0ne          "echo" # https://github.com/al0ne          "echo-e"n"#此脚本是参考nmgxy/klionsec修改而来,重新添加了一些特征,只用来临时救急,还是推荐到ELK或者Splunk中分析#功能###统计Top 20 地址###SQL注入分析###SQL注入 FROM查询统计###扫描器/常用黑客工具###漏洞利用检测###敏感路径访问###文件包含攻击###HTTP Tunnel###Webshell###寻找响应长度的url Top 20###寻找罕见的脚本文件访问###寻找302跳转的脚本文件#如果存在多个access文件或者有多个access.x.gz 建议先zcat access*.gz >> access.log文件中#设置分析结果存储目录,结尾不能加/outfile=/tmp/logs#如果目录以存在则清空,未存在则新建目录if[-d$outfile];then rm-rf$outfile/*else mkdir-p$outfilefi#设置nginx日志目录,结尾必须加/access_dir=/var/log/nginx/#设置文件名,如果文件名为access那么匹配的是access*文件access_log=access#判断日志文件是否存在num=$(ls${access_dir}${access_log}* | wc -l)>/dev/null2>&1if[$num-eq0];then echo'日志文件不存在' exit1fiecho-e"n"# 验证操作系统是debian系还是centosOS='None'if[-e"/etc/os-release"];then source/etc/os-release case${ID}in "debian"|"ubuntu"|"devuan")   OS='Debian'   ;; "centos"|"rhel fedora"|"rhel")   OS='Centos'   ;; *) ;; esacfiif[$OS='None'];then ifcommand-vapt-get >/dev/null2>&1;then   OS='Debian' elifcommand-vyum >/dev/null2>&1;then   OS='Centos' else   echo-e"n不支持这个系统n"   echo-e"已退出"   exit1 fifi# 检测ag软件有没有安装ifag-V>/dev/null2>&1;then echo-e"e[00;32msilversearcher-ag已安装 e[00m"else if[$OS='Centos'];then   yum-yinstall the_silver_searcher >/dev/null2>&1 else   apt-get-yinstall silversearcher-ag >/dev/null2>&1 fifi#如果检测别的日志请手动替换偏移,例如awk的$7代表url,$9代表状态码,$10代表长度,本脚本是以nginx日志为基础echo"分析结果日志:${outfile}"echo"Nginx日志目录:${access_dir}"echo"Nginx文件名:${access_log}"echo-e"n"echo-e"e[00;31m[+]TOP 20 IP 地址e[00m"ag-a-o--nofilename'd+.d+.d+.d+'${access_dir}${access_log}* |sort| uniq-c|sort-nr| head-n20|tee-a${outfile}/top20.logecho-e"n"echo-e"e[00;31m[+]SQL注入攻击分析e[00m"#在SQL注入中排除掉了一些扫描css/js/png图片类等无用告警,并且重点筛选状态码200或者500的告警ag-a"xp_cmdshell|%20xor|%20and|%20AND|%20or|%20OR|select%20|%20and%201=1|%20and%201=2|%20from|%27exec|information_schema.tables|load_file|benchmark|substring|table_name|table_schema|%20where%20|%20union%20|%20UNION%20|concat(|concat_ws(|%20group%20|0x5f|0x7e|0x7c|0x27|%20limit|bcurrent_userb|%20LIMIT|version%28|version(|database%28|database(|user%28|user(|%20extractvalue|%updatexml|rand(0)*2|%20group%20by%20x|%20NULL%2C|sqlmap"${access_dir}${access_log}* | ag-v'/w+.(?:js|css|html|jpg|jpeg|png|htm|swf)(?:?| )'|awk'($9==200)||($9==500) {print $0}'>${outfile}/sql.logawk'{print "SQL注入攻击" NR"次"}'${outfile}/sql.log | tail-n1echo"SQL注入 TOP 20 IP地址"ag-o'(?<=:)d+.d+.d+.d+'${outfile}/sql.log |sort| uniq-c|sort-nr| head-n20|tee-a${outfile}/sql_top20.log# 重点关注from查询,是否存在脱裤行为,排除扫描行为echo"SQL注入 FROM 查询"cat${outfile}/sql.log | ag'bfromb'| ag-v'information_schema'>${outfile}/sql_from_query.logawk'{print "SQL注入FROM查询" NR"次"}'${outfile}/sql_from_query.log | tail-n1echo-e"n"echo-e"e[00;31m[+]扫描器scan & 黑客工具e[00m"ag-a"acunetix|by_wvs|nikto|netsparker|HP404|nsfocus|WebCruiser|owasp|nmap|nessus|HEAD /|AppScan|burpsuite|w3af|ZAP|openVAS|.+avij|.+angolin|360webscan|webscan|XSS@HERE|XSS%40HERE|NOSEC.JSky|wwwscan|wscan|antSword|WebVulnScan|WebInspect|ltx71|masscan|Python-requests|Python-urllib|WinHttpRequest"${access_dir}${access_log}* | ag-v'/w+.(?:js|css|jpg|jpeg|png|swf)(?:?| )'|awk'($9==200)||($9==500) {print $0}'>${outfile}/scan.logawk'{print "共检测到扫描攻击" NR"次"}'${outfile}/scan.log | tail-n1echo"扫描工具流量 TOP 20"ag-o'(?<=:)d+.d+.d+.d+'${outfile}/scan.log |sort| uniq-c|sort-nr| head-n20|tee-a${outfile}/scan_top20.logecho-e"n"echo-e"e[00;31m[+]敏感路径访问e[00m"ag-a"/_cat/|/_config/|include=|phpinfo|info.php|/web-console|JMXInvokerServlet|/manager/html|axis2-admin|axis2-web|phpMyAdmin|phpmyadmin|/admin-console|/jmx-console|/console/|.tar.gz|.tar|.tar.xz|.xz|.zip|.rar|.mdb|.inc|.sql|/.configb|.bak|/.svn/|/.git/|.hg|.DS_Store|.htaccess|nginx.conf|.bash_history|/CVS/|.bak|wwwroot|备份|/Web.config|/web.config|/1.txt|/test.txt"${access_dir}${access_log}* |awk'($9==200)||($9==500) {print $0}'>${outfile}/dir.logawk'{print "共检测到针对敏感文件扫描" NR"次"}'${outfile}/dir.log | tail-n1echo"敏感文件访问流量 TOP 20"ag-o'(?<=:)d+.d+.d+.d+'${outfile}/dir.log |sort| uniq-c|sort-nr| head-n20|tee-a${outfile}/dir_top20.logecho-e"n"echo-e"e[00;31m[+]漏洞利用检测e[00m"ag-a"%00|/win.ini|/my.ini|../../|/etc/shadow|%0D%0A|file:/|gopher:/|dict:/|windowsPowerShell|/wls-wsat/|call_user_func_array|uddiexplorer|@DEFAULT_MEMBER_ACCESS|@JAVA.lang.Runtime|OgnlContext|/bin/bash|cmd.exe|wgets|curls|s=/index/think"${access_dir}${access_log}* |awk'($9==200)||($9==500) {print $0}'>${outfile}/exploit.logawk'{print "漏洞利用探测" NR"次"}'${outfile}/exploit.log | tail-n1echo"漏洞利用检测 TOP 20"ag-o'(?<=:)d+.d+.d+.d+'${outfile}/exploit.log |sort| uniq-c|sort-nr| head-n20|tee-a${outfile}/exploit_top20.logecho-e"n"echo-e"e[00;31m[+]webshelle[00m"ag-a"=whoami|dbname=|exec=|cmd=|br57b|bc99b|bc100b|bb374kb|adminer.php|eval(|assert(|%eval|%execute|tunnel.[asp|php|jsp|aspx]{3,4}|makewebtaski|ma.[asp|php|jsp|aspx]{3,4}|bup.[asp|php|jsp|aspx]{3,4}|cmd.[asp|php|jsp|aspx]{3,4}|201d.[asp|php|jsp|aspx]{3,4}|xiaoma.[asp|php|jsp|aspx]{3,4}|shell.[asp|php|jsp|aspx]{3,4}|404.[asp|php|jsp|aspx]{3,4}|tom.[asp|php|jsp|aspx]{3,4}|k8cmd.[asp|php|jsp|aspx]{3,4}|ver[0-9]{3,4}.[asp|php|jsp|aspx]{3,4}|.aar|[asp|php|jsp|aspx]{3,4}spy.|o=vLogin|aIOShell|admine|ghost.[asp|php|jsp|aspx]{3,4}|r00ts|90sec|t00ls|editor.aspx|wso.[asp|aspx]{3,4}"${access_dir}${access_log}* |awk'($9==200)||($9==500) {print $0}'>${outfile}/webshell.logawk'{print "共检测到webshell行为" NR "次"}'${outfile}/webshell.log | tail-n1echo"Webshell TOP 20"ag-o'(?<=:)d+.d+.d+.d+'${outfile}/webshell.log |sort| uniq-c|sort-nr| head-n20|tee-a${outfile}/webshell_top20.logecho-e"n"echo-e"e[00;31m[+]HTTP Tunnele[00m"#Regeorg代理特征ag-a"cmd=disconnect|cmd=read|cmd=forward|cmd=connect|127.0.0.1"${access_dir}${access_log}* |awk'($9==200)||($9==500) {print $0}'|tee-a${outfile}/tunnel.logawk'{print "共检测到隧道行为" NR "次"}'${outfile}/tunnel.log | tail-n1echo-e"n"echo-e"e[00;31m[+]Top 20 url响应长度e[00m"# 查找url响应长度最长的url排序,目的是有没有下载服务器的一些打包文件len=$(cat${access_dir}${access_log}* | awk '{print$10}' | sort -nr | head -n 20)echo$len|awk'BEGIN{ RS=" " }{ print $0 }'| xargs-i{} ag-a--nocolor'd+s{}s'${access_dir}${access_log}* |awk'{print $7,$10}'|sort| uniq |sort-k2-nr|tee-a${outfile}/url_rsp_len.logecho-e"n"echo-e"e[00;31m[+]罕见的脚本文件访问e[00m"echo"访问量特别特别少的脚本文件极有可能是webshell"cat${access_dir}${access_log}* |awk'($9==200)||($9==500) {print $7}'|sort| uniq-c|sort-n| ag-v'?'| ag'.php|.jsp|.asp|.aspx'| head-n20|tee-a${outfile}/rare_url.logecho-e"n"echo-e"e[00;31m[+]302跳转e[00m"echo"此目的是寻找一些登录成功的脚本文件"cat${access_dir}${access_log}* |awk'($9==302)||($9==301) {print $7}'|sort| uniq-c|sort-n| ag-v'?'| ag'.php|.jsp|.asp|.aspx'| head-n20|tee-a${outfile}/302_goto.logecho-e"n"

参考

  • nmgxy
  • klionsec

作者:al0ne

转载自:https://www.secpulse.com/archives/121330.html



Tags:Nginx日志   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
最近客户有个新需求,就是想查看网站的访问情况,由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的页...【详细内容】
2021-10-09  Tags: Nginx日志  点击:(48)  评论:(0)  加入收藏
关于Nginx 日志Nginx 日志分为两种,一种是错误日志(error log),记录 Nginx 运行过程中遇到的异常,一种是访问日志(access log),记录的是 WEB 服务被用户访问时留下的一些信息。例如...【详细内容】
2021-03-04  Tags: Nginx日志  点击:(195)  评论:(0)  加入收藏
由于nginx功能强大,性能突出,越来越多的web应用采用nginx作为http和反向代理的web服务器。而nginx的访问日志不管是做用户行为分析还是安全分析都是非常重要的数据源之一。如...【详细内容】
2020-11-17  Tags: Nginx日志  点击:(116)  评论:(0)  加入收藏
本文以api.mingongge.com.cn域名为测试对象进行统计,日志为crm.mingongge.com.cn和risk.mingongge.com.cn请求之和(此二者域名不具生产换环境统计意义),生产环境请根据具体需...【详细内容】
2020-06-12  Tags: Nginx日志  点击:(57)  评论:(0)  加入收藏
此脚本是参考nmgxy/klionsec修改而来,重新添加了一些特征,只用来临时救急,还是推荐到ELK或者Splunk中分析Github:https://github.com/al0ne/nginx_log_check 功能 统计Top...【详细内容】
2020-02-24  Tags: Nginx日志  点击:(66)  评论:(0)  加入收藏
一:作用Ngx_http_log_module:定义日志格式,并且以指定的格式保存。二:示例配置log_format compression &#39;$remote_addr - $remote_user [$time_local] &#39; &#39;"$request...【详细内容】
2019-10-09  Tags: Nginx日志  点击:(112)  评论:(0)  加入收藏
▌简易百科推荐
阿里云镜像源地址及安装网站地址https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b111kK44P更新源之前把之前的国外的镜像先备份一下 切换到yumcd...【详细内容】
2021-12-27  干程序那些事    Tags:CentOS7镜像   点击:(1)  评论:(0)  加入收藏
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? 如何实现断线后重...【详细内容】
2021-12-24  程序猿阿嘴  CSDN  Tags:Netty   点击:(12)  评论:(0)  加入收藏
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  有云转晴    Tags:chrome   点击:(7)  评论:(0)  加入收藏
一. HTTP gzip压缩,概述 request header中声明Accept-Encoding : gzip,告知服务器客户端接受gzip的数据 response body,同时加入以下header:Content-Encoding: gzip:表明bo...【详细内容】
2021-12-22  java乐园    Tags:gzip压缩   点击:(9)  评论:(0)  加入收藏
yum -y install gcc automake autoconf libtool makeadduser testpasswd testmkdir /tmp/exploitln -s /usr/bin/ping /tmp/exploit/targetexec 3< /tmp/exploit/targetls -...【详细内容】
2021-12-22  SofM    Tags:Centos7   点击:(7)  评论:(0)  加入收藏
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  卷毛琴姨    Tags:云服务器   点击:(6)  评论:(0)  加入收藏
参考资料:Hive3.1.2安装指南_厦大数据库实验室博客Hive学习(一) 安装 环境:CentOS 7 + Hadoop3.2 + Hive3.1 - 一个人、一座城 - 博客园1.安装hive1.1下载地址hive镜像路径 ht...【详细内容】
2021-12-20  zebra-08    Tags:Hive   点击:(9)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  网安人    Tags:服务器   点击:(7)  评论:(0)  加入收藏
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  mdong    Tags:Nginx   点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  LaLiLi    Tags:SSH连接   点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条